Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions app/hackathon_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,9 @@
REIMBURSEMENT_ENABLED = True
DEFAULT_REIMBURSEMENT_AMOUNT = 100
CURRENCY = "€"
REIMBURSEMENT_EXPIRY_DATE = timezone.datetime(
2026, 5, 2, 17, 00, tzinfo=timezone.pytz.timezone(TIME_ZONE)
)
REIMBURSEMENT_REQUIREMENTS = "You have to submit a project and demo it during the event in order to get reimbursed"
REIMBURSEMENT_DEADLINE = timezone.datetime(
2026, 5, 5, 23, 59, tzinfo=timezone.pytz.timezone(TIME_ZONE)
)
REIMBURSEMENT_EXPIRY_DATE = timezone.datetime(2026, 4, 4, 17, 00, tzinfo=timezone.pytz.timezone(TIME_ZONE))
REIMBURSEMENT_REQUIREMENTS = 'You have to submit a project and demo it during the event in order to get reimbursed'
REIMBURSEMENT_DEADLINE = timezone.datetime(2026, 4, 4, 23, 59, tzinfo=timezone.pytz.timezone(TIME_ZONE))

# (OPTIONAL) Max team members. Defaults to 4
TEAMS_ENABLED = True
Expand Down
4 changes: 2 additions & 2 deletions cronjob
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
6 */2 * * * root /usr/local/bin/python /code/manage.py expire_applications
# Run expire reimbursements job at 6 minutes past the hour, every 2 hours
36 */2 * * * root /usr/local/bin/python /code/manage.py expire_reimbursements
# Run send devpost emails job every Sunday at 20:00
0 20 * * 0 root /usr/local/bin/python /code/manage.py send_devpost_emails
# Run send devpost emails job every Sunday at 20:00 server va 1 hora abans
0 19 * * 0 root /usr/local/bin/python /code/manage.py send_devpost_emails
6 changes: 2 additions & 4 deletions reimbursement/templates/mails/devpost_upload_message.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
<p> Hey {{ app.user.get_full_name }},</p>
<br>
<p>HackUPC has officially come to an end, and we hope you enjoyed the event as much as we did!</p>
<p>The next step to get your travel reimbursement is to upload the link to your project on Devpost. This will allow us
<p>The next step to get your travel reimbursement is to <b>upload the link</b> to your project on Devpost. This will allow us
to validate your submission and verify that the project is valid and that it complies with the requirements that
were previously communicated.</p>

<p>Upload your link here: <a
href="https://my.hackupc.com/reimbursement/dash_board/">https://my.hackupc.com/reimbursement/dash_board/</a>.
</p>
<p>Upload your link here: </p>

{% include 'mails/include/email_button.html' with text='Upload Devpost link' url=form_url %}

Expand Down
2 changes: 1 addition & 1 deletion reimbursement/templates/mails/devpost_upload_subject.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[ACTION REQUIRED] Upload your Devpost link
Upload your Devpost link
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[IMPORTANT INFORMATION] Your reimbursement has been invalidated
12 changes: 6 additions & 6 deletions reimbursement/templates/mails/ticket_accepted_message.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,22 @@

<p><b>Regarding the project:</b></p>
<ul>
<li>The participant must demo a valid project to the HackUPC judges.</li>
<li>The Devpost username must be similar to the participant’s real name. Usernames that do not reasonably resemble
<li>The participant must demo a <b>valid project</b> to the HackUPC judges.</li>
<li>The <b>Devpost username</b> must be similar to the participant’s real name. Usernames that do not reasonably resemble
the real name (e.g. TheBest) will not be accepted.</li>
<li>The completeness of the GitHub repository will be taken into account, including aspects such as regular commits
<li>The <b>completeness</b> of the GitHub repository will be taken into account, including aspects such as regular commits
throughout the weekend.</li>
</ul>

<p><b>Regarding the attendance:</b></p>
<ul>
<li>It must be demonstrable that the participant attended the event and stayed at the venue for a minimum period of
participation. Attendance to meals, activities, workshops, and other official event activities may be taken into
<li>It must be demonstrable that the participant attended the event and stayed at the venue for a <b>minimum period of
participation</b>. Attendance to meals, activities, workshops, and other official event activities may be taken into
account to verify participation.</li>
</ul>

<p>The money will be transferred to the participant using PayPal in the following 60 days after the event. The paypal
account MUST exist.</p>
account <b>MUST exist.</b></p>

{% include 'mails/include/closing.html' with travel="true" %}
{% endblock %}
38 changes: 25 additions & 13 deletions reimbursement/templates/mails/travel_tickets_upload_message.html
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
{% extends 'base_email.html' %}
{% block preheader %}Upload your travel tickets{% endblock %}
{% block preheader %}Upload your travel ticket{% endblock %}

{% block content %}
<p> Hey {{ app.user.get_full_name }},</p>
<p>Hey {{ app.user.get_full_name }},</p>
<br>
<p>For us to accept your travel reimbursement request, you need to upload VALID travel tickets in <a
href="https://my.hackupc.com/reimbursement/dash_board/">https://my.hackupc.com/reimbursement/dash_board/</a>.
</p>
<p>A ticket is considered valid if and only if:</p>

<p>Congratulations on being accepted to HackUPC 2026! 🎉</p>

<p>We noticed that you selected the travel reimbursement option. To proceed, please upload a <b>valid travel ticket</b> to your MyHackUPC dashboard as soon as possible.</p>

{% include 'mails/include/email_button.html' with text='Upload ticket' url=form_url %}

<p><b>A ticket will be considered valid only if:</b></p>
<ul>
<li>The receipts are in the name of the participant requesting the reimbursement.</li>
<li>It includes a detailed price breakdown, the purchase date, and the travel dates, clearly indicating which costs
correspond to the travel itself and which relate to additional services (e.g. extra luggage).</li>
<li>The travel dates are within one week before or one week after the event.</li>
<li>The ticket is uploaded before the start of the event.</li>
<li>We only accept bus, plane or train tickets.</li>
<li>The receipt is issued <b>in the name of the participant</b> requesting the reimbursement.</li>
<li>It includes a <b>detailed price breakdown</b>, the <b>purchase date</b>, the <b>travel dates</b>, and a clear distinction between the <b>basic fare</b> and any additional services (e.g., extra luggage, seat selection, insurance). Any additional service will be discounted.</li>
<li>The travel dates are <b>within one week before or after the event</b> (between <b>April 21st and May 5th, inclusive).</b></li>
<li>The ticket is uploaded <b>before the start of the event.</b></li>
<li>You have a <b>valid PayPal account</b> to receive the reimbursement.</li>
</ul>

{% include 'mails/include/email_button.html' with text='Upload tickets' url=form_url %}
<br>

<p><b>Reimbursement Policy</b></p>
<p>The reimbursed amount will be the <b>minimum of:</b></p>
<ul>
<li>50% of your travel expenses (calculated based on the basic fare only), and</li>
<li>The maximum amount assigned to your destination, determined by the organizing team based on budget and demand.</li>
</ul>

{% include 'mails/include/closing.html' with travel="true" %}
{% endblock %}
{% endblock %}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[ACTION REQUIRED] Upload your travel tickets
Upload your travel tickets
1 change: 1 addition & 0 deletions reimbursement/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ def post(self, request, *args, **kwargs):
if a_form.is_valid():
a_form.save(commit=False)
a_form.instance.accept_receipt(request.user)
emails.create_ticket_accepted_email(a_form.instance, request).send()
a_form.save()
messages.success(request, "Receipt accepted")
else:
Expand Down