示例#1
0
def edit(page = 1):
    """
        进行互评
    """
    log.info("edit")
    user = request.get_cookie('user',secret="chermong")
    user = db.user.find_one({'name':user})
    schoolid,option = request.query.get('schoolid'),request.query.get('option')
    db.assessment.update({'schoolid':user['schoolid'],"pro-others.schoolid":schoolid},{"$set":{"pro-others.$.option":option}})
    pro_others = list(db.assessment.find_one({'schoolid':user['schoolid']},fields = ['pro-others'])['pro-others'])
    options = list(db.options.find())#因为返回的是一个类似的list的cursor,但是它只能循环一次,所以将它转换为list
    
    paginator = Paginator(pro_others,10,0)
    pro_others = paginator.page(page)
    page_range,num_pages = paginator.page_range,paginator.num_pages
    show_firstpage = False if int(page) == 1 else True
    show_lastpage = False if int(page) == num_pages else True
    show_pages = 5 
    if num_pages <= show_pages:#当数量不足时
        newpage_range = page_range
    else:
        newpage_range = list()
        if int(page) + show_pages > num_pages:#用于显示后几位
            for pagenum in range(num_pages - show_pages + 1,num_pages + 1):
                newpage_range.append(pagenum)
        else:
            for pagenum in range(int(page),int(page)+show_pages):
                newpage_range.append(pagenum)
    
    return jinja2_template('edit-assessment.html',user = user,app = chermongapp,
        options = options,pro_others = pro_others,show_firstpage=show_firstpage,
        show_lastpage=show_lastpage,num_pages=num_pages,page_range=newpage_range)
示例#2
0
def manage_user(page = 1):
    """
        查看用户信息
    """
    log.info("manage_user")
    user = request.get_cookie('user',secret="chermong")
    user = db.user.find_one({'name':user})
    users = list(db.user.find())
    paginator = Paginator(users,10,0)
    try:
        users = paginator.page(page)
    except (EmptyPage, InvalidPage):
        users = paginator.page(paginator.num_pages)
    page_range,num_pages = paginator.page_range,paginator.num_pages
    show_firstpage = False if int(page) == 1 else True
    show_lastpage = False if int(page) == num_pages else True
    show_pages = 5
    if num_pages <= show_pages:#当数量不足时
        newpage_range = page_range
    else:
        newpage_range = list()
        if int(page) + show_pages > num_pages:#用于显示后几位
            for pagenum in range(num_pages - show_pages + 1,num_pages + 1):
                newpage_range.append(pagenum)
        else:
            for pagenum in range(int(page),int(page)+show_pages):
                newpage_range.append(pagenum)

    return jinja2_template('manage-user.html',user = user,app = chermongapp,
        users = users,show_firstpage=show_firstpage,show_lastpage=show_lastpage,
        num_pages=num_pages,page_range=newpage_range)
示例#3
0
    def get_results(self, request):
        paginator = Paginator(self.query_set, self.list_per_page)
        # Get the number of objects, with admin filters applied.
        result_count = paginator.count

        # Get the total number of objects, with no admin filters applied.
        # Perform a slight optimization: Check to see whether any filters were
        # given. If not, use paginator.hits to calculate the number of objects,
        # because we've already done paginator.hits and the value is cached.
        if not self.query_set._filtered:
            full_result_count = result_count
        else:
            full_result_count = self.root_query_set.count()

        can_show_all = result_count <= 1000
        multi_page = result_count > self.list_per_page

        # Get the list of objects to display on this page.
        if (self.show_all and can_show_all) or not multi_page:
            result_list = self.query_set.fetch(1000)
        else:
            try:
                result_list = paginator.page(self.page_num+1).object_list
            except:
                raise

        self.result_count = result_count
        self.full_result_count = full_result_count
        self.result_list = result_list
        self.can_show_all = can_show_all
        self.multi_page = multi_page
        self.paginator = paginator
示例#4
0
    def get_results(self, request):
        paginator = Paginator(self.query_set, self.list_per_page)
        # Get the number of objects, with admin filters applied.
        result_count = paginator.count

        # Get the total number of objects, with no admin filters applied.
        # Perform a slight optimization: Check to see whether any filters were
        # given. If not, use paginator.hits to calculate the number of objects,
        # because we've already done paginator.hits and the value is cached.
        if not self.query_set._filtered:
            full_result_count = result_count
        else:
            full_result_count = self.root_query_set.count()

        can_show_all = result_count <= 1000
        multi_page = result_count > self.list_per_page

        # Get the list of objects to display on this page.
        if (self.show_all and can_show_all) or not multi_page:
            result_list = self.query_set.fetch(1000)
        else:
            try:
                result_list = paginator.page(self.page_num + 1).object_list
            except:
                raise

        self.result_count = result_count
        self.full_result_count = full_result_count
        self.result_list = result_list
        self.can_show_all = can_show_all
        self.multi_page = multi_page
        self.paginator = paginator
示例#5
0
def test_first_page_max_five_entries():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row, row])

    page = paginator.get_first_page()

    assert len(page.rows) == 5
示例#6
0
def show_recipes(tag, start='a', page=0, refresh=False):
    recipes = evernote_wrapper.get_recipes(tag, refresh)
    logging.info('%s recipes', len(recipes))
    paginator = Paginator(recipes, 'title', start, int(page), 6)
    tagurl = '/tag/%s/' % tag
    start += '/'
    return render_template('recipes.html', recipes=paginator.page(), tagurl=tagurl, start=start, page=int(page))
示例#7
0
    def show_all(self):
        item_index = None
        while item_index is None:
            channel = self.select_channel("List")
            if channel is not None:
                paginator = Paginator(channel.items)

                while True:
                    # TODO: Replace with cli.py
                    for i, item in enumerate(paginator.get_current_page()):
                        print(
                            f"  {i+paginator.current_min}) {item.title} ({item.enclosure.url}) Downloaded={item.downloaded}"
                        )

                    item_index = input(f"{channel.title}> ")
                    if item_index == "n":
                        self.paginator_next(paginator)
                    elif item_index == "p":
                        self.paginator_prev(paginator)
                    elif item_index == "q":
                        item_index = None
                        break
                    else:
                        print("Invalid Command!")
            else:
                break
示例#8
0
    def get(self, tag_name):
        page = int(self.get_argument('page', 1))
        sql = 'SELECT b.blog_id FROM blogs_tag AS a, blogs_blog_tag AS b WHERE a.name = %s AND a.id = b.tag_id'
        query = self.db.query(sql, (tag_name,))
        blog_ids = ','.join([str(item['blog_id']) for item in query])
        count_sql = "SELECT count(*) FROM blogs_blog where id in (%s)" % blog_ids
        query_sql = "SELECT * FROM blogs_blog where id in (%s) ORDER BY created DESC" % blog_ids
        paginator = Paginator(db=self.db, count_sql=count_sql, query_sql=query_sql, per_page=PAGE_NUM) 
        try:
            blogs = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            blogs = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            blogs = paginator.page(paginator.num_pages)
        

        for item in blogs:
            item['detail_url'] = '/blogs/%s/' % item.id  
            content = util.filter_html(item.content) if item.content else ""
            item['brief'] = content[:100] 

        self.render("blogs/index.html", 
                    blogs=blogs, selected_category=None, selected_tags=[tag_name], 
                    **get_cat_tag(self))
示例#9
0
 def test_get_page_0(self):
     """ """
     paginator = Paginator(["a", "b", "c", "d"], 2)
     page = paginator.get_page()
     items = [item for item in page]
     self.assertEqual(items[0], "a")
     self.assertEqual(items[1], "b")
示例#10
0
def test_jump_to_last_page_if_index_to_high():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row,
                                           row, row, row, row])

    page = paginator.jump_to_page(2)

    assert len(page.rows) == 4
示例#11
0
def test_next_page_contains_four_entries():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row,
                                           row, row, row, row])

    page = paginator.get_next_page()

    assert len(page.rows) == 4
示例#12
0
def test_jump_to_page():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row,
                                           row, row, row, row])

    page = paginator.jump_to_page(0)

    assert len(page.rows) == 5
示例#13
0
def test_include_page_number():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row])

    page = paginator.get_first_page()

    assert page.num == 1
    assert page.total == 1
示例#14
0
文件: vmenu.py 项目: tymiles003/vmenu
def show_tags(start='a', page=0, refresh=False):
    tags = evernote_wrapper.get_tags(refresh)
    paginator = Paginator(tags, 'name', start, int(page), 6)
    start += '/'
    return render_template('tags.html',
                           tags=paginator.page(),
                           tagurl='/',
                           start=start,
                           page=int(page))
示例#15
0
def test_previous_page_stays_at_first_page():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row,
                                           row, row, row, row])

    paginator.get_previous_page()
    page = paginator.get_previous_page()

    assert len(page.rows) == 5
示例#16
0
def test_last_page_contains_single_entry():
    row = ["Paul", "12"]
    last_row = ["Bob", "8"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row, last_row])

    page = paginator.get_last_page()

    assert len(page.rows) == 1
    assert page.rows[0] == [6] + last_row
示例#17
0
def test_index_for_last_page():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row,
                                           row, row, row, row, row])

    page = paginator.get_last_page()

    assert len(page.rows) == 5
    assert page.rows[0][0] == 6
示例#18
0
def test_multiple_rows_have_index():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row])

    page = paginator.get_first_page()

    assert len(page.rows) == 2
    for idx, row in enumerate(page.rows):
        assert row[0] == idx + 1
示例#19
0
文件: vmenu.py 项目: tymiles003/vmenu
def show_recipes(tag, start='a', page=0, refresh=False):
    recipes = evernote_wrapper.get_recipes(tag, refresh)
    logging.info('%s recipes', len(recipes))
    paginator = Paginator(recipes, 'title', start, int(page), 6)
    tagurl = '/tag/%s/' % tag
    start += '/'
    return render_template('recipes.html',
                           recipes=paginator.page(),
                           tagurl=tagurl,
                           start=start,
                           page=int(page))
示例#20
0
def test_next_page_works_twice():
    row = ["Paul", "12"]
    paginator = Paginator(header=[], rows=[row, row, row, row, row,
                                           row, row, row, row, row,
                                           row, row, row, row, row,
                                           row, row, row, row])

    paginator.get_next_page()
    page = paginator.get_next_page()

    assert len(page.rows) == 5
def test_results_sorting(driver):
    driver.maximize_window()
    driver.get("https://shop.by/")
    actions = ActionChains(driver)
    laptops = get_catalog_item(driver, COMPUTERS_MENU_ITEM,
                               LAPTOP_SUBMENU_ITEM)
    actions.move_to_element(laptops).click().perform()
    actions.reset_actions()

    if "noutbuki" not in driver.current_url:
        raise Exception("Redirect to /%s page doesn't happened" % "noutbuki")

    set_price_range(driver, min_price, max_price)
    manufacture_filter = BaseFilterMenu(driver, MANUFACTURE_EXPAND_XPATH)
    manufacture_filter.expand()
    manufacture_filter.click_on_items(MANUFACTORY_LIST)

    time.sleep(COMMON_TIMEOUT)

    display_size_filter = BaseFilterMenu(driver, DISPLAY_SIZE_EXPAND_XPATH)
    display_size_filter.expand()
    display_size_filter.click_on_items(DISPLAY_SIZE_LIST)

    time.sleep(COMMON_TIMEOUT)

    filter_url = driver.current_url
    apply_button = driver.find_element_by_class_name(SHOW_RES_BUTTON)
    apply_button.click()

    if driver.current_url == filter_url:
        raise Exception("Redirect on result page is not happened.")

    sorter = SortMenu(driver, SORTER_XPATH, SORTER_ITEMS)
    sorter.select("price_asc")

    results = Results(driver, RESULTS_XPATH)
    assert results, "Got empty result list"
    print("%s results on the page" % len(results))

    flink = result_item_link(results[0])

    sorter.select("price_desc")
    time.sleep(3)

    paginator = Paginator(driver, PAGINATOR_XPATH)
    paginator.move_to_the_last()

    time.sleep(COMMON_TIMEOUT)

    llink = result_item_link(results[-1])
    print(flink)
    print(llink)
    assert flink == llink, "First item in results sorted by price ascending is not equal " \
                           "to the latest item in results sorted by price descending"
示例#22
0
 def __init__(self, gqlQuery,page_number,per_page, count=None,orphans=0, allow_empty_first_page=True):
     if count is not None:
         #for the list large than 1000, we should pass the count value from the counter outside.
         #as google appengine has the limitation of 1000 records from the GqlQuery.
         self.count_ = count
     else:
         self.count_ = int(gqlQuery.count())
     self.number = page_number
     bottom = (self.number - 1) * per_page
     self.object_list = gqlQuery.fetch(per_page,bottom)
     Paginator.__init__(self, self.object_list, per_page, orphans, allow_empty_first_page)
示例#23
0
def show_entries(view,pagin,page):
	if view =='books':
		entries_all = db_session.query(Book).all()
	else :
		entries_all = db_session.query(Author).all()
	paginator = Paginator(entries_all,pagin)
	try:
		entries = paginator.page(page)
	except PageNotAnInteger:
		entries = paginator.page(1)
	except EmptyPage:
		entries = paginator.page(paginator.num_pages)
	return	render_template('show_entries.html', entries=entries, entries_per_page=pagin,view_mode=view, config=app.config)
示例#24
0
def build_entry_list_pages(env, entries):
    urls = []
    entry_list_tpl = env.get_template("entry-list.html")
    p = Paginator(ENTRIES_PER_PAGE, page_name="index")
    for batch in p.paginate(entries):
        entry_list_html = entry_list_tpl.render(entries=batch, paginator=p, page_name="index")
        filename = "index.html"
        if p.page_num > 1:
            filename = f"index{p.page_num}.html"
        path = join(INDEX_DIR, filename)
        urls.append(build_sitemap_url(path, lastmod=env.globals['last_updated']))
        write(path, entry_list_html)
    return urls
示例#25
0
 async def cmd_id(self, message, args=[]):
     pref = self.prefix_dict.get(str(message.guild.id), None)
     if pref and args:
         if len(args) > 1 and args[0] == 'search':
             pokename = args[1]
             results = self.get_id(pokename, True)
             embeds = []
             for i in range(0, len(results), 10):
                 embed = discord.Embed(title="Search Results", description="\u200B", color=15728640)
                 if results == "\u200B":
                     continue
                 else:
                     for result in results[i:i+10]:
                         embed.add_field(name=result[0], value=f"**ID**: {result[1]}\n**LEVEL**: {result[2]}", inline=False)
                     embeds.append(embed)
             try:
                 base = await message.channel.send(content=None, embed=embeds[0])
                 pager = Paginator(message, base, embeds, self)
                 await pager.run()
             except:
                 await message.channel.send(":cold_sweat: | No results found.")
         else:
             pokename = args[0]
             results = self.get_id(pokename, True)
             embed = discord.Embed(title=pokename.title(), description="\u200B", color=15728640)    
             if results  == "\u200B":
                 await message.channel.send(":cold_sweat: | No results found.")
                 return
             else:        
                 for result in results:
                     embed.add_field(name="**ID**", value=f"{result[1]}", inline=False)
                     embed.add_field(name="**LEVEL**", value=f"{result[2]}", inline=False)
                     embed.add_field(name="-----", value="\u200B", inline=False) 
                 await message.channel.send(content=None, embed=embed)
示例#26
0
 async def cmd_duplicates(self, message, args=[]):
     pokemons = [pokemon.split(' -> ')[0] for pokemon in self.pokelist]
     limit = 2
     if args:
         limit = int(args[0])
     dups = {dup for dup in pokemons if pokemons.count(dup) >= limit}
     if len(dups) == 0:
         await message.channel.send(
             "There is no pokemon with so many duplicates. Try a smaller number."
         )
         return
     dups = list(dups)
     dups = sorted(dups)
     embeds = []
     for i in range(0, len(dups), 10):
         embed = discord.Embed(title="Duplicates",
                               description="\u200B",
                               color=15728640)
         for dup in dups[i:i + 10]:
             results = self.get_id(dup, True)
             data = [
                 f"**ID**: {result[1]}\t**LEVEL**: {result[2]}"
                 for result in results
             ]
             data.append(
                 '-------------------------------------------------')
             embed.add_field(name=f"**{dup}**",
                             value='\n'.join(data),
                             inline=False)
         embed.set_footer(text=f"{(i//10)+1}/{ceil(len(dups)/10)}")
         embeds.append(embed)
     base = await message.channel.send(content=None, embed=embeds[0])
     pager = Paginator(message, base, embeds, self)
     await pager.run()
示例#27
0
def lookup(page = 1):
    """
        显示查看页面
    """
    log.info("lookup")
    user = request.get_cookie('user',secret="chermong")
    user = db.user.find_one({'name':user})
    options = list(db.options.find())
    origi_option = {i.get('option'):0 for i in options}
    students = OrderedDict()#利用OrderedDict实现快速查找
    for i in db.user.find({'role':'student'}):
        user_info = {'name':i.get('name'),'schoolid':i.get('schoolid'),'sex':i.get('sex')}
        user_info.update(origi_option)
        students[i.get('schoolid')] = user_info

    for i in db.assessment.find():
        for j in i.get('pro-others'):
            if j.get('option') in origi_option.keys():
                students[j.get('schoolid')][j.get('option')]+=1

    students = list(students.values())
    #students = [{'name':u'郭猛','schoolid':'101110312','sex':u'男',u'优':14,u'良':12,u'一般':5}]
    #注意:上面注释的写法,eg:u,数字的使用 
    
    paginator = Paginator(students,10,0)
    students = paginator.page(page)
    page_range,num_pages = paginator.page_range,paginator.num_pages
    show_firstpage = False if int(page) == 1 else True
    show_lastpage = False if int(page) == num_pages else True
    show_pages = 5 
    if num_pages <= show_pages:#当数量不足时
        newpage_range = page_range
    else:
        newpage_range = list()
        if int(page) + show_pages > num_pages:#用于显示后几位
            for pagenum in range(num_pages - show_pages + 1,num_pages + 1):
                newpage_range.append(pagenum)
        else:
            for pagenum in range(int(page),int(page)+show_pages):
                newpage_range.append(pagenum)
    
    return jinja2_template('lookup.html',user = user,app = chermongapp,
        options = options,students = students,show_firstpage=show_firstpage,
        show_lastpage=show_lastpage,num_pages=num_pages,page_range=newpage_range)
示例#28
0
 def show_list(self):
   plist = db.GqlQuery("SELECT * FROM Page ORDER BY url ASC")
   for item in plist:
     item.id = item.key().id()
   # paginate
   pg = Paginator(plist, PAGESIZE)
   logging.info(pg)
   pi = self.request.get("pg")
   try:
     pgdata = pg.page(pi)
   except PageNotAnInteger:
     # If page is not an integer, deliver first page.
     pgdata = pg.page(1)
   except EmptyPage:
     # If page is out of range (e.g. 9999), deliver last page of results.
     pgdata = pg.page(pg.num_pages)
   logging.info(pgdata)
   payload = { 'list': pgdata }
   self.respond('page_list.html', payload)
示例#29
0
 async def cmd_legendary(self, message):
     embeds = []
     for i in range(0, len(self.legendaries), 5):
         embed = discord.Embed(title="Legendaries", description="\u200B", color=15728640)
         for legend in self.legendaries[i:i+5]:
             embed.add_field(name=legend, value='\n'.join(self.get_id(legend)), inline=False)
         embeds.append(embed)
     base = await message.channel.send(content=None, embed=embeds[0])
     pager = Paginator(message, base, embeds, self)
     await pager.run()
示例#30
0
    def select_item_indexes(self, channel, purpose):
        items = channel.items
        paginator = Paginator(items)

        # TODO: Can you do this without cont?
        cont = True
        while cont:
            # TODO: Replace with cli.py
            cont = False
            for i, item in enumerate(paginator.get_current_page()):
                print(
                    f"  {i+paginator.current_min}) {item.title} ({item.enclosure.url}) Downloaded={item.downloaded}"
                )

            item_indexes = input(f"Which Items do you want {purpose}? ")
            if item_indexes == "n":
                self.paginator_next(paginator)
            elif item_indexes == "p":
                self.paginator_prev(paginator)
            elif item_indexes == "q":
                item_indexes = None
                break
            else:
                try:
                    item_indexes = list(map(int, item_indexes.split(" ")))
                except ValueError:
                    print("Invalid Input!")
                    cont = True
                    continue

                for i in item_indexes:
                    if i > len(channel.items) or i < 0:
                        print(
                            f"Options must be between {0} and {len(channel.items)-1}"
                        )
                        cont = True
                        break

                if cont:
                    continue

                return item_indexes
示例#31
0
class PaginatorTestCase(unittest.TestCase):
    """Unit tests for our custom paginator."""

    def setUp(self):
        self.paginator = Paginator(range(10), 5)

    def test_small_page_number(self):
        """Numbers less than 1 should be rounded up to 1."""
        page = self.paginator.page(-1)
        self.assertEqual(1, page.number)

    def test_large_page_number(self):
        """Numbers greater than the maximum n should be rounded down to n."""
        page = self.paginator.page(3)
        self.assertEqual(2, page.number)

    def test_invalid_page_number(self):
        """Numbers that can't be converted to integers should default to 1."""
        page = self.paginator.page("Hello!")
        self.assertEqual(1, page.number)
示例#32
0
def test_paginator():

    items = range(1, 491)
    p = Paginator(items, page=1, per_page=20)

    assert p.page == 1
    assert not p.has_prev
    assert p.has_next
    assert p.total_items == 490
    assert p.total_pages == 25
    assert p.next_page_number == 2
    assert list(p.pages) == [1, 2, 3, 4, None, 24, 25]
    assert p.pages_range == (0, 19)

    p.page = 10
    assert p.page == 10
    assert p.has_prev
    assert list(p.pages) == [1, 2, None, 7, 8, 9, 10, 11, 12, 13, None, 24, 25]
    assert list(p) == list(range(181, 201))

    assert Paginator(range(5))
示例#33
0
    def get(self):
        page = int(self.get_argument('page', 1))
        count_sql = "SELECT count(*) FROM blogs_blog"
        query_sql = "SELECT * FROM blogs_blog ORDER BY created DESC"
        paginator = Paginator(db=self.db, count_sql=count_sql, query_sql=query_sql, per_page=PAGE_NUM) 
        try:
            blogs = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            blogs = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            blogs = paginator.page(paginator.num_pages)

        for item in blogs:
            item['detail_url'] = '/blogs/%s/' % item.id  
            content = util.filter_html(item.content) if item.content else ""
            item['brief'] = content[:100] 

        self.render("blogs/index.html", 
                    blogs=blogs, selected_category=None, selected_tags=[], 
                    **get_cat_tag(self))
示例#34
0
    def select_channel(self, purpose):
        channels = list(self.manager.channels.values())
        paginator = Paginator(channels)

        if len(channels) == 0:
            print("No Podcasts Available Yet!")
            return

        while True:
            for i, channel in enumerate(paginator.get_current_page()):
                print(f"{i+paginator.current_min}) {channel.title}")

            # TODO: Replace with cli.py
            channel_index = input(
                f"Which Channel do you want to {purpose} from? ")
            if channel_index == "n":
                self.paginator_next(paginator)
            elif channel_index == "p":
                self.paginator_prev(paginator)
            elif channel_index == "q":
                channel_index = None
                break
            else:
                try:
                    channel_index = int(channel_index)
                except ValueError:
                    print("Invalid Input!")
                    continue

                if channel_index > len(
                        self.manager.channels.keys()) or channel_index < 0:
                    print(
                        f"Option must be between {0} and {len(self.manager.channels.keys())}"
                    )
                    continue

                return self.manager.channels[self.manager.title_to_url[
                    channels[channel_index].title]]
示例#35
0
文件: ext.py 项目: mardix/Mocha
def paginate(iter, **kwargs):
    """
     A wrapper around the Paginator that takes config data
    :param iter: Query object or any iterables
    :param kwargs:
        - page: current page
        - per_page: max number of items per page
        - total: Max number of items. If not provided, it will use the query to count
        - padding: Number of elements of the next page to show
        - callback: a function to callback on each item being iterated.
        - static_query: bool - When True it will return the query as is, without slicing/limit. Usally when using the paginator to just create the pagination.
    :return: Paginator
    """
    kwargs.setdefault("page", int(request.args.get('page', 1)))
    kwargs.setdefault("per_page", int(config("PAGINATION_PER_PAGE", 1)))
    kwargs.setdefault("padding", int(config("PAGINATION_PADDING", 0)))
    return Paginator(iter, **kwargs)
示例#36
0
def terms(request):
    c = get_context(request,
                    css_class='body-glossary',
                    title=_(u'¿Qué significa?'))

    c['query'] = request.GET.get('q', '')
    c['query_string'] = "q=%s&" % (c['query'])
    c['page'] = request.GET.get('page', 1)

    results = Paginator(list(
        GlossaryTerm.objects.search(c['query'], c['LANGUAGE_CODE'])),
                        PAGE_LENGTH,
                        body=6,
                        padding=2)
    c['terms'] = results.page(c['page'])

    return render_response('terms/index.html', c)
示例#37
0
class Commandline:
    def __init__(self, file_name):
        header, rows = read(file_name)
        self.paginator = Paginator(header=header, rows=rows)

    def start(self):
        return self.paginator.get_first_page()

    def execute(self, param):
        command = param.lower()
        if command in commands:
            if command == 'j':
                return self._jump_to_page()
            else:
                return commands[command](self.paginator)
        raise AttributeError("unknown command entered")

    def _jump_to_page(self):
        print("Input page index:")
        user_input = str(input())
        return commands['j'](self.paginator, int(user_input) - 1)
示例#38
0
 def __init__(self, file_name):
     header, rows = read(file_name)
     self.paginator = Paginator(header=header, rows=rows)
示例#39
0
 def __init__(self, gqlQuery,page_number,per_page, orphans=0, allow_empty_first_page=True):
     self.count_ = int(gqlQuery.count()) ##todo:google GqlQuery has 1000 records limit.
     self.number = page_number
     bottom = (self.number - 1) * per_page
     self.object_list = gqlQuery.fetch(per_page,bottom)
     Paginator.__init__(self, self.object_list, per_page, orphans, allow_empty_first_page)
示例#40
0
 def test_next_page(self):
     """ """
     paginator = Paginator(["a", "b", "c", "d"], 2)
     self.assertEqual(paginator.next_page(), 1)
     self.assertEqual(paginator.next_page(1), None)
     self.assertEqual(paginator.next_page(2), None)
示例#41
0
def paginate(objects_list,request):
    paginator = Paginator(objects_list,5)
    page = request.GET.get('page')
    contacts = paginator.page(page)
    return contacts
示例#42
0
def paginate(objects_list, request):
    paginator = Paginator(objects_list, 5)
    page = request.GET.get('page')
    contacts = paginator.page(page)
    return contacts
示例#43
0
 def test_previous_page(self):
     """ """
     paginator = Paginator(["a", "b", "c", "d"], 2)
     self.assertEqual(paginator.previous_page(), None)
     self.assertEqual(paginator.previous_page(1), 0)
示例#44
0
 def test_is_empty(self):
     """ """
     paginator = Paginator([], 2)
     self.assertTrue(paginator.is_empty())
示例#45
0
from paginator import Paginator

from helpers import to_html, br_month_filter

app = Flask(__name__)
app.config.from_object('beerapp.settings')

db = SQLAlchemy(app)
gravatar = Gravatar(app,
                    size=120,
                    rating='x',
                    default='retro',
                    force_default=False,
                    force_lower=False)

paginator = Paginator(app)

from members import Members

members = Members(app)

app.jinja_env.filters['br_month'] = br_month_filter

from posts import BlogPost

from feed_generator import FeedGenerator


def TAGS():
    _TAGS = []
    members_str = open(app.config['MEMBERS_FILE']).read()
示例#46
0
 def paginate(self, **kwargs):
     """Paginate this results.
     Returns an :class:`Paginator` object.
     """
     return Paginator(self, **kwargs)
示例#47
0
 def test_is_not_empty(self):
     """ """
     paginator = Paginator(["a", "b", "c", "d"], 2)
     self.assertTrue(paginator.is_not_empty())
示例#48
0
 def __init__(self, gqlQuery,page_number,per_page, orphans=0, allow_empty_first_page=True):
     self.gqlQuery = gqlQuery
     self.number = page_number
     bottom = (self.number - 1) * per_page
     self.object_list = gqlQuery.fetch(per_page,bottom)
     Paginator.__init__(self, self.object_list, per_page, orphans, allow_empty_first_page)
示例#49
0
    async def shop(self, ctx, *args):
        if len(args) == 0:
            pages = []

            # Getting the items that are in the shop
            shop_items = []
            shop_items = self.stock

            shop_items = sorted(shop_items, key=lambda x: x.name)

            # Putting descriptions together
            n = 5
            strings = []
            string = ''
            page_items = []
            current_page_items = []
            for i, item in enumerate(shop_items):
                current_page_items.append(item)
                string = string + item.get_shop_string()
                if i % n == n - 1:
                    strings.append(string)
                    string = ""
                    page_items.append(current_page_items)
                    current_page_items = []

            if string:
                strings.append(string)
                page_items.append(current_page_items)

            for s in strings:
                if pages == []:
                    h, m, _ = get_time_to_shop_refresh()
                    reset_message = f"*The store will change its stock in {h:02}h {m:02}m*"
                    pages.append(
                        discord.Embed(
                            title='Dyson Centre Store',
                            description=
                            "Yo, welcome kiddos! Come spend your {} **Standard Credits**!\n`dad buy <item> <amount>` to buy items.\n`dad shop <item>` for more info on an item.\n\n"
                            .format(SC_EMOJI) + reset_message,
                            colour=discord.Color.gold()))
                else:
                    pages.append(discord.Embed(colour=discord.Color.gold()))
                pages[-1].add_field(name='Items', value=s, inline=False)

            menu = Paginator(self.bot,
                             ctx,
                             pages,
                             page_items,
                             self,
                             timeout=60)
            await menu.run()

        else:
            item = " ".join(args)
            i = items.get_by_name(item)
            if i is not None:
                if i.can_be_in_shop():  # If has shop_item in data
                    desc = '**COST: {} {}**'.format(SC_EMOJI, i.cost)
                    if not i in self.stock:
                        desc = desc + "\n*Currently not in stock*"
                else:
                    desc = "*Can't be bought in the shop*"
                    if i.has_value():  # If has cost in its data
                        desc = "**Value: {} {}**\n*Can't be bought in the shop*".format(
                            SC_EMOJI, i.cost)
                item_disp = discord.Embed(title=i.emoji + " " + i.name,
                                          description=desc,
                                          colour=discord.Colour.gold())
                item_disp.add_field(name='Description',
                                    value=i.description,
                                    inline=False)
                if i.is_booster():
                    text = "_Each gives a_ {:.1f}%  _bonus to_ **{}**_, up to a maximum of_ {}%.".format(
                        i.boost_bonus * 100, i.boost_category.title(),
                        i.boost_max_bonus * 100)
                    item_disp.add_field(name='Booster',
                                        value=text,
                                        inline=False)

                await ctx.send('', embed=item_disp)
            else:
                await ctx.send(
                    "That item doesn't exist... have you been smoking the devil's lettuce again son?!"
                )
示例#50
0
 def test_get_all(self):
     """ """
     paginator = Paginator(["a", "b", "c", "d"])
     self.assertEquals(paginator.get_all(), ["a", "b", "c", "d"])
示例#51
0
def show_tags(start='a', page=0, refresh=False):
    tags = evernote_wrapper.get_tags(refresh)
    paginator = Paginator(tags, 'name', start, int(page), 6)
    start += '/'
    return render_template('tags.html', tags=paginator.page(), tagurl='/', start=start, page=int(page))
示例#52
0
 def setUp(self):
     self.paginator = Paginator(range(10), 5)
示例#53
0
from paginator import Paginator


from pysql import PySQL

from local_settings import DATABASE



db = PySQL(DATABASE.get('USER'),DATABASE.get('PASSWORD'),DATABASE.get('NAME'),DATABASE.get('HOST'),DATABASE.get('PORT'))


p = Paginator(max_page_size=100,url='http://localhost:8000/users?dir=prev&last_seen=48&page=3&page_size=20',page_number=2,page_size=4,
              last_seen=49,direction='prev')


print (p.get_order_by())

print (p.get_filter_data(),p.page_size)

filter_data={
    "state":{"$in":['closed','open']},
    "operator":{"$sw":"s"},
    #"message":{"$contains":"with"},
    
    #"$or":[{"event_id":3},{"event_id":5}]
    #"$xor":[{"event_id":3},{"event_id":{"$gte":5}},{"event_id":{"$null":False}}]
}


示例#54
0
from flask import Flask, g, render_template, request

from flaskext.gravatar import Gravatar
from flaskext.sqlalchemy import SQLAlchemy
from paginator import Paginator

from helpers import to_html, br_month_filter

app = Flask(__name__)
app.config.from_object('beerapp.settings')

db = SQLAlchemy(app)
gravatar = Gravatar(app,size=75,rating='x',default='retro',force_default=False,force_lower=False)

paginator = Paginator(app)

from members import Members
members = Members(app)

app.jinja_env.filters['br_month'] = br_month_filter

from posts import *

paginator.register('posts', BlogPost.query.count)

from feed_generator import FeedGenerator

@app.route('/')
@to_html('index.html')
def index():