test bkp
This commit is contained in:
1 parent
6ccab0347b
commit
954a2fd6d6
18684 files changed
+601012
-190
No files matched your search
@@ -0,0 +1 @@
|
||||
pip
|
||||
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2007-2012 Christoph Haas <email@christoph-haas.de>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,257 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: paginate
|
||||
Version: 0.5.7
|
||||
Summary: Divides large result sets into pages for easier browsing
|
||||
Home-page: https://github.com/Signum/paginate
|
||||
Author: Christoph Haas
|
||||
Author-email: email@christoph-haas.de
|
||||
License: MIT
|
||||
Keywords: pagination paginate pages
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Framework :: Pyramid
|
||||
Classifier: Framework :: Flask
|
||||
Classifier: Framework :: Pylons
|
||||
Classifier: Framework :: Django
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Provides-Extra: dev
|
||||
Requires-Dist: pytest; extra == "dev"
|
||||
Requires-Dist: tox; extra == "dev"
|
||||
Provides-Extra: lint
|
||||
Requires-Dist: black; extra == "lint"
|
||||
|
||||
What is pagination?
|
||||
---------------------
|
||||
This module helps dividing large lists of items into pages. The user is shown one page at a time and
|
||||
can navigate to other pages. Imagine you are offering a company phonebook and let the user search
|
||||
the entries. If the search result contains 23 entries but you may want to display no more than 10
|
||||
entries at once. The first page contains entries 1-10, the second 11-20 and the third 21-23. See the
|
||||
documentation of the "Page" class for more information.
|
||||
|
||||
How do I use this module?
|
||||
---------------------------
|
||||
The paginate module contains extensive in-line documentation with examples.
|
||||
|
||||
Concerning WebHelpers
|
||||
-----------------------
|
||||
This is a standalone module. Former versions were included in the WebHelpers Python module as
|
||||
webhelpers.paginate and were tightly coupled with the WebHelpers and the Pylons web framework. This
|
||||
version aims to be useful independent of any web framework.
|
||||
|
||||
Subclassing Page()
|
||||
------------------
|
||||
This module supports pagination through list-like objects. To paginate though other types of objects
|
||||
you can subclass the paginate.Page() class and provide a wrapper class that defines how to access
|
||||
elements of that special collection.
|
||||
|
||||
You can find examples in other paginate_* modules like paginate_sqlalchemy. Basically you would have
|
||||
to provide a class that implements the __init__, __getitem__ and __len__ methods.
|
||||
|
||||
It is trivial to make pagination for other datastores like Elasticsearch/Solr extending the base class.
|
||||
|
||||
Example::
|
||||
|
||||
class SqlalchemyOrmWrapper(object):
|
||||
"""Wrapper class to access elements of a collection."""
|
||||
def __init__(self, obj):
|
||||
self.obj = obj
|
||||
|
||||
def __getitem__(self, range):
|
||||
# Return a range of objects of an sqlalchemy.orm.query.Query object
|
||||
return self.obj[range]
|
||||
|
||||
def __len__(self):
|
||||
# Count the number of objects in an sqlalchemy.orm.query.Query object
|
||||
return self.obj.count()
|
||||
|
||||
Then you can create your own Page class that uses the above wrapper class::
|
||||
|
||||
class SqlalchemyOrmPage(paginate.Page):
|
||||
"""A pagination page that deals with SQLAlchemy ORM objects."""
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(SqlalchemyOrmPage, self).__init__(*args, wrapper_class=SqlalchemyOrmWrapper, **kwargs)
|
||||
|
||||
As you can see it does not do much. It basically calls paginate.Page.__init__ and adds
|
||||
wrapper_class=SqlalchemyOrmWrapper as an argument. The paginate.Page instance will use that wrapper
|
||||
class to access the elements.
|
||||
|
||||
|
||||
Generating HTML code for current page
|
||||
-------------------------------------
|
||||
|
||||
Example::
|
||||
|
||||
p = paginate.Page([], page=15, items_per_page=15, item_count=1010)
|
||||
# item_count is optional, but we pass a dummy empty resultset for this example
|
||||
pattern = '$link_first $link_previous ~4~ $link_next $link_last (Page $page our of $page_count - total $item_count)'
|
||||
p.pager(pattern, url='http://foo.com?x=$page', dotdot_attr={'x':5}, link_attr={'y':6}, curpage_attr={'z':77})
|
||||
# *_attr arguments are optional and can be used to attach additional classes/attrs to tags
|
||||
|
||||
|
||||
Results in::
|
||||
|
||||
'<a class="L" href="URL?x=1"><<</a> <a class="L" href="URL?x=14"><</a> <a class="L" href="URL?x=1">1</a> <span class="D">..</span> <a class="L" href="URL?x=11">11</a> <a class="L" href="URL?x=12">12</a> <a class="L" href="URL?x=13">13</a> <a class="L" href="URL?x=14">14</a> <span class="C">15</span> <a class="L" href="URL?x=16">16</a> <a class="L" href="URL?x=17">17</a> <a class="L" href="URL?x=18">18</a> <a class="L" href="URL?x=19">19</a> <span class="D">..</span> <a class="L" href="URL?x=68">68</a> <a class="L" href="URL?x=16">></a> <a class="L" href="URL?x=68">>></a> (Page 15 our of 68 - total items 1010)'
|
||||
|
||||
Using url maker to generate links to specific result ranges
|
||||
-----------------------------------------------------------
|
||||
|
||||
You can pass `url_maker` Callback to generate the URL of other pages, given its numbers.
|
||||
Must accept one int parameter and return a URI string.
|
||||
|
||||
Example::
|
||||
|
||||
def url_maker(page_number):
|
||||
return str('foo/%s' % page_number)
|
||||
page = paginate.Page(range(100), page=1, url_maker=url_maker)
|
||||
eq_(page.pager(), '1 <a href="foo/2">2</a> <a href="foo/3">3</a> .. <a href="foo/5">5</a>')
|
||||
|
||||
|
||||
|
||||
Alternatively if you will not pass the link builder function, the pager() method can also accept `url` argument that contains URL that page links will point to.
|
||||
Make sure it contains the string $page which will be replaced by the actual page number.
|
||||
Must be given unless a url_maker is specified to __init__, in which case this parameter is ignored.
|
||||
|
||||
Using link information for custom paginator templates
|
||||
-----------------------------------------------------
|
||||
|
||||
If you do not like the default HTML format produced by paginator you can use link_map() function to generate
|
||||
a dictionary of links you can use in your own template.
|
||||
|
||||
Example::
|
||||
|
||||
p.link_map('$link_first $link_previous ~4~ $link_next $link_last (Page $page our of $page_count - total items $item_count)',url='URL?x=$page',dotdot_attr={'class':'D'}, link_attr={'class':"L"}, curpage_attr={'class':"C"})
|
||||
|
||||
Returns something like::
|
||||
|
||||
{'current_page': {'attrs': {'class': 'C'}, 'href': 'URL?x=15', 'value': 15},
|
||||
'first_page': {'attrs': {'class': 'L'}, 'href': 'URL?x=1', 'type': 'first_page', 'value': 1},
|
||||
'last_page': {'attrs': {'class': 'L'}, 'href': 'URL?x=68', 'type': 'last_page', 'value': 68},
|
||||
'next_page': {'attrs': {'class': 'L'}, 'href': 'URL?x=16', 'type': 'next_page', 'value': 16},
|
||||
'previous_page': {'attrs': {'class': 'L'}, 'href': 'URL?x=14', 'type': 'previous_page', 'value': 14},
|
||||
'range_pages': [{'attrs': {'class': 'D'}, 'href': '', 'type': 'span', 'value': '..'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=11', 'type': 'page', 'value': '11'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=12', 'type': 'page', 'value': '12'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=13', 'type': 'page', 'value': '13'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=14', 'type': 'page', 'value': '14'},
|
||||
{'attrs': {'class': 'C'}, 'href': 'URL?x=15', 'type': 'current_page', 'value': 15},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=16', 'type': 'page', 'value': '16'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=17', 'type': 'page', 'value': '17'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=18', 'type': 'page', 'value': '18'},
|
||||
{'attrs': {'class': 'L'}, 'href': 'URL?x=19', 'type': 'page', 'value': '19'},
|
||||
{'attrs': {'class': 'D'}, 'href': '', 'type': 'span', 'value': '..'}],
|
||||
'radius': 4}
|
||||
|
||||
|
||||
Using link_tag callable to generate custom link markup
|
||||
------------------------------------------------------
|
||||
|
||||
In case you want to generate custom link markup for your project - for example for use with bootstrap,
|
||||
`pager()` accepts `link_tag` argument that expects a callable that can be used to easily override the way links are
|
||||
generated.
|
||||
|
||||
|
||||
Example::
|
||||
|
||||
from paginate import Page, make_html_tag
|
||||
|
||||
def paginate_link_tag(item):
|
||||
"""
|
||||
Create an A-HREF tag that points to another page usable in paginate.
|
||||
"""
|
||||
a_tag = Page.default_link_tag(item)
|
||||
if item['type'] == 'current_page':
|
||||
return make_html_tag('li', a_tag, **{'class':'active'})
|
||||
return make_html_tag('li', a_tag)
|
||||
|
||||
paginator.pager(
|
||||
curpage_attr={'class':'current_page'},
|
||||
dotdot_attr={'class':'spacer'},
|
||||
symbol_first='<i class="fa fa-chevron-circle-left"></i>',
|
||||
symbol_last='<i class="fa fa-chevron-circle-right"></i>',
|
||||
symbol_previous='<i class="fa fa-chevron-left"></i>',
|
||||
symbol_next='<i class="fa fa-chevron-right"></i>',
|
||||
link_tag=paginate_link_tag)
|
||||
|
||||
|
||||
|
||||
Version 0.5.6 - 2016-11-22
|
||||
--------------------------
|
||||
Changes:
|
||||
- Fixed metadata for pypi
|
||||
|
||||
Version 0.5.5 - 2016-11-22
|
||||
--------------------------
|
||||
Changes:
|
||||
- Python 2.7/3.4+ compatibility improvements
|
||||
|
||||
Version 0.5.4 - 2016-04-25
|
||||
--------------------------
|
||||
Changes:
|
||||
- Added radius size config option
|
||||
|
||||
|
||||
Version 0.5.3 - 2016-03-09
|
||||
--------------------------
|
||||
Changes:
|
||||
- Unocode related fixes
|
||||
|
||||
Version 0.5.2 - 2015-08-29
|
||||
--------------------------
|
||||
Changes:
|
||||
- Handle the slice prior to handling the length - for better experience with
|
||||
various databases that include item count in results
|
||||
- bugfixes
|
||||
|
||||
Version 0.5.1 - 2015-10-22
|
||||
--------------------------
|
||||
Changes:
|
||||
- bugfixes
|
||||
|
||||
|
||||
Version 0.5.0 - 2015-08-29
|
||||
--------------------------
|
||||
Changes:
|
||||
- link_tag callable can now be passed to generate custom link markup
|
||||
- page object now has link_map() method that returns a mapping of information useful for generating
|
||||
custom markup based on paginator data
|
||||
|
||||
Version 0.4.0 - 2012-12-06
|
||||
--------------------------
|
||||
Paginate has prior been maintained as webhelpers.paginate in the _webhelpers_ packages.
|
||||
This version is a standalone version that should be useful outside of the webhelpers'
|
||||
context.
|
||||
|
||||
Changes:
|
||||
- Python 3 compatibility.
|
||||
- SQLAlchemyObject and SQLAlchemyQuery collections are not automatically detected any more.
|
||||
Instead you can use the respective Page class from the paginate_sqlalchemy module also
|
||||
available on PyPi.
|
||||
- presliced_list parameter no longer supported
|
||||
- 'page_nr' and 'current_page' had been deprecated already and are now removed. Please use 'page'
|
||||
instead.
|
||||
- No automatic URL generation. You need to pass a 'url' argument to the Page.pager() method
|
||||
containing a $page placeholder where you want the page number to be put in. Beware that the URL
|
||||
is not quote-escaped any further.
|
||||
- The Page.pager() does not automatically add CSS classes any more. If you want the old
|
||||
behavior you need to pass these parameters explicitly:
|
||||
link_attr={'class':'pager_link'}
|
||||
curpage_attr={'class':'pager_curpage'}
|
||||
dotdot_attr={'class':'pager_dotdot'}
|
||||
- The partial_param parameter from Page.pager() is gone. You should use your own URLs for
|
||||
AJAX/partial updates in the 'url' parameter.
|
||||
- The page_param parameter from Page.pager() is also gone as URL generation has been severely
|
||||
simplified.
|
||||
- The string returned from Page.pager() consists of escaped HTML already. So you need to tell
|
||||
your web framework to use the string verbatim and without further escaping.
|
||||
The parameters symbol_first, symbol_last, symbol_previous and symbol_next use
|
||||
< and > instead of "<" and ">" now.
|
||||
- Page.__repr__ now returns a brief representation. E.g. <paginate.Page: 1 of 1>
|
||||
Page.__str__ returns the verbose view you may be used to.
|
||||
|
||||
Version 0.3.2 - 2008-01-31
|
||||
--------------------------
|
||||
Public release on PyPi
|
||||
@@ -0,0 +1,10 @@
|
||||
paginate-0.5.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
paginate-0.5.7.dist-info/LICENSE,sha256=NS5bJ2ki8uNikxu-0tzS6UMxpFtqQaG0ZagwCt3MFVM,1089
|
||||
paginate-0.5.7.dist-info/METADATA,sha256=IXhPrBnV1Vh-U1NFr1wC8JOmsc1AZmZJhgf6tpRAIzw,11403
|
||||
paginate-0.5.7.dist-info/RECORD,,
|
||||
paginate-0.5.7.dist-info/WHEEL,sha256=GUeE9LxUgRABPG7YM0jCNs9cBsAIx0YAkzCB88PMLgc,109
|
||||
paginate-0.5.7.dist-info/top_level.txt,sha256=V11BSlhXV51xs_pyEUTJlxmHjRaF4J63Mz8c4_cVBjI,9
|
||||
paginate/__init__.py,sha256=S5VN_fIJSP_sp6FS8p1ZWJN_4jxjBBEBIKKX_zmo5qM,31945
|
||||
paginate/__pycache__/__init__.cpython-312.pyc,,
|
||||
paginate/__pycache__/ext_reverse.cpython-312.pyc,,
|
||||
paginate/ext_reverse.py,sha256=rdxUjUblCqsbdjk1LynStRzG6RTxn1H1_Z5UVhMjnx4,413
|
||||
@@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (73.0.1)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
paginate
|
||||
Reference in new issue
Block a user