events: add get helper
parent
580e245b8f
commit
af76be8e91
|
@ -1,22 +1,16 @@
|
|||
from os import path
|
||||
import subprocess
|
||||
from importlib import import_module
|
||||
|
||||
from flask import g
|
||||
from sqlalchemy import inspect
|
||||
|
||||
from files.helpers.const import AWARDS2, AWARDS_DISABLED
|
||||
from files.__main__ import engine
|
||||
|
||||
from .table import Event
|
||||
from events.classes import *
|
||||
from events.helpers import *
|
||||
from events.routes import *
|
||||
|
||||
def _build_table():
|
||||
if not inspect(engine).has_table(Event.__table__.name, schema="public"):
|
||||
if not inspect(engine).has_table(EventUser.__table__.name, schema="public"):
|
||||
print("[EVENT] Building event table...")
|
||||
Event.__table__.create(bind=engine, checkfirst=True)
|
||||
EventUser.__table__.create(bind=engine, checkfirst=True)
|
||||
|
||||
def _populate_awards():
|
||||
temp = {x: AWARDS2[x] for x in AWARDS2 if x not in EVENT_AWARDS}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
from .eventuser import EventUser
|
|
@ -3,10 +3,10 @@ from sqlalchemy.orm import relationship
|
|||
|
||||
from files.classes import Base
|
||||
|
||||
class Event(Base):
|
||||
|
||||
class EventUser(Base):
|
||||
__tablename__ = "event"
|
||||
id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
||||
user = relationship("User", primaryjoin="users", lazy="joined")
|
||||
|
||||
#event specific columns
|
||||
hw_zombie = Column(Integer, default=0, nullable=False)
|
|
@ -0,0 +1,14 @@
|
|||
from typing import Union
|
||||
from sqlalchemy.orm import scoped_session
|
||||
|
||||
from events.classes.eventuser import EventUser
|
||||
from files.classes.user import User
|
||||
|
||||
def get_or_create_event_user(target:Union[int, User], db:scoped_session) -> EventUser:
|
||||
if isinstance(target, User): target = target.id # type: ignore
|
||||
user = db.get(EventUser, target)
|
||||
if not user:
|
||||
user = EventUser(id=target)
|
||||
db.add(target)
|
||||
db.flush()
|
||||
return user
|
|
@ -3,21 +3,11 @@ from files.classes.award import AwardRelationship
|
|||
from files.helpers.alerts import send_repeatable_notification
|
||||
from files.helpers.useractions import badge_grant
|
||||
|
||||
from events import Event
|
||||
from events.helpers.get import get_or_create_event_user
|
||||
|
||||
def award_thing_event(v, kind, author):
|
||||
event_author = g.db.get(Event, author.id)
|
||||
event_v = g.db.get(Event, v.id)
|
||||
|
||||
if not event_author:
|
||||
event_author = Event(id=author.id)
|
||||
g.db.add(event_author)
|
||||
|
||||
if not event_v:
|
||||
event_v = Event(id=v.id)
|
||||
g.db.add(event_v)
|
||||
|
||||
g.db.flush()
|
||||
event_author = get_or_create_event_user(author, g.db)
|
||||
event_v = get_or_create_event_user(v, g.db)
|
||||
|
||||
if kind == "hw-bite":
|
||||
if event_author.hw_zombie < 0:
|
||||
|
|
Loading…
Reference in New Issue