116 lines
2.5 KiB
Python
116 lines
2.5 KiB
Python
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()
|