Skip to content

Commit e6659a4

Browse files
committed
Configured eager loading for the signatures relationships
1 parent d199ea4 commit e6659a4

File tree

2 files changed

+13
-39
lines changed

2 files changed

+13
-39
lines changed

packet/models.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@ class Packet(db.Model):
6161
info_achieve = Column(Text, nullable=True) # Used to fulfil the technical achievements list requirement
6262

6363
freshman = relationship("Freshman", back_populates="packets")
64-
upper_signatures = relationship("UpperSignature", order_by="UpperSignature.signed.desc(), UpperSignature.updated")
65-
fresh_signatures = relationship("FreshSignature", order_by="FreshSignature.signed.desc(), FreshSignature.updated")
66-
misc_signatures = relationship("MiscSignature", order_by="MiscSignature.updated")
64+
upper_signatures = relationship("UpperSignature", order_by="UpperSignature.signed.desc(), UpperSignature.updated",
65+
lazy="subquery")
66+
fresh_signatures = relationship("FreshSignature", order_by="FreshSignature.signed.desc(), FreshSignature.updated",
67+
lazy="subquery")
68+
misc_signatures = relationship("MiscSignature", order_by="MiscSignature.updated", lazy="subquery")
6769

6870
def is_open(self):
6971
return self.start < datetime.now() < self.end

packet/routes/shared.py

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from packet import auth, app
66
from packet.utils import before_request
77
from packet.models import MiscSignature, Packet
8-
from packet.debug_utils import log_time, log_cache
98

109

1110
@app.route('/logout')
@@ -52,43 +51,16 @@ def freshman_packet(freshman_username, packet_id, info=None):
5251
@app.route("/packets/")
5352
@auth.oidc_auth
5453
@before_request
55-
@log_time
5654
def packets(info=None):
57-
@log_time
58-
def query():
59-
return Packet.query.filter(Packet.start < datetime.now(), Packet.end > datetime.now()).all()
60-
61-
open_packets = query()
55+
open_packets = Packet.query.filter(Packet.start < datetime.now(), Packet.end > datetime.now()).all()
6256

6357
# Pre-calculate and store the return values of did_sign(), signatures_received(), and signatures_required()
64-
@log_time
65-
def prec_1():
66-
for packet in open_packets:
67-
packet.did_sign_result = packet.did_sign(info["uid"], app.config["REALM"] == "csh")
68-
69-
@log_time
70-
def prec_2():
71-
for packet in open_packets:
72-
packet.signatures_received_result = packet.signatures_received()
73-
74-
@log_time
75-
def prec_3():
76-
for packet in open_packets:
77-
packet.signatures_required_result = packet.signatures_required()
78-
79-
@log_time
80-
def sort():
81-
open_packets.sort(key=lambda packet: packet.signatures_received_result.total, reverse=True)
82-
open_packets.sort(key=lambda packet: packet.did_sign_result, reverse=True)
58+
for packet in open_packets:
59+
packet.did_sign_result = packet.did_sign(info["uid"], app.config["REALM"] == "csh")
60+
packet.signatures_received_result = packet.signatures_received()
61+
packet.signatures_required_result = packet.signatures_required()
8362

84-
@log_time
85-
def render():
86-
return render_template("active_packets.html", info=info, packets=open_packets)
63+
open_packets.sort(key=lambda packet: packet.signatures_received_result.total, reverse=True)
64+
open_packets.sort(key=lambda packet: packet.did_sign_result, reverse=True)
8765

88-
prec_1()
89-
prec_2()
90-
prec_3()
91-
sort()
92-
out = render()
93-
log_cache()
94-
return out
66+
return render_template("active_packets.html", info=info, packets=open_packets)

0 commit comments

Comments
 (0)