-
Notifications
You must be signed in to change notification settings - Fork 89
/
vote.py
59 lines (45 loc) · 1.7 KB
/
vote.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import sqlalchemy as sa
from meta import Base
from meta import Session
from lib.model import CommaList
from person import Person
from registration import Registration
from registration_product import RegistrationProduct
from event import Event
def setup(meta):
pass
class Vote(Base):
"""Votes from registered delegates on events
"""
__tablename__ = 'vote'
id = sa.Column(sa.types.Integer, primary_key=True)
rego_id = sa.Column(sa.types.Integer)
vote_value = sa.Column(sa.types.Integer)
comment = sa.Column(sa.types.Text)
event_id = sa.Column(sa.types.Integer)
creation_timestamp = sa.Column(sa.types.DateTime, nullable=False, default=sa.func.current_timestamp())
last_modification_timestamp = sa.Column(sa.types.DateTime, nullable=False, default=sa.func.current_timestamp(), onupdate=sa.func.current_timestamp())
# relations
def __init__(self, **kwargs):
super(Vote, self).__init__(**kwargs)
@classmethod
def find_by_id(cls, id, abort_404 = True):
result = Session.query(Vote).filter_by(id=id).first()
if result is None and abort_404:
abort(404, "No such vote object")
return result
@classmethod
def find_by_event_rego(cls,event,rego):
result = Session.query(Vote).filter_by(event_id=event,rego_id=rego).first()
return result
@classmethod
def find_by_event(cls,id):
result = Session.query(Vote).filter_by(event_id=id)
return result
@classmethod
def find_by_rego(cls,id):
result = Session.query(Vote).filter_by(rego_id=id)
return result
@classmethod
def find_all(cls):
return Session.query(Vote).order_by(Vote.id).all()