Пример #1
0
def write_to_db(table, rows):
    total = len(rows)
    batch_size = 500
    i = 0
    while total > 0:
        y = i * batch_size
        to_insert = rows[y: y + batch_size]
        db.table(table).insert(to_insert)
        total -= batch_size
        i += 1
Пример #2
0
async def _(msg, ctx: Context):
    m = StartUpMachine.from_user_id(ctx.user_uid)
    m.reset()
    m.sent_start()
    q = Query()
    db.table("login_data").upsert({"user_id": ctx.user_uid},
                                  q.user_id == ctx.user_uid)
    await ctx.reply("""Введите логин и пароль от Сетевого города.

Формат: <Логин>:<Пароль>""")
    m.save()
Пример #3
0
def handle(message, state):
    chat_id = message.chat.id

    with error_handler(chat_id=chat_id):
        result = db.table("users").search(get_user_query(chat_id))

        if result:
            user = m.User(**result[0])
        else:
            user = m.User.new(chat_id)

        d.UserDispatcher(user, message, bot).transit(state)

        db.table("users").upsert(user.dict(), get_user_query(chat_id))
Пример #4
0
async def dnevnik(msg: Message, ctx: Context):
    api = NetSchoolAPI("http://sgo.cit73.ru")
    q = Query()
    user = db.table("login_data").search(q.user_id == ctx.user_uid)[0]
    await api.login(
        user["login"].split(":")[0],
        user["login"].split(":")[1],
        user["school"],
        city=user["city"],
        oo=user["oo"],
    )
    data = await api.get_diary()
    df = pd.DataFrame(data={})

    await ctx.reply("Ваш класс: ")
    for day in data["weekDays"]:
        date = dateutil.parser.parse(day["date"]).weekday()
        for lesson in day["lessons"]:
            try:
                hw = lesson["assignments"][0]["assignmentName"]
                mark = lesson["assignments"][0]["mark"]
            except KeyError:
                hw = None
                mark = None
            subject = lesson["subjectName"]
            print(lesson["room"])
            room = [int(s) for s in lesson["room"].split("/")
                    if s.isdigit()][0]
            df = df.append(
                {
                    "Date": date,
                    "Homework": hw,
                    "Subject": subject,
                    "Mark": mark,
                    "Room": room
                },
                ignore_index=True)
    df = df.set_index("Date")
    for name, group in df.groupby("Date"):
        msg_ = "Уроки на {}\n".format(weektorus[name])
        for row in group.iterrows():
            data = row[1]
            msg_ += "{} / {} - {}\n".format(data["Subject"], int(data["Room"]),
                                            data["Homework"])
        await ctx.reply(msg_)
Пример #5
0
async def asd(msg: Message, ctx: Context):
    m = StartUpMachine.from_user_id(ctx.user_uid)
    if m.current_state == StartUpMachine.not_started:
        return
    elif m.current_state == StartUpMachine.entering_school:
        q = Query()
        db.table("login_data").update(set_("school", msg.text),
                                      q.user_id == ctx.user_uid)
        await ctx.reply(
            "Готово! Теперь вы можете написать /dnevnik для того чтобы посмотреть дневник"
        )
        m.reset()
    elif m.current_state == StartUpMachine.entering_login:
        q = Query()
        db.table("login_data").update(set_("login", msg.text),
                                      q.user_id == ctx.user_uid)
        await ctx.reply("Введите Город:")
        await ctx.reply("Все возможные города:\n" + "\n".join(
            await NetSchoolAPI("http://sgo.cit73.ru").get_form_data("cities")))
        m.cycle()
    elif m.current_state == StartUpMachine.entering_city:
        q = Query()
        db.table("login_data").update(set_("city", msg.text),
                                      q.user_id == ctx.user_uid)
        await ctx.reply("Введите ОО:")
        await ctx.reply("Все возможные ОО:\n" + "\n".join(await NetSchoolAPI(
            "http://sgo.cit73.ru").get_form_data("funcs")))
        m.cycle()
    elif m.current_state == StartUpMachine.entering_oo:
        q = Query()
        db.table("login_data").update(set_("oo", msg.text),
                                      q.user_id == ctx.user_uid)
        await ctx.reply("Введите Школу:")
        await ctx.reply("Все возможные школы:\n" +
                        "\n".join(await NetSchoolAPI(
                            "http://sgo.cit73.ru").get_form_data("schools")))
        m.cycle()
    m.save()
Пример #6
0
def worker():
    start_time = datetime.datetime.now().replace(second=0,
                                                 microsecond=0).timestamp()

    while True:
        logger.info(f'starting worker cycle')
        for user in [m.User(**x) for x in db.table("users").all()]:
            with error_handler(chat_id=user.chat_id):
                if user.reminder_morning and user.reminder_morning.is_notify_needed(
                ):
                    logger.info(f'notifying morning {user}')
                    d.UserDispatcher(user, None,
                                     bot).transit(m.State.NOTIFY_MORNING)
                    db.table("users").upsert(user.dict(),
                                             get_user_query(user.chat_id))

                if user.reminder_evening and user.reminder_evening.is_notify_needed(
                ):
                    logger.info(f'notifying evening {user}')
                    d.UserDispatcher(user, None,
                                     bot).transit(m.State.NOTIFY_EVENING)
                    db.table("users").upsert(user.dict(),
                                             get_user_query(user.chat_id))

                if user.reminder_forgot and user.reminder_forgot.is_notify_needed(
                ):
                    logger.info(f'notify forgot {user}')
                    if user.state == m.State.STOP:
                        logger.info(
                            f'special case: stop timer that was set after stopping reminders'
                        )
                        user.reminder_forgot.reset()
                    else:
                        d.UserDispatcher(user, None,
                                         bot).transit(m.State.NOTIFY_FORGOT)

                    db.table("users").upsert(user.dict(),
                                             get_user_query(user.chat_id))

        time.sleep(60.0 - ((time.time() - start_time) % 60.0))
    print(f'put result {i} - {e2 - s2} - total: {e2 - s1} - {total}')
    i += 1

# In[1]:

from db import db
from pymongo import MongoClient
from datetime import datetime

# In[2]:

get_ipython().run_line_magic('load_ext', 'autotime')

# In[3]:

db.table('titles').count()

# In[3]:

client = MongoClient()
mdb = client.fever
collection = mdb['titles']

# In[4]:

h = [
    'Nikolaj Coster-Waldau', 'Fox Broadcasting Company', 'Roman Atwood',
    'Adrienne Bailon', 'American', 'Israeli', 'Prisoners  War', 'number two',
    'Billboard Hot 100', '2003', 'Neal Schon', '1954', 'Boston Celtics',
    'Tetris', 'millions', 'Cyndi Lauper', 'Grammy Awards', '1985',
    'Ryan Gosling', 'Africa', 'Bloomington', 'Indiana', 'Ryan Seacrest',
Пример #8
0
def select_table(table):
    table = table or "__default__"
    return db.table(table)
Пример #9
0
def _get_user(message: telebot.types.Message):
    result = db.table("users").search(get_user_query(message.chat.id))
    if not result:
        return None
    return m.User(**result[0])
Пример #10
0
from db import db

dishes = db.table('dishes',
                  db.Column('order_id', db.Integer, db.ForeignKey('order.id')),
                  db.Column('menu_id', db.Integer, db.ForeignKey('menu.id')))


class OrderModel(db.Model):
    __tablename__ = 'order'

    id = db.Column(db.Integer, primary_key=True)
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))
    originalAmount = db.Column(db.Float(precision=2))
    finalAmount = db.Column(db.Float(precision=2))
    # TODO menu list

    menus = db.relationship('Menu',
                            secondary=dishes,
                            backref=db.backref('orders', lazy='dynamic'))

    status = db.Column(db.String(10))
    time = db.Column(db.String(10))
    phone = db.Column(db.String(20))
    deliverAddress = db.Column(db.String(200))

    def __init__(self, oid, uid, originalAmount, finalAmount, status, time,
                 phone, deliverAddress):
        self.id = oid
        self.uid = uid
        self.originalAmount = originalAmount
        self.finalAmount = finalAmount
Пример #11
0
import emoji
import random
import hashlib
from flask_restful import Resource, reqparse
from generator import KeyGenerator
from tinydb import Query
from db import db

emoji_list = emoji.EMOJI_UNICODE.keys()
table = db.table('name')


def generate_emojis(size=10):
    emojis = random.sample(emoji_list, size)
    return emoji.emojize("".join(emojis))


def get_private_key_from_emojis(emojis):
    kg = KeyGenerator()
    kg.seed_input(emojis)
    key = kg.generate_key()
    return key


def get_pk_hash(private_key):
    return hashlib.sha256(private_key.encode()).hexdigest()


nameParser = reqparse.RequestParser()
nameParser.add_argument('name', type=str)