import datetime from .models import database, User, OrdersPool, DomSubUsers, Repeat, SkipDay, OrderStatus, PunishmentStatus def initdb(): database.connect() database.create_tables([ Repeat, SkipDay, OrderStatus, PunishmentStatus ]) def user_add(username, chat_id): return User.create( telegram_username=username, telegram_chat_id=chat_id ) def user_get(username): return User.get( telegram_username=username ) def orders_pool_list(user_id): return OrdersPool.select().where(OrdersPool.user_id == user_id) def orders_pool(user_id, set_id): return OrdersPool.get(OrdersPool.user_id == user_id, OrdersPool.id == set_id) def domsubusers_add(sub, dom): return DomSubUsers.create( sub=sub, dom=dom ) def domsubusers_delete(sub, dom): q = DomSubUsers.get( sub=sub, dom=dom ).delete() return q.execute() def domsubusers_list(dom): return DomSubUsers.select().where(DomSubUsers.dom == dom) def repeat_get(): try: return Repeat.get() except Repeat.DoesNotExist: return None def repeat_increment(): q = Repeat.update(count=Repeat.count + 1) return q.execute() def repeat_put(probability, orders): return Repeat.create( probability=probability, orders=orders ) def repeat_clear(): q = Repeat.delete() q.execute() def skip_day_put(date): return SkipDay.create(date=date) def skip_day_delete(date): q = SkipDay.delete().where(SkipDay.date == date) return q.execute() def skip_days_upcoming(): return (SkipDay.select() .where(SkipDay.date >= datetime.date.today()) .order_by(SkipDay.date) .limit(10)) def skip_day_contains(date): q = SkipDay.select().where(SkipDay.date == date) return len(q) > 0 def order_status_put(mastodon_id, created_at, due_at, text): return OrderStatus.create( mastodon_id=mastodon_id, created_at=created_at, due_at=due_at, text=text ) def order_status_outstanding(): return OrderStatus.select().where( (OrderStatus.confirmed_at.is_null()) & (OrderStatus.punishment_id.is_null()) ) def order_status_confirm(id, confirmed_at): q = OrderStatus.update( confirmed_at=confirmed_at ).where( OrderStatus.id == id ) return q.execute() def punishment_status_put(order_status_id, mastodon_id, created_at, text): punishment_status = PunishmentStatus.create( mastodon_id=mastodon_id, created_at=created_at, text=text ) q = OrderStatus.update( punishment_id=punishment_status.id ).where( OrderStatus.id == order_status_id ) q.execute()