def test_get_pages(self):
        # Test if function returns the correct number of pages #

        self.assertEqual(get_pages(20, 5), 4)
        self.assertEqual(get_pages(21, 5), 5)
        self.assertEqual(get_pages(19, 4), 5)
        assert type(get_pages(19, 4)) is int
Ejemplo n.º 2
0
def stop(request, *args, **kwargs):
    if not request.session.get('is_login', False) or request.session['user_type'] != 'accounts':
        return redirect("/index")
    error_msg = ''
    project_id = utils.get_id(args)
    page = utils.get_page(args)
    if request.method == "GET":
        for id, item in utils.get_projects(request.session['account']):
            if id == project_id:
                project_info = item
        return render(request, "user_projectstop.html", {"project_info":project_info, "project_id":project_id, "page":page , "error_msg": error_msg})
    if request.method == "POST":
        data = {
            "name": request.POST.get("name"),
            "leader": request.POST.get("leader"),
            "teammates": request.POST.get("teammates"),
            "start": request.POST.get("start"),
            "cost": request.POST.get("cost"),
        }
        if int(data['cost']) < 0:
            data['cost'] = '0'
        if not error_msg:
            error_msg = "项目申停成功"
            _projects_dict = utils.get_projects(request.session['account'])
            page_list = utils.get_pages(page, _projects_dict)
            projects_dict, page, project_id = utils.adjust_info(_projects_dict, page, project_id)
            steps = utils.get_steps(project_id)
            step_path = utils.steps_path(utils.get_eva_info(project_id, top=True))
            return render(request, "user_projectprocess.html",
                          {"projects_dict": projects_dict, "project_id": project_id,
                           "steps": steps, "step_path": step_path, "page_list": page_list, "page": page,
                           'error_msg': error_msg})
Ejemplo n.º 3
0
def summary(request, *args, **kwargs):
    if not request.session.get(
            'is_login', False) or request.session['user_type'] != 'admin':
        return redirect("/index")
    error_msg = ''
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_all_projects()
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(
        _projects_dict, page, 1)
    if request.method == 'GET':
        return render(request, 'admin_projectsum.html', {
            'projects_dict': projects_dict,
            "page_list": page_list,
            "page": page
        })
    if request.method == "POST":
        if request.POST.get("edit"):
            project_id = int(request.POST.get("edit"))
            for key, data in projects_dict:
                if key == project_id:
                    project_data = data
            return render(
                request, 'admin_edit.html', {
                    "project_id": project_id,
                    "project_data": project_data,
                    "error_msg": error_msg,
                    "page": page,
                })
Ejemplo n.º 4
0
def edit(request, *args, **kwargs):
    if not request.session.get(
            'is_login',
            False) or request.session['user_type'] != 'information':
        return redirect("/index")
    error_msg = ''
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_all_projects()
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(
        _projects_dict, page, 1)
    if request.method == 'POST':
        project_id = int(request.POST.get("project_id"))
        for key, data in projects_dict:
            if key == project_id:
                project_data = data
        data = {
            "name":
            request.POST.get('name'),
            "leader":
            request.POST.get("leader").strip(),
            "teammates":
            request.POST.get("teammates").strip().split(',')
            if request.POST.get("teammates") else None,
            "start":
            request.POST.get("start").strip(),
            "status":
            request.POST.get("status").strip(),
            "process":
            request.POST.get("process").strip(),
            "budget":
            int(request.POST.get("budget").strip()),
            "real":
            int(request.POST.get("real").strip()),
        }
        data, error_msg = utils.check_error(data, budget=False)
        if error_msg:
            return render(
                request, 'Administrators_edit.html', {
                    "project_id": project_id,
                    "project_data": project_data,
                    "error_msg": error_msg,
                    "page": page,
                })
        if request.POST.get('pass'):
            # 立项审核通过
            data['status'] = "审核中..."
            data['left'] = data['budget'] - data['real']
        elif request.POST.get('reject'):
            # 立项审核未通过
            data['status'] = "未通过"
        elif request.POST.get('edit'):
            data['left'] = data['budget'] - data['real']
        with open("database/projects.pk", 'rb') as f:
            _projects_dict = pickle.load(f)
        for _key in data.keys():
            _projects_dict[project_id][_key] = data[_key]
        with open("database/projects.pk", 'wb') as f:
            f.write(pickle.dumps(_projects_dict))
        return redirect("/info/summary&page=%d" % page)
Ejemplo n.º 5
0
def initialize(args, request, is_pass=False):
    error_msg = ''
    project_id = utils.get_id(args)
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_projects(request.session['account'], is_pass)
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(_projects_dict, page, project_id)
    return error_msg, page, page_list, projects_dict, project_id
Ejemplo n.º 6
0
    def get(self, PAGE_RE):
        username = self.get_username()
        login = True if username else False

        pages = utils.get_pages(PAGE_RE)
        self.render('/templates/historypage.html',
                    login=login,
                    username=username,
                    pages=pages)
Ejemplo n.º 7
0
def summary(request, *args, **kwargs):
    if not request.session.get('is_login', False) or request.session['user_type'] != 'finance':
        return redirect("/index")
    error_msg = ''
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_all_projects()
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(_projects_dict, page, 1)
    if request.method == 'GET':
        return render(request, 'financeoff_projectsum.html',
                      {'projects_dict':projects_dict, "page_list":page_list, "page":page})
Ejemplo n.º 8
0
def initialize(args, request, is_pass=False):
    error_msg = ''
    project_id = utils.get_id(args)
    page = utils.get_page(args)  # 获取当前页面
    if is_pass:
        _projects_dict = utils.get_pass_projects()
    else:
        _projects_dict = utils.get_all_projects()
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(_projects_dict, page, project_id)
    return error_msg, page, page_list, projects_dict, project_id
Ejemplo n.º 9
0
 async def ranking(ctx):
     ranking = get_activity_ranking(ctx.guild.id)
     string = ""
     for i, (user, time) in enumerate(ranking):
         tier = get_tier(i)
         if tier not in string:
             string += f"**{tier}:**\n"
         name = user.split("#")[0]
         string += f"{name}: {pretty_time_delta(time)}\n"
     if string == "":
         string = "Todavía no hay un ranking."
     lines_per_page = 17
     pages = get_pages(string, lines_per_page)
     embeds = [discord.Embed().add_field(name="Ranking", value=page)
               for page in pages]
     paginator = Pagination.CustomEmbedPaginator(ctx, auto_footer=True)
     paginator.add_reaction('⏪', "back")
     paginator.add_reaction('⏩', "next")
     await paginator.run(embeds)
Ejemplo n.º 10
0
    def add_pics(self, count=1):
        supported_ext = ['png', 'jpg', 'jpeg']
        for i in range(count):
            tmp = utils.get_pages(start_url, params={'page': self.cur_page})
            for item in tmp:
                url = item['data-large-file-url']
                if item['data-file-ext'] not in supported_ext:
                    # print(f"File is not supported. | {item['data-file-ext']}")
                    continue
                pic_name = utils.get_name(url)
                if pic_name not in self.names.keys():
                    self.names[pic_name] = len(self.names)
                    queue.append({
                        "img_url": url,
                        # "img_orig": utils.get_page(url),
                        "img_orig": None,
                        "page": self.cur_page,
                        "num": self.names[pic_name],
                        "name": pic_name,
                        "tags": item['data-tags'],

                    })
            self.cur_page = self.cur_page + 1
Ejemplo n.º 11
0
def user_edit(request, *args, **kwargs):
    if not request.session.get('is_login', False) or request.session['user_type'] != 'accounts':
        return redirect("/index")
    error_msg = ''
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_projects(request.session['account'])
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(_projects_dict, page, 1)
    if request.method == 'POST':
        project_id = int(request.POST.get("project_id"))
        for key, data in projects_dict:
            if key == project_id:
                project_data = data
        data = {
            "name": request.POST.get("name").strip(),
            "leader": request.POST.get("leader").strip(),
            "teammates": request.POST.get("teammates").strip().split(',') if request.POST.get("teammates") else None
        }
        data, error_msg = utils.check_error(data, budget=False)
        if error_msg:
            return render(request, 'user_edit.html', {
                "project_id": project_id,
                "project_data": project_data, "error_msg": error_msg, "page": page,
            })
        else:
            if request.FILES.get('file'):
                utils.save_file(id, request, save_name="applyingFile", new=True)
            project_data['name'] = data['name']
            project_data['leader'] = data['leader']
            project_data['teammates'] = data['teammates']
            with open("database/projects.pk", 'rb') as f:
                _projects_dict = pickle.load(f)
            _projects_dict[project_id] = project_data
            with open("database/projects.pk", 'wb') as f:
                f.write(pickle.dumps(_projects_dict))
            return redirect("/account/summary&page=%d" % page)
Ejemplo n.º 12
0
import sys
import os
import logging

import utils

priority = "priority"
page_owners = "owners"

if __name__ == "__main__":
    logging.basicConfig(filename=utils.get_logfile(), level=utils.log_level)
    utils.log_intro(__file__)

    base_req = "{}/events?fields=place,description,end_time,event_times,id,interested_count,maybe_count,start_time,attending_count,name&time_filter=upcoming&include_cancelled=false"
    graph = utils.get_facebook_graph()
    pages = utils.get_pages()

    all_events = {}

    for page in pages:
        page_priority = pages[page]
        discovery_req = base_req.format(page)
        event_list = graph.get_object(discovery_req)
        while True:
            for event in event_list["data"]:
                ev_id = event['id']
                owners_list = [page]
                new_priority = page_priority
                if ev_id in all_events:
                    logging.debug(
                        "Event id {} has multiple owners. Combining information"
Ejemplo n.º 13
0
import re
import psycopg2
import utils
import time
import random
from lxml import html

ppdai_username,session_requests = utils.login()
pages_count = utils.get_pages(session_requests,"http://www.ppdai.com/moneyhistory?Type=3&Time=180")
print(pages_count)

conn = psycopg2.connect("dbname=test user=test password=test port=5434 host=127.0.0.1")
pg_cursor = conn.cursor()

def get_url(page_count):
    return "http://www.ppdai.com/moneyhistory?Type=3&Time=180&page={}".format(page_count)

def get_my_biddings(url):
    print("processing {} page of ".format(url))
    result = session_requests.get(url)
    tree = html.fromstring(result.text)
    trs = tree.xpath("//table/tr")[1:]
    for tr in trs:
        tds = tr.xpath(".//td")
        if len(tds) > 0:
            td_time = tds[0].text.replace(",","")
            td_money = tds[2].text.replace(",", "")
            money = int(re.compile("\d+").findall(td_money)[0])
            td_bidding_id = tds[5].find("./a").attrib["href"]
            bidding_id=re.compile("\d+").findall(td_bidding_id)[0]
            result = [td_time,money,bidding_id]
def recipes(username):

    # Get All Recipes
    recipes = mongo.db.recipes
    all_recipes = recipes.find().sort("_id", 1)
    recipe_list = list(all_recipes)

    # Pagination Settings
    offset = 0
    limit = int(request.args.get('limit'))

    #Get Count
    count = len(recipe_list)

    #Get Pages And Generate URL List
    pages = get_pages(count, limit)
    url_list = generate_pagination_links(offset, limit, pages, 'recipes',
                                         'null', username)

    #Get _id of Last Item on a Page
    starting_position = request.args.get('offset')
    last_id = recipe_list[int(starting_position)]['_id']

    #Sort Tables
    sort_default = recipes.find({
        '_id': {
            '$gte': last_id
        }
    }).sort([("_id", 1)]).limit(limit)
    sort_country = recipes.find({
        '_id': {
            '$gte': last_id
        }
    }).sort([("country", 1), ("name", 1)]).limit(limit)
    sort_name = recipes.find({
        '_id': {
            '$gte': last_id
        }
    }).sort([("name", 1)]).limit(limit)
    sort_upvotes = recipes.find({
        '_id': {
            '$gte': last_id
        }
    }).sort([("upvotes", pymongo.DESCENDING), ("name", 1)]).limit(limit)
    sort_downvotes = recipes.find({
        '_id': {
            '$gte': last_id
        }
    }).sort([("downvotes", pymongo.DESCENDING), ("name", 1)]).limit(limit)
    sort_author = recipes.find({
        '_id': {
            '$gte': last_id
        }
    }).sort([("author", 1), ("name", 1)]).limit(limit)

    return render_template("recipes.html",
                           author=sort_author,
                           default=sort_default,
                           name=sort_name,
                           upvotes=sort_upvotes,
                           downvotes=sort_downvotes,
                           country=sort_country,
                           url_list=url_list,
                           pages=pages,
                           username=username)
def results(username, search):

    # Get All Recipes
    recipes = mongo.db.recipes
    found_recipes = recipes.find({"$text": {"$search": str(search)}})

    # Pagination Settings
    limit = int(request.args.get('limit'))
    offset = 0

    #Get Count
    count_list = []
    for doc in found_recipes:
        count_list.append(doc)
        count = len(count_list)

    #If No Results Found
    if len(count_list) < 1 or not search:
        return render_template('noresults.html', username=username)

    #Get Pages And Generate URL List
    pages = get_pages(count, limit)
    url_list = generate_pagination_links(offset, limit, pages, 'search',
                                         search, username)

    #Get _id of Last Item on a Page
    dynamic_position = request.args.get('offset')
    starting_id = recipes.find({"$text": {"$search": str(search)}}).sort('_id')
    last_id = starting_id[int(dynamic_position)]['_id']

    #Sort Tables
    sort_default = recipes.find({
        "$and": [{
            '_id': {
                '$gte': last_id
            }
        }, {
            "$text": {
                "$search": str(search)
            }
        }]
    }).sort([('_id', pymongo.DESCENDING)]).limit(limit)
    sort_country = recipes.find({
        "$and": [{
            '_id': {
                '$gte': last_id
            }
        }, {
            "$text": {
                "$search": str(search)
            }
        }]
    }).sort([("country", 1), ("name", 1)]).limit(limit)
    sort_name = recipes.find({
        "$and": [{
            '_id': {
                '$gte': last_id
            }
        }, {
            "$text": {
                "$search": str(search)
            }
        }]
    }).sort([("name", 1)]).limit(limit)
    sort_upvotes = recipes.find({
        "$and": [{
            '_id': {
                '$gte': last_id
            }
        }, {
            "$text": {
                "$search": str(search)
            }
        }]
    }).sort([("upvotes", pymongo.DESCENDING), ("name", 1)]).limit(limit)
    sort_downvotes = recipes.find({
        "$and": [{
            '_id': {
                '$gte': last_id
            }
        }, {
            "$text": {
                "$search": str(search)
            }
        }]
    }).sort([("downvotes", pymongo.DESCENDING), ("name", 1)]).limit(limit)
    sort_author = recipes.find({
        "$and": [{
            '_id': {
                '$gte': last_id
            }
        }, {
            "$text": {
                "$search": str(search)
            }
        }]
    }).sort([("author", 1), ("name", 1)]).limit(limit)

    return render_template("results.html",
                           default=sort_default,
                           count=count,
                           url_list=url_list,
                           pages=pages,
                           search=search,
                           country=sort_country,
                           name=sort_name,
                           upvotes=sort_upvotes,
                           downvotes=sort_downvotes,
                           author=sort_author,
                           username=username)
Ejemplo n.º 16
0
def display_pages():
    """ Show options of all the pages a user manages
    """
    pages = utils.get_pages(g.graph)
    return render_template('display.html', app_id=FB_APP_ID,app_name=FB_APP_NAME, user=g.user, pages = pages)
Ejemplo n.º 17
0
            td_money = tds[1].text.replace(",","")
            money = [float(x) for x in (re.compile("[0-9.]+").findall(td_money))]
            #print(td_money,money)
            td_delay_days=tds[3].text.replace(",","")
            delay_days = [int(x) for x in (re.compile("\d+").findall(td_delay_days))]
            #print(td_delay_days,delay_days)
            bidding_id = tds[0].findall("./span")[1].attrib["listingid"]
            #print(bidding_id)
            yield [bidding_id]+money+delay_days


def get_page_url(pagecount):
    return "http://invest.ppdai.com/account/blacklist?PageIndex={}&IsCalendarRequest=0".format(pagecount)


pages_count = utils.get_pages(session_requests,"http://invest.ppdai.com/account/blacklist")
pg_cursor.execute("delete from ppdai_blacklist where user_name=''".format(ppdai_username))
for x in range(pages_count):
    url = get_page_url(x+1)
    for row in get_delayed_bidding(url):
        print(row)
        row.insert(0, ppdai_username)
        row_tuple = tuple(row)
        sql = """insert into ppdai_blacklist (user_name,bidding_id,overdue,returned,total,overdue_days,max_overdue_days)
         values ({},{},{},{},{},{},{})""".format(*row_tuple)
        print(sql)
        pg_cursor.execute(sql)

conn.commit()
conn.close()
Ejemplo n.º 18
0
def show_threads(board):
    urls = get_thread_urls(get_pages(board))
    if urls is not None:
        return render_template('home.html', urls=urls, board=board)
    else:
        return render_template('404.html', board=board)