Browse Source

server: Add Aardbei fields to Person

Maarten van den Berg 5 years ago
parent
commit
d9abfaa30d

+ 11 - 8
piket_server/__init__.py

29
     __tablename__ = "people"
29
     __tablename__ = "people"
30
 
30
 
31
     person_id = db.Column(db.Integer, primary_key=True)
31
     person_id = db.Column(db.Integer, primary_key=True)
32
-    name = db.Column(db.String, nullable=False)
32
+    full_name = db.Column(db.String, nullable=False)
33
+    display_name = db.Column(db.String, nullable=True)
34
+    aardbei_id = db.Column(db.Integer, nullable=True)
33
     active = db.Column(db.Boolean, nullable=False, default=False)
35
     active = db.Column(db.Boolean, nullable=False, default=False)
34
 
36
 
35
     consumptions = db.relationship("Consumption", backref="person", lazy=True)
37
     consumptions = db.relationship("Consumption", backref="person", lazy=True)
36
 
38
 
37
     def __repr__(self) -> str:
39
     def __repr__(self) -> str:
38
-        return f"<Person {self.person_id}: {self.name}>"
40
+        return f"<Person {self.person_id}: {self.full_name}>"
39
 
41
 
40
     @property
42
     @property
41
     def as_dict(self) -> dict:
43
     def as_dict(self) -> dict:
42
         return {
44
         return {
43
             "person_id": self.person_id,
45
             "person_id": self.person_id,
44
             "active": self.active,
46
             "active": self.active,
45
-            "name": self.name,
47
+            "full_name": self.full_name,
48
+            "display_name": self.display_name,
46
             "consumptions": {
49
             "consumptions": {
47
                 ct.consumption_type_id: Consumption.query.filter_by(person=self)
50
                 ct.consumption_type_id: Consumption.query.filter_by(person=self)
48
                 .filter_by(settlement=None)
51
                 .filter_by(settlement=None)
141
                 .filter_by(reversed=False)
144
                 .filter_by(reversed=False)
142
                 .filter_by(consumption_type=c_type)
145
                 .filter_by(consumption_type=c_type)
143
                 .group_by(Consumption.person_id)
146
                 .group_by(Consumption.person_id)
144
-                .order_by(Person.name)
147
+                .order_by(Person.full_name)
145
                 .outerjoin(Person)
148
                 .outerjoin(Person)
146
                 .with_entities(
149
                 .with_entities(
147
                     Person.person_id,
150
                     Person.person_id,
148
-                    Person.name,
151
+                    Person.full_name,
149
                     func.count(Consumption.consumption_id),
152
                     func.count(Consumption.consumption_id),
150
                 )
153
                 )
151
                 .all()
154
                 .all()
202
     reversed = db.Column(db.Boolean, default=False, nullable=False)
205
     reversed = db.Column(db.Boolean, default=False, nullable=False)
203
 
206
 
204
     def __repr__(self) -> str:
207
     def __repr__(self) -> str:
205
-        return f"<Consumption: {self.consumption_type.name} for {self.person.name}>"
208
+        return f"<Consumption: {self.consumption_type.name} for {self.person.full_name}>"
206
 
209
 
207
     @property
210
     @property
208
     def as_dict(self) -> dict:
211
     def as_dict(self) -> dict:
253
 @app.route("/people", methods=["GET"])
256
 @app.route("/people", methods=["GET"])
254
 def get_people():
257
 def get_people():
255
     """ Return a list of currently known people. """
258
     """ Return a list of currently known people. """
256
-    people = Person.query.order_by(Person.name).all()
257
-    q = Person.query.order_by(Person.name)
259
+    people = Person.query.order_by(Person.full_name).all()
260
+    q = Person.query.order_by(Person.full_name)
258
     if request.args.get("active"):
261
     if request.args.get("active"):
259
         active_status = request.args.get("active", type=int)
262
         active_status = request.args.get("active", type=int)
260
         q = q.filter_by(active=active_status)
263
         q = q.filter_by(active=active_status)

+ 30 - 0
piket_server/alembic/versions/cca57457a0a6_add_aardbei_fields.py

1
+"""Add Aardbei fields
2
+
3
+Revision ID: cca57457a0a6
4
+Revises: 2f3a49058a67
5
+Create Date: 2019-09-05 21:38:28.489281
6
+
7
+"""
8
+from alembic import op
9
+import sqlalchemy as sa
10
+
11
+
12
+# revision identifiers, used by Alembic.
13
+revision = "cca57457a0a6"
14
+down_revision = "2f3a49058a67"
15
+branch_labels = None
16
+depends_on = None
17
+
18
+
19
+def upgrade():
20
+    with op.batch_alter_table("people") as batch_op:
21
+        batch_op.alter_column("name", new_column_name="full_name")
22
+        batch_op.add_column(sa.Column("aardbei_id", sa.Integer(), nullable=True))
23
+        batch_op.add_column(sa.Column("display_name", sa.String(), nullable=True))
24
+
25
+
26
+def downgrade():
27
+    with op.batch_alter_table("people") as batch_op:
28
+        batch_op.alter_column("full_name", new_column_name="name")
29
+        batch_op.drop_column("aardbei_id")
30
+        batch_op.drop_column("display_name")