예제 #1
0
def sign_up():
    data = {
        'username': request.form.get("username"),
        'password': request.form.get("password"),
        'email': request.form.get("email")
    }

    aids = db.select(conn, 'account', ['aid'], dict())
    aids = set([t['aid'] for t in aids])
    data['aid'] = ''.join(random.choice(letters + numbers) for j in range(10))
    while data['aid'] in aids:
        data['aid'] = ''.join(
            random.choice(letters + numbers) for j in range(10))

    res = db.insert(conn, 'account', data)
    if res is True:
        sids = db.select(conn, "stocks", "*", dict())
        random.seed(time.time())
        rec_stk = random.sample(sids, 10)
        for stk in rec_stk:
            db.insert(conn, "rec_stk", {'aid': data['aid'], 'sid': stk['sid']})
        resp = make_response(redirect(url_for("homepage.all_records")))
        resp.set_cookie('aid', data['aid'])
        return resp
    else:
        return render_template('/login/SignUp.html',
                               msg="name or email duplicate")
예제 #2
0
def make_chart_sql(year, market1, market2):

    query1 = db.select([data]).where(
        db.and_(data.columns.year == year, data.columns.market == market1))
    data1 = connection.execute(query1).fetchall()[0][2:]
    query2 = db.select([data]).where(
        db.and_(data.columns.year == year, data.columns.market == market2))
    data2 = connection.execute(query2).fetchall()[0][2:]

    img = io.BytesIO()

    fig, ax = plt.subplots(figsize=(6, 4))

    pos = list(range(len(seasons)))
    width = 0.35

    plt.bar(pos, data1, width, color='#58ACB6')
    plt.bar([p + width for p in pos], data2, width, color='#7067A0')

    plt.title(market1 + ' vs. ' + market2 + ' - ' + year)

    plt.legend([market1, market2])

    ax.set_xticks([p + 0.5 * width for p in pos])
    ax.set_xticklabels(seasons)

    fig.savefig(img,
                format='png',
                transparent=True,
                bbox_inches='tight',
                pad_inches=0)
    img.seek(0)
    chart_url = base64.b64encode(img.getvalue()).decode()
    plt.close()
    return 'data:image/png;base64,{}'.format(chart_url)
예제 #3
0
def get_receipt(order_no):
    args = dict(order_no=order_no)
    rec = db.select("Receipts", vars=args, where="order_id=$order_no").list()
    print (rec)
    if len(rec) == 0:
        rec = db.select("Receipts", vars=args, where="id=0").list()
    return rec[0]
예제 #4
0
파일: main.py 프로젝트: faustinoaq/Chat
 def __init__(self):
     self.maxUsers = 10  # LIMITED TO 30 USERS/COLORS
     clients = db.select('user', what='count(*) as count')[0]
     if clients.count >= self.maxUsers:
         raise web.seeother('/data/warning')
     try:
         cookie = web.cookies()
         if cookie.user == '' and cookie.color == '':
             Color = self.color()
             User = self.name()
             web.setcookie('color', Color, 604800)
             web.setcookie('user', User, 604800)
             timestamp = time.strftime("%Y-%m-%d %I:%M:%S %p")
             db.insert('user', user=User,
                               color=Color,
                               timestamp=timestamp)
         else:
             data = db.select('user', where='user="******"'.format(cookie.user))
             if not data:
                 x
     except BaseException as ex:
         print ex
         web.setcookie('user', '', 3600)
         web.setcookie('color', '', 3600)
         raise web.seeother('/')
예제 #5
0
파일: handlers.py 프로젝트: saslv/nyashbot
 def handle_fact(self, engine, message, cmd, args):
     if cmd == 'fact':
         results = db.select('SELECT text FROM facts ORDER BY RANDOM() LIMIT 1')
         if not results:
             raise Exception('В базі ще немає жодного факту :(')
         users = db.select('SELECT username FROM stats ORDER BY RANDOM() LIMIT 5')
         if not users or len(users) < 3:
             raise Exception('Недостатньо людей в базі :(')
         result = results[0][0]
         users = [u'@{}'.format(user[0]) for user in users]
         engine.telegram.sendMessage(
             chat_id=message.chat_id,
             text=result.format(*users)
         )
         return True
     elif cmd == 'addfact':
         if len(args.strip()) == 0:
             raise Exception('Введіть, що саме додати! Наприклад: "/addfact {} любить фапати на аніме.".')
         if args.find('{}') == -1:
             raise Exception('В факті має бути принаймні одна і не більше п’яти пар фігурних дужок - "{}".')
         if args.count('{}') > 3:
             raise Exception('В факті має бути принаймні одна і не більше трьох пар фігурних дужок - "{}".')
         self.db.execute('INSERT INTO facts(author, text) VALUES("{}", ?)'.format(message.from_user.username), (args.strip(),))
         engine.telegram.sendMessage(
             chat_id=message.chat_id,
             text='Факт додано!'
         )
예제 #6
0
def show_article(id):
    all_entries = db.select("select * from blogs order by created_at" )
    for i in all_entries:
        if i['id'] == id:
            this_entry = i
            this_entry_index = all_entries.index(i)
            if this_entry_index > 0:
                next_entry = all_entries[this_entry_index-1]
            else:
                next_entry = None
            if this_entry_index < (len(all_entries) -1):
                pre_entry = all_entries[this_entry_index+1]
            else:
                pre_entry = None
    #this_entry = db.select("select * from blogs where id='%s'" % id)[0]
    this_entry['created_at_converted'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(this_entry['created_at']))
    this_comments = db.select("select * from comments where blog_id ='%s'" % id)
    if this_comments:
        for i in this_comments:
            i.created_at_converted = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(i.created_at))

    if session.has_key('username'):
        return render_template('article.html', entry=this_entry, username=session['username'], comments=this_comments, pre_entry=pre_entry, next_entry=next_entry, catalogs=catalogs, tags=tags, title=this_entry.name)
    else:
        return render_template('article.html', entry=this_entry, comments=this_comments, pre_entry=pre_entry, next_entry=next_entry, catalogs=catalogs, tags=tags, title=this_entry.name)
예제 #7
0
def sign_in():
    data = {
        'name': request.form.get("username"),
        'pwd': request.form.get("password")
    }
    res = db.select(conn, 'account', ['aid'], data)
    if res is not None and len(res) != 0:
        log = dict()
        lids = db.select(conn, 'logs', ['lid'], dict())
        lids = set([t['lid'] for t in lids])
        log['lid'] = ''.join(
            random.choice(letters + numbers) for j in range(10))
        while log['lid'] in lids:
            log['lid'] = ''.join(
                random.choice(letters + numbers) for j in range(10))
        log['if_log_in'] = True
        log['time'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        log['aid'] = res[0]['aid']
        db.insert(conn, 'logs', log)

        resp = make_response(redirect(url_for("homepage.all_records")))
        resp.set_cookie(key='aid', value=res[0]['aid'], expires=None)
        return resp
    else:
        return render_template('/login/SignIn.html',
                               msg="error user name or password")
예제 #8
0
파일: handlers.py 프로젝트: saslv/nyashbot
 def handle_fact(self, engine, message, cmd, args):
     if cmd == 'fact':
         results = db.select(
             'SELECT text FROM facts ORDER BY RANDOM() LIMIT 1')
         if not results:
             raise Exception('В базі ще немає жодного факту :(')
         users = db.select(
             'SELECT username FROM stats ORDER BY RANDOM() LIMIT 5')
         if not users or len(users) < 3:
             raise Exception('Недостатньо людей в базі :(')
         result = results[0][0]
         users = [u'@{}'.format(user[0]) for user in users]
         engine.telegram.sendMessage(chat_id=message.chat_id,
                                     text=result.format(*users))
         return True
     elif cmd == 'addfact':
         if len(args.strip()) == 0:
             raise Exception(
                 'Введіть, що саме додати! Наприклад: "/addfact {} любить фапати на аніме.".'
             )
         if args.find('{}') == -1:
             raise Exception(
                 'В факті має бути принаймні одна і не більше п’яти пар фігурних дужок - "{}".'
             )
         if args.count('{}') > 3:
             raise Exception(
                 'В факті має бути принаймні одна і не більше трьох пар фігурних дужок - "{}".'
             )
         self.db.execute(
             'INSERT INTO facts(author, text) VALUES("{}", ?)'.format(
                 message.from_user.username), (args.strip(), ))
         engine.telegram.sendMessage(chat_id=message.chat_id,
                                     text='Факт додано!')
예제 #9
0
 def get_fact(self, chat_id):
     results = db.select('SELECT text FROM facts ORDER BY RANDOM() LIMIT 1')
     if not results:
         raise Exception('В базі ще немає жодного факту :(')
     users = db.select('SELECT username FROM stats WHERE chat_id = ? ORDER BY RANDOM() LIMIT 5', (chat_id,))
     if not users or len(users) < 3:
         raise Exception('Недостатньо людей в базі :(')
     result = results[0][0]
     users = [u'@{}'.format(user[0]) for user in users]
     return result.format(*users)
예제 #10
0
def name(user_id: int):
    custom = db.select(TABLE='users',
                       SELECT='custom_name',
                       WHERE={'user_id': user_id})

    if custom[0]:
        return custom[0]  #?

    return db.select(TABLE='users', SELECT='name', WHERE={'user_id':
                                                          user_id})[0]
예제 #11
0
def make_rec_stk():
    aids = db.select(conn, "account", ["aid"], dict())
    aids = [t['aid'] for t in aids]
    for user in aids:
        db.delete(conn, 'rec_stk', {'aid': user})
        sids = db.select(conn, "stocks", "*", dict())
        random.seed(time.time())
        rec_stk = random.sample(sids, 10)
        for stk in rec_stk:
            db.insert(conn, "rec_stk", {'aid': user, 'sid': stk['sid']})
예제 #12
0
파일: handlers.py 프로젝트: saslv/nyashbot
 def get_fact(self):
     results = db.select('SELECT text FROM facts ORDER BY RANDOM() LIMIT 1')
     if not results:
         raise Exception('В базі ще немає жодного факту :(')
     users = db.select(
         'SELECT username FROM stats ORDER BY RANDOM() LIMIT 5')
     if not users or len(users) < 3:
         raise Exception('Недостатньо людей в базі :(')
     result = results[0][0]
     users = [u'@{}'.format(user[0]) for user in users]
     return result.format(*users)
예제 #13
0
파일: klapi.py 프로젝트: farhany/klapi
def machine():
    _db = db.connect(settings.settings())
    user = auth.username()
    if user == 'admin':
        res = db.select(_db, 'machines')
    else:
        res = db.select(_db, 'machines', where='owner=\'%s\'' % user)
    items = [x[0] for x in res]
    return jsonify({
        'machines': [{
            'uri': url_for('machine_id', machine_id=x, _external=True),
            'id': x
        } for x in items]
    })
예제 #14
0
파일: klapi.py 프로젝트: farhany/klapi
def machine_del(machine_id):
    user = auth.username()
    _db = db.connect(settings.settings())
    if user == 'admin':
        res = db.select(_db, 'machines', where='id=\'%s\'' % machine_id)
    else:
        res = db.select(_db,
                        'machines',
                        where='id=\'%s\' AND owner=\'%s\'' %
                        (machine_id, user))

    if not res:
        abort_msg(400, 'Machine "%s" not found' % (machine_id))

    res = res[0]
    inf = infra.provider(settings.settings())
    dom = inf.getDomain(res[0])
    if not dom or dom is None:
        abort(400)

    if dom.isActive():
        dom.destroy()

    flags = 0
    if dom.hasManagedSaveImage():
        flags |= libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE

    if dom.snapshotNum() > 0:
        flags |= VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA

    vol_provider = images.volume_provider(settings.settings())
    vols = inf.deviceItems(dom, 'disk')

    error_msg = ''
    try:
        dom.undefineFlags(flags)
    except:
        error_msg = 'ERROR: Undefining domain: %s' % macine_id
        print(error_msg)

    error_msg += vol_provider.removeVolumes(vols)

    _db = db.connect(settings.settings())
    db.delete(_db, 'machines', where='id=\'%s\'' % machine_id)

    data = {'removed': machine_id}
    if error_msg:
        data['error'] = error_msg

    return jsonify(data)
예제 #15
0
파일: klapi.py 프로젝트: farhany/klapi
def put_machine(machine_id):
    if not request.json:
        abort_msg(400, 'Expected JSON input')

    user = auth.username()
    _db = db.connect(settings.settings())
    if user == 'admin':
        res = db.select(_db, 'machines', where='id=\'%s\'' % machine_id)
    else:
        res = db.select(_db,
                        'machines',
                        where='id=\'%s\' AND owner=\'%s\'' %
                        (machine_id, user))
    if not res:
        abort_msg(400, 'Machine "%s" not found' % (machine_id))

    res = res[0]
    inf = infra.provider(settings.settings())
    dom = inf.getDomain(res[0])
    if not dom or dom is None:
        abort_msg(400, 'Machine "%s" not in backedn' % (machine_id))

    if 'operation' not in request.json:
        abort_msg(400, 'No operation defined')

    data = {}
    if request.json['operation'] == 'reboot':
        data['result'] = dom.reboot()
    elif request.json['operation'] == 'reset':
        data['result'] = dom.reset()
    elif request.json['operation'] == 'shutdown':
        data['result'] = dom.shutdown()
    elif request.json['operation'] == 'start':
        st = dom.state()[0]
        if st in [0, 4, 5, 6]:
            data['result'] = dom.create()
        else:
            abort_msg(400,
                      'Can\'t start, invalid state: %s' % (inf.domState(dom)))
    elif request.json['operation'] == 'forceoff':
        data['result'] = dom.destroy()
    elif request.json['operation'] == 'suspend':
        data['result'] = dom.suspend()
    elif request.json['operation'] == 'resume':
        data['result'] = dom.resume()
    else:
        abort_msg(400, 'Unknown operation: %s' % (request.json['operation']))

    data[request.json['operation']] = machine_id
    return jsonify(data)
예제 #16
0
def members(group_id: int, limit: int = 10):
    return db.select(
        TABLE='members',
        SELECT='user_id',
        WHERE={'group_id': group_id},
        LIMIT=limit,
    )
예제 #17
0
def modifing_plans():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    pid = request.form.get("pid")
    plan = db.select(conn, "plans", "*", {'pid': pid})[0]
    return render_template("/plans/ModifyPlans.html", plan=plan)
예제 #18
0
def add_plans():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    plan = {
        'aid': aid,
        'starting': to_valid_time(request.form.get("starting")),
        'ending': to_valid_time(request.form.get("ending")),
        'cycle': request.form.get("cycle"),
        'budget': request.form.get("budget")
    }
    if plan['budget'] == "":
        return render_template("/plans/AddingPlan.html", msg="illegal value")
    pids = db.select(conn, 'plans', ['pid'], dict())
    pids = set([t['pid'] for t in pids])
    plan['pid'] = ''.join(random.choice(letters + numbers) for j in range(10))
    while plan['pid'] in pids:
        plan['pid'] = ''.join(
            random.choice(letters + numbers) for j in range(10))

    begin, end = find_current_period(plan['starting'], plan['cycle'])
    sql = """select SUM(amt) as total from records where aid = '%s' and time is not null and time >= '%s' and time <= '%s';""" % (
        aid, begin, end)
    existed_amt = db.special_select(sql)[0]['total']
    plan['credit'] = float(plan['budget']) - float(existed_amt)

    res = db.insert(conn, 'plans', plan)
    if res is True:
        return redirect(url_for(".own_plans"))
    else:
        return render_template("/plans/AddingPlan.html", msg="illegal value")
예제 #19
0
파일: user.py 프로젝트: YunYinORG/find
def merge(phone_id, card_id):
    """手机临时账号和校园卡账号合并"""
    record_table = 'record'
    t = db.transaction()
    phone_id, card_id = int(phone_id), int(card_id)
    # db.update(record_table, where="lost_id=%i" % phone_id, lost_id=card_id)
    # db.update(record_table, where="find_id=%i" % phone_id, find_id=card_id)
    # # 删除合并用户
    # phone_user = db.select(_table, where="id=%i" % phone_id, limit=1, what='phone')
    # try:
    #     db.delete(_table, where="id=%i" % phone_id)
    # except:
    #     db.update(_table, where="id=%i" % phone_id, phone=None)
    # db.update(_table, where="id=%i" % card_id, phone=phone_user[0].phone)

    try:
        # 转移记录
        db.update(record_table, where="lost_id=%i" % phone_id, lost_id=card_id)
        db.update(record_table, where="find_id=%i" % phone_id, find_id=card_id)
        # 删除合并用户
        phone_user = db.select(_table, where="id=%i" % phone_id, limit=1, what='phone')
        try:
            db.delete(_table, where="id=%i" % phone_id)
        except:
            db.update(_table, where="id=%i" % phone_id, phone=None)
        db.update(_table, where="id=%i" % card_id, phone=phone_user[0].phone)
    except:
        t.rollback()
        return False
    else:
        t.commit()
        return card_id
예제 #20
0
def modifing_record():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    reid = request.form.get("reid")
    record = db.select(conn, "records", "*", {'reid': reid})[0]
    return render_template("/homepage/ModifyRecord.html", record=record)
예제 #21
0
 def test_create_order(self):
     with self.config:
         oi = orders.create_new_order(6)
     ret = db.select('Orders', where='id='+str(oi))
     to = ret[0]
     self.assertEquals(to.waiter, 6)
     self.assertEquals(to.status, 0)
예제 #22
0
    def test_add_item(self):
        with self.config:
            oi = orders.create_new_order(2)
	orders.add_item(oi, 1, 1)
        ret = db.select('OrderedItems', where='order_id='+str(oi))
        ti = ret[0]
        self.assertEquals(ti.item_id, 1)
예제 #23
0
def check_defaults():
    cur_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    sql = "select * from defaults where ending > '%s' or ending is null;" % cur_time
    defaults = db.special_select(sql)
    for default in defaults:
        if check_time(default['starting'], default['cycle']):
            record = dict()
            record['name'] = default['name']
            record['be_from'] = default['be_from']
            record['be_to'] = default['be_to']
            record['amt'] = default['amt']
            record['tag'] = default['tag']
            record['time'] = default['time']
            record['remark'] = default['remark']
            record['aid'] = default['aid']

            reids = db.select(conn, 'records', ['reid'], dict())
            reids = [t['reid'] for t in reids]

            record['reid'] = ''.join(
                random.choice(letters + numbers) for j in range(10))
            while record['reid'] in reids:
                record['reid'] = ''.join(
                    random.choice(letters + numbers) for j in range(10))
            db.insert(conn, 'records', record)
예제 #24
0
def buy_stock():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    data = {
        'aid': aid,
        'sid': request.form.get('sid'),
        'num': request.form.get('num'),
        'price': float(request.form.get('price'))
    }
    if data['num'] == "":
        return redirect(url_for(".stock_market"))
    else:
        data['num'] = int(data['num'])
    tmp = db.select(conn, 'own_stk', "*", {'sid': data['sid'], 'aid': aid})
    if len(tmp) == 0:
        db.insert(conn, 'own_stk', data)
    else:
        new_num = int(tmp[0]['num']) + data['num']
        new_price = (float(tmp[0]['price']) * int(tmp[0]['num']) +
                     data['num'] * data['price']) / new_num
        db.update(conn, 'own_stk', {"=": {
            'price': new_price,
            'num': new_num
        }}, {
            'sid': data['sid'],
            'aid': aid
        })
    return redirect(url_for(".own_stock"))
예제 #25
0
 def getuser(self, token):
     cond = "`token`='{0}'".format(token)
     try:
         user = db.select("`user`,`type`", 'users', cond, one=True)
     except BaseException as e:
         raise e
     return user if user else None
예제 #26
0
파일: klapi.py 프로젝트: farhany/klapi
def post_user():
    if auth.username() != 'admin':
        abort_msg(400, 'Access denied, admin needed!')

    if not request.json:
        abort_msg(400, 'Expected JSON parameters')

    if 'user' not in request.json:
        abort_msg(400, 'Value for "user" not defined')
    user = request.json['user']
    passwd = ''
    if 'password' in request.json:
        passwd = request.json['password']

    if user == 'admin':
        abort_msg(400, 'Can\'t create admin')

    _db = db.connect(settings.settings())
    res = db.select(_db, 'users', where='name=\'%s\'' % user)
    if res:
        abort_msg(400, 'User \"%s\" already exists' % user)

    if not passwd:
        passwd = utils.generatePassword(20)

    db.insert(_db, 'users', [user, passwd, utils.generateApiKey()])

    data = {'user': request.json['user'], 'password': passwd}

    return jsonify(data)
예제 #27
0
    def submit_score(self, username, good):
        results = db.select(
            'SELECT * '
            'FROM carma WHERE username="******"'.format(
                username
            )
        )
        if not results:
            db.execute(
                'INSERT INTO carma(username, commends, reports) '
                'VALUES("{}", 0, 0)'.format(username)
            )
            commends = 0
            reports = 0
        else:
            _, _, commends, reports = results[0]

        if good:
            commends += 1
        else:
            reports += 1

        db.execute(
            'UPDATE carma SET commends={}, reports={} '
            'WHERE username="******"'.format(
                commends,
                reports,
                username
            )
        )
예제 #28
0
 def GET(self):
     pdata = web.input(order_id = None)
     orlist = get_order(pdata.order_id)
     items = menu.get_menu_items()
     tags = db.select('Categories').list()
     page = render.customer_banner(items, pdata.order_id, orlist, tags)
     return render_page(page)
예제 #29
0
 def get_user(self,username):
     #user = User("manager", "$2a$12$CyLyLDPA5NFTY48o3fANQOEsni38JgHBk3FNwdUFd1OwYMBZxN146", "manager")
     users = db.select('Users join Role', dict(username=username),
             where="uname = $username and Users.role = Role.id",
             what='Users.id as uid,uname,password,Role.id as roleid, Role.name as user_type').list()
     if (len(users) == 1 ):
         return users[0]
예제 #30
0
 def test_delete_item(self):
     itemid = db.insert('MenuItems', name= 'Chicken', description='Desc',
             price=20)
     delete_item(itemid)
     ret = db.select('MenuItems', where='name="Chicken"')
     with self.assertRaises(IndexError):
         mitem = ret[0]
예제 #31
0
 def test_set_status(self):
     itemid = db.insert('MenuItems', name= 'Chicken', description='Desc',
             price=20)
     set_status(itemid, False)
     ret = db.select('MenuItems', where='name="Chicken"')
     mitem = ret[0]
     self.assertFalse(mitem.available)
예제 #32
0
def modifing_defaults():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    did = request.form.get("did")
    default = db.select(conn, "defaults", "*", {'did': did})[0]
    return render_template("/defaults/ModifyDefaults.html", default=default)
예제 #33
0
def add_defaults():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    default = {
        'aid': aid,
        'name': request.form.get("name"),
        'be_from': request.form.get("be_from"),
        'be_to': request.form.get("be_to"),
        'starting': to_valid_time(request.form.get("starting")),
        'ending': to_valid_time(request.form.get("ending")),
        'cycle': request.form.get("cycle"),
        'amt': request.form.get("amt"),
        'remark': request.form.get("remark"),
        'tag': request.form.get("tag")
    }
    dids = db.select(conn, 'defaults', ['did'], dict())
    dids = set([t['did'] for t in dids])
    default['did'] = ''.join(
        random.choice(letters + numbers) for j in range(10))
    while default['did'] in dids:
        default['did'] = ''.join(
            random.choice(letters + numbers) for j in range(10))

    res = db.insert(conn, 'defaults', default)
    if res is True:
        return redirect(url_for(".own_defaults"))
    else:
        return render_template("/defaults/AddingDefaults.html",
                               msg="illegal value")
예제 #34
0
    def run(self):
        gags = self.ng.get_latest_hot()[::-1]
        for gag in gags:
            match = db.select('SELECT * FROM gags WHERE gag="{}"'.format(gag.id))
            if not match:
                # New gag!
                db.execute('INSERT INTO gags(gag, kind) VALUES("{}", "{}")'.format(gag.id, gag.kind))

                if gag.kind == 'image':
                    self.engine.telegram.sendPhoto(
                        chat_id=settings.CHAT_ID,
                        photo=gag.img['src'],
                        caption=gag.name
                    )
                elif gag.kind == 'gif':
                    import urllib2
                    from random import random
                    data = urllib2.urlopen(gag.animated['data-mp4']).read()
                    tmp = open('/tmp/{}.mp4'.format(str(int(random() * 1000000))), 'w+b')
                    tmp.write(data)
                    tmp.seek(0)

                    self.engine.telegram.sendVideo(
                        chat_id=settings.CHAT_ID,
                        video=tmp,
                        caption=gag.name
                    )
                elif gag.kind == 'article':
                    self.engine.telegram.sendPhoto(
                        chat_id=settings.CHAT_ID,
                        photo=gag.img['href'],
                        caption=u'Full version: {}'.format(gag.name)
                    )
        # print 'NineGagPoster.run()'
        self.start_later(3)
예제 #35
0
 def POST(self):
     data = web.input(category=None, order_id=None)
     orlist = get_order(data.order_id)
     items = menu.get_menu_items_category(data.category)
     tags = db.select('Categories').list()
     page = render.customer_banner(items, data.order_id, orlist, tags)
     return render_page(page)
예제 #36
0
 def test_create_item(self):
     create_item('Chicken', 'Chicken Desc', 30)
     ret = db.select('MenuItems', where='name="Chicken"')
     mitem = ret[0]
     self.assertEquals(mitem.name, 'Chicken')
     self.assertEquals(mitem.description, 'Chicken Desc')
     self.assertEquals(mitem.price, 30.0)
     self.assertTrue(mitem.available)
예제 #37
0
 def test_change_pass(self):
     uid = db.insert('Users', uname='kevin', role=1, password=self.passwd)
     users.change_pass(uid, 'newpassword')
     ret = db.select('Users', where="uname='kevin'")
     user = ret[0]
     phash = str(user.password);
     expected = bcrypt.hashpw('newpassword', phash)
     self.assertEquals(expected, phash)
예제 #38
0
 def POST(self):
     item = web.input(item_id=None, order_id=None, qty=None)
     update_quantity(item.order_id, item.item_id, item.qty)
     orlist = get_order(item.order_id)
     items = menu.get_menu_items()
     tags = db.select('Categories').list()
     page = render.customer_banner(items, item.order_id, orlist, tags)
     return render_page(page)
예제 #39
0
def show_all_blog():
    entries = db.select('select * from blogs order by created_at DESC')
    for i in entries:
        i['created_at_converted'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(i['created_at']))
    if session.has_key('username'):
        return render_template('blog.html', entries=entries, username=session['username'], catalogs=catalogs, tags=tags, title="Yecheng Zhou's Blog")
    else:
        return render_template('blog.html', entries=entries, catalogs=catalogs, tags=tags, title="Yecheng Zhou's Blog")
예제 #40
0
 async def count(self, filter: Optional[Union[str, TextClause]] = None) -> int:
     q = db.select([db.func.count([x for x in self.model.pk][0])])
     filter = filter if filter is not None else self.filter
     if filter is not None:
         if not isinstance(filter, TextClause):
             filter = db.text(filter)
         q = q.where(filter)
     return await q.gino.scalar() or 0
예제 #41
0
def member(group_id: int, user_id: int) -> bool:
    return bool(
        db.select(SELECT='user_id',
                  TABLE='members',
                  WHERE={
                      'group_id': group_id,
                      'user_id': user_id
                  }))
예제 #42
0
 def POST(self):
     pdata = web.input(category_id=None)
     print pdata.category_id
     db.delete('Categories', vars=locals(), where="id = $pdata.category_id")
     items = get_menu_items()
     tags = db.select('Categories').list()
     menu_table = render.menu_editor(items, tags)
     return render_page(menu_table)
예제 #43
0
    def GET(self):
        if (web.config._session.roleid != 1):
            raise web.seeother('/')
        items = get_menu_items()
        tags = db.select('Categories').list()
        menu_table = render.menu_editor(items, tags)

        return render_page(menu_table)
예제 #44
0
def ship_count_all(group_id: int, limit: int = 100):
    return db.select(SELECT=['user_id', 'count'],
                     TABLE='ship_count',
                     WHERE={
                         'group_id': group_id,
                     },
                     ORDER_BY='count DESC',
                     LIMIT=limit)
예제 #45
0
def ship_count(group_id, user_id: int):
    return db.select(SELECT='count',
                     TABLE='ship_count',
                     WHERE={
                         'group_id': group_id,
                         'user_id': user_id
                     },
                     ORDER_BY='count DESC')
예제 #46
0
def get_markets():
    query = db.select([data])
    ResultProxy = connection.execute(query)
    ResultSet = ResultProxy.fetchall()
    markets = set()
    for r in ResultSet:
        markets.add(r[0])
    return markets
예제 #47
0
def get_years():
    query = db.select([data])
    ResultProxy = connection.execute(query)
    ResultSet = ResultProxy.fetchall()
    years = set()
    for r in ResultSet:
        years.add(r[1])
    return years
예제 #48
0
def show_projects():
    """
    call github api to get all repositories
    """
    #global glob_username
    url = 'https://api.github.com/users/YechengZhou/repos'
    last_update_time = db.select('select created_at from projects limit 0,1;')
    all_repositories_info = []
    print last_update_time

    if len(last_update_time) != 0 and int(time.time()) - int(last_update_time[0].created_at) < 3600 * 12:  # do not update within 12 hours
        all_repositories_info = db.select('select * from projects')
    else:
        all_rep = git_api_query(url)
        if isinstance(all_rep, list):
            for i in all_rep:
                logging.info("query url is : %s" % i['url'])
                i_result = git_api_query(i['url'])
                this_rep = db.MyDict()
                if isinstance(i_result, dict):
                    this_rep['name'] = i_result['name']
                    this_rep['html_url'] = i_result['html_url']
                    this_rep['description'] = i_result['description']
                    all_repositories_info.append(this_rep)
        #if len(last_update_time) == 0: # no project items currently, just insert what have got
            #flag_just_insert = True
        # update project schema based on new query result from Github api
        all_repo_name_db = db.select('select name from projects;')

        for p in all_repositories_info:
            if db.MyDict(('name',), (p.name,)) in all_repo_name_db:  # just update
                db.update("update projects set url=?, description=?, created_at=? where name=?", p['html_url'], p['description'], time.time(), p.name)
            else:
                this_project = Projects(
                    name=p['name'],
                    url=p['html_url'],
                    description=p['description']
                )
                this_project.insert()

    if session.has_key('username'):
        #dir(all_repositories_info[0])
        return render_template('projects.html', projects=all_repositories_info, username=session['username'], title='Projects')
    else:
        return render_template('projects.html', projects=all_repositories_info, title='Projects')
예제 #49
0
 def POST(self):
     if (web.config._session.roleid != 1):
         raise web.seeother('/')
     pdata = web.input(category=None)
     db.insert('Categories', category = pdata.category)
     items = get_menu_items()
     tags = db.select('Categories').list()
     menu_table = render.menu_editor(items, tags)
     return render_page(menu_table)
예제 #50
0
def last_shippers_time(group_id):
    r = db.select(SELECT='time', FROM='shippers', WHERE={'group_id': group_id})

    if not r:
        r = 0
    else:
        r = r[0]

    return float(r)
예제 #51
0
파일: klapi.py 프로젝트: farhany/klapi
def before_request():
    setup.create_db()
    _db = db.connect(settings.settings())
    res = db.select(_db, 'users', ['pass'], 'name=\'%s\'' % ('admin'))
    if res is None or not res:
        admin_pass = utils.generatePassword(20)
        db.insert(_db, 'users', ['admin', admin_pass, utils.generateApiKey()])
        print('Password for admin: "%s", keep this in safe place!\n' %
              (admin_pass))
예제 #52
0
def all_records():
    aid = request.cookies.get('aid')
    if aid is None or aid == "":
        return redirect(url_for("login.sign_in"))
    records = db.select(conn,
                        'records',
                        "*", {'aid': aid},
                        special="ORDER BY time DESC")
    return render_template("/homepage/HomePage.html", records=records)
예제 #53
0
 def test_add_user(self):
     users.add_user('kevin', 1, 'password')
     ret = db.select('Users', where="uname='kevin'")
     user = ret[0]
     self.assertEquals(user.uname, 'kevin')
     self.assertEquals(user.role, 1)
     phash = str(user.password);
     expected = bcrypt.hashpw('password', phash)
     self.assertEquals(expected, phash)
예제 #54
0
파일: main.py 프로젝트: faustinoaq/Chat
 def name(self):
     existUser = True
     while existUser:
         user = '******' + str(randrange(1, self.maxUsers*5, 1))
         data = db.select('user', where='user="******"'.format(user))
         if data:
             existUser = True
         else:
             existUser = False
     return user
예제 #55
0
 def test_delete_user(self):
     users.add_user('kevin', 1, 'password')
     with self.winput as webdata:
         self.input_mock.action ='delete'
         webdata.return_value = self.input_mock
         with self.config:
             with self.assertRaises(Exception):
                 self.manager.POST()
     ret = db.select('Users', where="uname='kevin'")
     with self.assertRaises(IndexError):
         user = ret[0]
예제 #56
0
 def post(self):
     t = db.select("select * from users where email=?", request.form['email'])
     if t:
         raise APIValueError(data=request.form['email'], message="email has already been registered")
     user = User(
         email=request.form['email'],
         password=request.form['password'],
         name=request.form['username'],
         image=request.form['image'] if request.form.has_key('image') else "about:blank",
         admin=1,
     )
     user.insert()
예제 #57
0
def authenticate(passwd=None, username=None):
    user = db.select(table,what='password', where='username=$username',vars={'username':username})
    user = user.list()
    if len(user) == 0:
        return False
    else:
        encrypt_passwd = user[0].password
        split = encrypt_passwd.split('$')
        salt = split[0]
        if hashlib.sha1(salt+passwd).hexdigest() == split[1]:
            return True
        else:
            return False
예제 #58
0
 def test_web_delete_item(self):
     itemid = db.insert('MenuItems', name= 'Chicken', description='Desc',
             price=20)
     with self.winput as info:
         self.input_mock.action = 'delete'
         self.input_mock.item = itemid
         info.return_value = self.input_mock
         with self.config:
             with self.assertRaises(Exception):
                 self.menued.POST()
     ret = db.select('MenuItems', where='1=1')
     with self.assertRaises(IndexError):
         mitem = ret[0]
예제 #59
0
 def test_web_hide_item(self):
     itemid = db.insert('MenuItems', name= 'Chicken', description='Desc',
             price=20)
     with self.winput as info:
         self.input_mock.action = 'hide'
         self.input_mock.item = itemid
         info.return_value = self.input_mock
         with self.config:
             with self.assertRaises(Exception):
                 self.menued.POST()
     ret = db.select('MenuItems', where='id=$itemid', vars=locals())
     mitem = ret[0]
     self.assertFalse(mitem.available)