diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..11bfbc4 --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +python 3.9.7 +nodejs 10.24.1 diff --git a/packet/models.py b/packet/models.py index f22e467..dfb2fe5 100644 --- a/packet/models.py +++ b/packet/models.py @@ -129,6 +129,13 @@ def open_packets(cls) -> list['Packet']: """ return cls.query.filter(cls.start < datetime.now(), cls.end > datetime.now()).all() + @classmethod + def opened_after(cls, date: datetime) -> list['Packet']: + """ + Helper method for fetching all packets opened after a given date + """ + return cls.query.filter(cls.start > date).all() + @classmethod def by_id(cls, packet_id: int) -> 'Packet': """ diff --git a/packet/routes/admin.py b/packet/routes/admin.py index 96a877b..f4ae1ca 100644 --- a/packet/routes/admin.py +++ b/packet/routes/admin.py @@ -1,3 +1,5 @@ +import datetime + from flask import render_template from packet import app @@ -29,6 +31,28 @@ def admin_packets(info=None): info=info) +@app.route('/admin/past-packets') +@log_cache +@packet_auth +@admin_auth +@before_request +@log_time +def admin_past_packets(info=None): + open_packets = Packet.opened_after(datetime.date.today() - datetime.timedelta(days=(30 * 4))) + + # Pre-calculate and store the return values of did_sign(), signatures_received(), and signatures_required() + for packet in open_packets: + packet.did_sign_result = packet.did_sign(info['uid'], app.config['REALM'] == 'csh') + packet.signatures_received_result = packet.signatures_received() + packet.signatures_required_result = packet.signatures_required() + + open_packets.sort(key=packet_sort_key, reverse=False) + + return render_template('admin_past_packets.html', + open_packets=open_packets, + info=info) + + @app.route('/admin/freshmen') @log_cache @packet_auth diff --git a/packet/templates/admin_past_packets.html b/packet/templates/admin_past_packets.html new file mode 100644 index 0000000..71261c8 --- /dev/null +++ b/packet/templates/admin_past_packets.html @@ -0,0 +1,21 @@ +{% extends "extend/base.html" %} + +{% block body %} +