diff --git a/backend/hoagiemail/api/mail_view.py b/backend/hoagiemail/api/mail_view.py
index 8eb7478..05c0baa 100644
--- a/backend/hoagiemail/api/mail_view.py
+++ b/backend/hoagiemail/api/mail_view.py
@@ -7,6 +7,7 @@
from rest_framework.response import Response
from rest_framework.views import APIView
+from hoagiemail.email import get_listservs
from hoagiemail.email.limiter import Visitor
from hoagiemail.email.mailjet_client import get_mailjet_client
from hoagiemail.email.sanitize import sanitize_html
@@ -120,20 +121,6 @@ def delete(self, request) -> Response:
return Response({"status": "OK", "message": "Scheduled mail deleted successfully"}, status=status.HTTP_200_OK)
-def get_listservs():
- """Returns list of college listserv recipients"""
- return [
- {"Email": "BUTLERBUZZ@PRINCETON.EDU", "Name": "Butler"},
- {"Email": "WHITMANWIRE@PRINCETON.EDU", "Name": "Whitman"},
- {"Email": "RockyWire@PRINCETON.EDU", "Name": "Rocky"},
- {"Email": "Re-INNformer@PRINCETON.EDU", "Name": "Forbes"},
- {"Email": "westwire@princeton.edu", "Name": "NCW"},
- {"Email": "matheymail@PRINCETON.EDU", "Name": "Mathey"},
- {"Email": "yehyellowpages@princeton.edu", "Name": "Yeh"},
- {"Email": "hoagiemailgradstudents@princeton.edu", "Name": "hoagiemailgradstudents"},
- ]
-
-
def create_message(mail_data, sender_email, to_email):
"""
Creates mailjet message structure.
diff --git a/backend/hoagiemail/email/__init__.py b/backend/hoagiemail/email/__init__.py
new file mode 100644
index 0000000..bd3ac5e
--- /dev/null
+++ b/backend/hoagiemail/email/__init__.py
@@ -0,0 +1,12 @@
+def get_listservs():
+ """Returns list of college listserv recipients"""
+ return [
+ {"Email": "BUTLERBUZZ@PRINCETON.EDU", "Name": "Butler"},
+ {"Email": "WHITMANWIRE@PRINCETON.EDU", "Name": "Whitman"},
+ {"Email": "RockyWire@PRINCETON.EDU", "Name": "Rocky"},
+ {"Email": "Re-INNformer@PRINCETON.EDU", "Name": "Forbes"},
+ {"Email": "westwire@princeton.edu", "Name": "NCW"},
+ {"Email": "matheymail@PRINCETON.EDU", "Name": "Mathey"},
+ {"Email": "yehyellowpages@princeton.edu", "Name": "Yeh"},
+ {"Email": "hoagiemailgradstudents@princeton.edu", "Name": "hoagiemailgradstudents"},
+ ]
diff --git a/backend/hoagiemail/stuff/digest.py b/backend/hoagiemail/stuff/digest.py
new file mode 100644
index 0000000..fa887b1
--- /dev/null
+++ b/backend/hoagiemail/stuff/digest.py
@@ -0,0 +1,209 @@
+import logging
+from datetime import timedelta
+from os import getenv
+from typing import Final, Iterable, TypedDict
+
+from django.utils import timezone
+
+from hoagiemail.email import get_listservs
+from hoagiemail.email.mailjet_client import get_mailjet_client
+from hoagiemail.models import StuffPost
+
+REQUEST_TIMEOUT: Final[timedelta] = timedelta(seconds=10)
+SUMMER: Final[bool] = False
+HOAGIE_SANDWICH_LOGO: Final[str] = "
"
+LOGO: Final[str] = "
"
+IS_PRODUCTON: Final[bool] = getenv("HOAGIE_MODE") == "production"
+
+logger = logging.getLogger(__name__)
+
+
+def link(text: str, link: str) -> str:
+ return f"{text}"
+
+
+def link_mail(text: str) -> str:
+ return link(text, "mailto:" + text)
+
+
+def format_tag(text: str) -> str:
+ return f'{text.title()}'
+
+
+def add_tags(email: str, tags: Iterable[str]) -> str:
+ email += "
Here is a digest of posts made to Hoagie Stuff
Here is a weekly digest of posts made to Hoagie Stuff,
+ from Sales to Lost & Found and more, sent every Tuesday, Thursday, and Saturday.
+ Open Hoagie Stuff | + Add your message to next digest | + Give feedback +
+That's all! This could have been {len(digest)} emails in your inbox but instead it is just one!
You don't need to wait for the next digest to see what's new, check out the Hoagie Stuff + to keep up to date with the latest posts before others.
+