Phase 3.1: Add remaining local files

This commit is contained in:
jessikitty committed 2026-02-05 16:04:20 +11:00
commit c4706f1779
26 files changed
+1780 -1

No files matched your search

+4
View File
@@ -1,3 +1,4 @@
<<<<<<< HEAD
import sys
import os
from datetime import datetime, timedelta
@@ -225,3 +226,6 @@ def init_db():
if __name__ == "__main__":
init_db()
=======
aW1wb3J0IHN5cwppbXBvcnQgb3MKZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQoKIyBBZGQgdGhlIGFwcCBkaXJlY3RvcnkgdG8gdGhlIHBhdGgKc3lzLnBhdGguaW5zZXJ0KDAsICcvYXBwJykKCmZyb20gc3FsYWxjaGVteSBpbXBvcnQgY3JlYXRlX2VuZ2luZQpmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBzZXNzaW9ubWFrZXIKZnJvbSBhcHAuZGIuYmFzZSBpbXBvcnQgQmFzZQpmcm9tIGFwcC5tb2RlbHMudXNlciBpbXBvcnQgVXNlcgpmcm9tIGFwcC5tb2RlbHMuY2hvcmUgaW1wb3J0IENob3JlCmZyb20gYXBwLmNvcmUuc2VjdXJpdHkgaW1wb3J0IGdldF9wYXNzd29yZF9oYXNoCgojIERhdGFiYXNlIHNldHVwCkRBVEFCQVNFX1VSTCA9ICJzcWxpdGU6Ly8vLi9mYW1pbHlfaHViLmRiIgplbmdpbmUgPSBjcmVhdGVfZW5naW5lKERBVEFCQVNFX1VSTCwgY29ubmVjdF9hcmdzPXsiY2hlY2tfc2FtZV90aHJlYWQiOiBGYWxzZX0pClNlc3Npb25Mb2NhbCA9IHNlc3Npb25tYWtlcihhdXRvY29tbWl0PUZhbHNlLCBhdXRvZmx1c2g9RmFsc2UsIGJpbmQ9ZW5naW5lKQoKZGVmIGluaXRfZGIoKToKICAgICIiIkluaXRpYWxpemUgZGF0YWJhc2Ugd2l0aCBzY2hlbWEgYW5kIGRlbW8gZGF0YSIiIgogICAgcHJpbnQoIkNyZWF0aW5nIGFsbCB0YWJsZXMuLi4iKQogICAgQmFzZS5tZXRhZGF0YS5jcmVhdGVfYWxsKGJpbmQ9ZW5naW5lKQogICAgCiAgICBkYiA9IFNlc3Npb25Mb2NhbCgpCiAgICAKICAgIHRyeToKICAgICAgICAjIENoZWNrIGlmIHVzZXJzIGFscmVhZHkgZXhpc3QKICAgICAgICBleGlzdGluZ191c2VycyA9IGRiLnF1ZXJ5KFVzZXIpLmNvdW50KCkKICAgICAgICBpZiBleGlzdGluZ191c2VycyA+IDA6CiAgICAgICAgICAgIHByaW50KGYiRGF0YWJhc2UgYWxyZWFkeSBoYXMge2V4aXN0aW5nX3VzZXJzfSB1c2Vycy4gU2tpcHBpbmcgaW5pdGlhbGl6YXRpb24uIikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgCiAgICAgICAgcHJpbnQoIkNyZWF0aW5nIGZhbWlseSBtZW1iZXJzLi4uIikKICAgICAgICAjIENyZWF0ZSBmYW1pbHkgbWVtYmVycwogICAgICAgIHVzZXJzX2RhdGEgPSBbCiAgICAgICAgICAgIHsidXNlcm5hbWUiOiAibG91IiwgImVtYWlsIjogImxvdUBmYW1pbHkubG9jYWwiLCAiZnVsbF9uYW1lIjogIkxvdSIsICJpc19hZG1pbiI6IEZhbHNlfSwKICAgICAgICAgICAgeyJ1c2VybmFtZSI6ICJqZXNzIiwgImVtYWlsIjogImplc3NAZmFtaWx5LmxvY2FsIiwgImZ1bGxfbmFtZSI6ICJKZXNzIiwgImlzX2FkbWluIjogVHJ1ZX0sCiAgICAgICAgICAgIHsidXNlcm5hbWUiOiAid2lsbGlhbSIsICJlbWFpbCI6ICJ3aWxsaWFtQGZhbWlseS5sb2NhbCIsICJmdWxsX25hbWUiOiAiV2lsbGlhbSIsICJpc19hZG1pbiI6IEZhbHNlfSwKICAgICAgICAgICAgeyJ1c2VybmFtZSI6ICJ4YW5kZXIiLCAiZW1haWwiOiAieGFuZGVyQGZhbWlseS5sb2NhbCIsICJmdWxsX25hbWUiOiAiWGFuZGVyIiwgImlzX2FkbWluIjogRmFsc2V9LAogICAgICAgICAgICB7InVzZXJuYW1lIjogImJlbGxhIiwgImVtYWlsIjogImJlbGxhQGZhbWlseS5sb2NhbCIsICJmdWxsX25hbWUiOiAiQmVsbGEiLCAiaXNfYWRtaW4iOiBGYWxzZX0sCiAgICAgICAgXQogICAgICAgIAogICAgICAgIHVzZXJzID0ge30KICAgICAgICBmb3IgdXNlcl9kYXRhIGluIHVzZXJzX2RhdGE6CiAgICAgICAgICAgIHVzZXIgPSBVc2VyKAogICAgICAgICAgICAgICAgdXNlcm5hbWU9dXNlcl9kYXRhWyJ1c2VybmFtZSJdLAogICAgICAgICAgICAgICAgZW1haWw9dXNlcl9kYXRhWyJlbWFpbCJdLAogICAgICAgICAgICAgICAgZnVsbF9uYW1lPXVzZXJfZGF0YVsiZnVsbF9uYW1lIl0sCiAgICAgICAgICAgICAgICBoYXNoZWRfcGFzc3dvcmQ9Z2V0X3Bhc3N3b3JkX2hhc2goInBhc3N3b3JkMTIzIiksCiAgICAgICAgICAgICAgICBpc19hZG1pbj11c2VyX2RhdGFbImlzX2FkbWluIl0sCiAgICAgICAgICAgICAgICBpc19hY3RpdmU9VHJ1ZSwKICAgICAgICAgICAgICAgIGRpc2NvcmRfaWQ9Tm9uZSwKICAgICAgICAgICAgICAgIHByb2ZpbGVfcGljdHVyZT1Ob25lCiAgICAgICAgICAgICkKICAgICAgICAgICAgZGIuYWRkKHVzZXIpCiAgICAgICAgICAgIHVzZXJzW3VzZXJfZGF0YVsidXNlcm5hbWUiXV0gPSB1c2VyCiAgICAgICAgICAgIHByaW50KGYiICDinJMgQ3JlYXRlZCB1c2VyOiB7dXNlcl9kYXRhWydmdWxsX25hbWUnXX0gKHt1c2VyX2RhdGFbJ3VzZXJuYW1lJ119KSIpCiAgICAgICAgCiAgICAgICAgZGIuY29tbWl0KCkKICAgICAgICAKICAgICAgICAjIFJlZnJlc2ggdG8gZ2V0IElEcwogICAgICAgIGZvciB1c2VyIGluIHVzZXJzLnZhbHVlcygpOgogICAgICAgICAgICBkYi5yZWZyZXNoKHVzZXIpCiAgICAgICAgCiAgICAgICAgcHJpbnQoIlxuQ3JlYXRpbmcgZGVtbyBjaG9yZXMuLi4iKQogICAgICAgICMgQ3JlYXRlIGRlbW8gY2hvcmVzIHdpdGggdmFyaW91cyBzdGF0dXNlcyBhbmQgYXNzaWdubWVudHMKICAgICAgICB0b2RheSA9IGRhdGV0aW1lLm5vdygpCiAgICAgICAgCiAgICAgICAgZGVtb19jaG9yZXMgPSBbCiAgICAgICAgICAgICMgRGFpbHkgY2hvcmVzCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJGZWVkIHRoZSBEb2ciLAogICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkdpdmUgUmV4IGhpcyBicmVha2Zhc3QgYW5kIGRpbm5lciIsCiAgICAgICAgICAgICAgICAicm9vbSI6ICJLaXRjaGVuIiwKICAgICAgICAgICAgICAgICJmcmVxdWVuY3kiOiAiREFJTFkiLAogICAgICAgICAgICAgICAgInN0YXR1cyI6ICJDT01QTEVURUQiLAogICAgICAgICAgICAgICAgImFzc2lnbmVkX3VzZXJfaWQiOiB1c2Vyc1sid2lsbGlhbSJdLmlkLAogICAgICAgICAgICAgICAgImR1ZV9kYXRlIjogdG9kYXkucmVwbGFjZShob3VyPTIzLCBtaW51dGU9NTksIHNlY29uZD01OSksCiAgICAgICAgICAgICAgICAiY29tcGxldGVkX2F0IjogdG9kYXkucmVwbGFjZShob3VyPTgsIG1pbnV0ZT0zMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgInRpdGxlIjogIlRha2UgT3V0IFRyYXNoIiwKICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbXB0eSBhbGwgYmlucyBhbmQgdGFrZSB0byBjdXJiIiwKICAgICAgICAgICAgICAgICJyb29tIjogIktpdGNoZW4iLAogICAgICAgICAgICAgICAgImZyZXF1ZW5jeSI6ICJEQUlMWSIsCiAgICAgICAgICAgICAgICAic3RhdHVzIjogIlBFTkRJTkciLAogICAgICAgICAgICAgICAgImFzc2lnbmVkX3VzZXJfaWQiOiB1c2Vyc1sieGFuZGVyIl0uaWQsCiAgICAgICAgICAgICAgICAiZHVlX2RhdGUiOiB0b2RheS5yZXBsYWNlKGhvdXI9MjMsIG1pbnV0ZT01OSwgc2Vjb25kPTU5KSwKICAgICAgICAgICAgICAgICJjb21wbGV0ZWRfYXQiOiBOb25lCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJXYXNoIERpc2hlcyIsCiAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTG9hZCBhbmQgcnVuIHRoZSBkaXNod2FzaGVyIiwKICAgICAgICAgICAgICAgICJyb29tIjogIktpdGNoZW4iLAogICAgICAgICAgICAgICAgImZyZXF1ZW5jeSI6ICJEQUlMWSIsCiAgICAgICAgICAgICAgICAic3RhdHVzIjogIklOX1BST0dSRVNTIiwKICAgICAgICAgICAgICAgICJhc3NpZ25lZF91c2VyX2lkIjogdXNlcnNbImJlbGxhIl0Line truncated
>>>>>>> 65c71b3d67d462fe9ecc01a1c2aa17e54b626fe2