diff --git a/.env_sample b/.env_sample index 26c9337bd..b3f62d157 100644 --- a/.env_sample +++ b/.env_sample @@ -16,8 +16,8 @@ MAX_EXECUTION_TIME_LIMIT=600 # time limit for the default queue (in seconds) DOMAIN_NAME=localhost:80 # SSL style domain definition +TLS_EMAIL=your@email.com # DOMAIN_NAME=example.com:443 -# TLS_EMAIL=your@email.com RABBITMQ_HOST=rabbit RABBITMQ_DEFAULT_USER=rabbit-username diff --git a/Caddyfile b/Caddyfile index 49d03f690..8b31649fb 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,29 +1,35 @@ {$DOMAIN_NAME} { - # HTTPS options: + # HTTPS Options tls {$TLS_EMAIL} + # Test HTTPS setup # tls {$TLS_EMAIL} { # ca https://acme-staging-v02.api.letsencrypt.org/directory # } + # Removing some headers for improved security: - header / -Server + header -Server # Serves static files, should be the same as `STATIC_ROOT` setting: - root /var/www/django - - # Serving dynamic requests: - proxy / django:8000 { - except /static /media - transparent - websocket + root * /var/www/django + file_server + + @noStatic { + not path /static/* + not path /media/* } + + # Serving dynamic requests: + reverse_proxy @noStatic django:8000 # Allows to use `.gz` files when available: - gzip + encode gzip # Logs: - log stdout - errors stdout + log { + output stdout + format console + } } diff --git a/docker-compose.yml b/docker-compose.yml index 08e7a5c84..75fe7c448 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,14 +4,15 @@ services: # Web Services #----------------------------------------------- caddy: - image: abiosoft/caddy:1.0.3 + image: caddy:2.7.6 env_file: .env environment: - ACME_AGREE=true volumes: - - ./Caddyfile:/etc/Caddyfile + - ./Caddyfile:/etc/caddy/Caddyfile - ./src/staticfiles:/var/www/django/static - - ./certs/caddy:/etc/caddycerts + - ./caddy_data:/data + - ./caddy_config:/config restart: unless-stopped ports: - 80:80 @@ -42,8 +43,8 @@ services: tty: true logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" #----------------------------------------------- @@ -99,8 +100,8 @@ services: restart: unless-stopped logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" #----------------------------------------------- @@ -120,8 +121,8 @@ services: restart: unless-stopped logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" #----------------------------------------------- # Rabbitmq & Flower monitoring tool @@ -148,8 +149,8 @@ services: restart: unless-stopped logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" flower: # image: mher/flower @@ -166,8 +167,8 @@ services: - rabbit logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" #----------------------------------------------- # Redis @@ -179,8 +180,8 @@ services: restart: unless-stopped logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" #----------------------------------------------- # Celery Service @@ -200,8 +201,8 @@ services: restart: unless-stopped logging: options: - max-size: "20k" - max-file: "10" + max-size: "20m" + max-file: "5" deploy: resources: limits: @@ -230,5 +231,5 @@ services: - CODALAB_IGNORE_CLEANUP_STEP=1 logging: options: - max-size: "20k" - max-file: "10" \ No newline at end of file + max-size: "20m" + max-file: "5" diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index 48c26bec4..2e0cb7336 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -261,8 +261,10 @@ def save(self, *args, **kwargs): pass elif not self.logo_icon: self.make_logo_icon() + self.save() elif os.path.dirname(self.logo.name) != os.path.dirname(self.logo_icon.name): self.make_logo_icon() + self.save() to_create = User.objects.filter( Q(id=self.created_by_id) | Q(id__in=self.collaborators.all().values_list('id', flat=True)) ).exclude(id__in=self.participants.values_list('user_id', flat=True)).distinct() diff --git a/src/static/riot/competitions/detail/_tabs.tag b/src/static/riot/competitions/detail/_tabs.tag index 1a9769790..6c3fff6f8 100644 --- a/src/static/riot/competitions/detail/_tabs.tag +++ b/src/static/riot/competitions/detail/_tabs.tag @@ -33,7 +33,7 @@ data-tab="_tab_page_term"> Terms -
+
Files
diff --git a/src/static/riot/competitions/detail/submission_upload.tag b/src/static/riot/competitions/detail/submission_upload.tag index 75ecc8b2f..49fe64f01 100644 --- a/src/static/riot/competitions/detail/submission_upload.tag +++ b/src/static/riot/competitions/detail/submission_upload.tag @@ -61,7 +61,7 @@ diff --git a/src/templates/emails/base_email.html b/src/templates/emails/base_email.html index 903e75e33..9ea0c1a89 100644 --- a/src/templates/emails/base_email.html +++ b/src/templates/emails/base_email.html @@ -7,23 +7,33 @@ +
+
+

Hello{% if user %} {{ user.username }}{% endif %},

- {% block title %} {% endblock %} @@ -92,13 +103,16 @@

Hello{% if user %} {{ user.username }}{% endif %},

{% if not mass_email %}

Thanks,

-

Codabench Team

+
+ codabench_logo +
{% endif %} - +
+
diff --git a/src/templates/emails/participation/organizer/participation_accepted.html b/src/templates/emails/participation/organizer/participation_accepted.html index 703744f68..f25d3dfc9 100644 --- a/src/templates/emails/participation/organizer/participation_accepted.html +++ b/src/templates/emails/participation/organizer/participation_accepted.html @@ -1,9 +1,6 @@ {% extends 'emails/base_email.html' %} {% block content %} -

The user {{ participant.user.username }} was accepted into your competition:

- {{ participant.competition.title }} - -

Participants can be managed from the admin tab of your competition

+

We're writing to inform you that user {{ participant.user.username }} has been accepted into your competition + {{ participant.competition.title }}.You can manage all participants from the admin panel of your competition.

{% endblock %} diff --git a/src/templates/emails/participation/organizer/participation_accepted.txt b/src/templates/emails/participation/organizer/participation_accepted.txt index 4d1669e44..f25d3dfc9 100644 --- a/src/templates/emails/participation/organizer/participation_accepted.txt +++ b/src/templates/emails/participation/organizer/participation_accepted.txt @@ -1,8 +1,6 @@ -{% extends 'emails/base_email.txt' %} +{% extends 'emails/base_email.html' %} {% block content %} -The user {{ participant.user.username }} was accepted into your competition: -{{ participant.competition.title }} -> http://{{ site.domain }}{{ participant.competition.get_absolute_url }} - -Participants can be managed from the admin tab of your competition +

We're writing to inform you that user {{ participant.user.username }} has been accepted into your competition + {{ participant.competition.title }}.You can manage all participants from the admin panel of your competition.

{% endblock %} diff --git a/src/templates/emails/participation/organizer/participation_denied.html b/src/templates/emails/participation/organizer/participation_denied.html index 5eb320e01..43ec224c0 100644 --- a/src/templates/emails/participation/organizer/participation_denied.html +++ b/src/templates/emails/participation/organizer/participation_denied.html @@ -1,9 +1,6 @@ {% extends 'emails/base_email.html' %} {% block content %} -

The user {{ participant.user.username }} was denied permission to your competition:

- {{ participant.competition.title }} - -

Participants can be managed from the admin tab of your competition.

+

We're writing to inform you that user {{ participant.user.username }} has been denied to your competition + {{ participant.competition.title }}.You can manage all participants from the admin panel of your competition.

{% endblock %} diff --git a/src/templates/emails/participation/organizer/participation_denied.txt b/src/templates/emails/participation/organizer/participation_denied.txt index babba7aac..43ec224c0 100644 --- a/src/templates/emails/participation/organizer/participation_denied.txt +++ b/src/templates/emails/participation/organizer/participation_denied.txt @@ -1,8 +1,6 @@ -{% extends 'emails/base_email.txt' %} +{% extends 'emails/base_email.html' %} {% block content %} -The user {{ participant.user.username }} was revoked permission to your competition: -{{ participant.competition.title }} -> http://{{ site.domain }}{{ participant.competition.get_absolute_url }} - -Participants can be managed from the admin tab of your competition +

We're writing to inform you that user {{ participant.user.username }} has been denied to your competition + {{ participant.competition.title }}.You can manage all participants from the admin panel of your competition.

{% endblock %} diff --git a/src/templates/emails/participation/organizer/participation_requested.html b/src/templates/emails/participation/organizer/participation_requested.html index 87b79dbf3..dad10d911 100644 --- a/src/templates/emails/participation/organizer/participation_requested.html +++ b/src/templates/emails/participation/organizer/participation_requested.html @@ -1,8 +1,6 @@ {% extends 'emails/base_email.html' %} {% block content %} -

The user {{ participant.user.username }} requested access to your competition:

- {{ participant.competition.title }} -

Participants can be managed from the admin tab of your competition

+

We're writing to inform you that user {{ participant.user.username }} has requested access to your competition + {{ participant.competition.title }}.You can manage all participants from the admin panel of your competition.

{% endblock %} diff --git a/src/templates/emails/participation/organizer/participation_requested.txt b/src/templates/emails/participation/organizer/participation_requested.txt index e72c1b72a..dad10d911 100644 --- a/src/templates/emails/participation/organizer/participation_requested.txt +++ b/src/templates/emails/participation/organizer/participation_requested.txt @@ -1,8 +1,6 @@ -{% extends 'emails/base_email.txt' %} +{% extends 'emails/base_email.html' %} {% block content %} -The user {{ participant.user.username }} requested access to your competition: -{{ participant.competition.title }} -> http://{{ site.domain }}{{ participant.competition.get_absolute_url }} - -Participants can be managed from the admin tab of your competition +

We're writing to inform you that user {{ participant.user.username }} has requested access to your competition + {{ participant.competition.title }}.You can manage all participants from the admin panel of your competition.

{% endblock %} diff --git a/src/templates/emails/participation/participant/participation_accepted.html b/src/templates/emails/participation/participant/participation_accepted.html index 3db6a7e9b..27a0ddfd9 100644 --- a/src/templates/emails/participation/participant/participation_accepted.html +++ b/src/templates/emails/participation/participant/participation_accepted.html @@ -1,8 +1,11 @@ {% extends 'emails/base_email.html' %} {% block content %} -

This is a message updating your access to the competition:

+

We're thrilled to inform you that your application for the {{ participant.competition.title }} - -

Your status has been accepted!

+ competition has been accepted. Get ready to showcase your skills and compete with other talented individuals.

+

We look forward to seeing your participation.

{% endblock %} + + + diff --git a/src/templates/emails/participation/participant/participation_accepted.txt b/src/templates/emails/participation/participant/participation_accepted.txt index 04a0f8702..27a0ddfd9 100644 --- a/src/templates/emails/participation/participant/participation_accepted.txt +++ b/src/templates/emails/participation/participant/participation_accepted.txt @@ -1,9 +1,11 @@ -{% extends 'emails/base_email.txt' %} +{% extends 'emails/base_email.html' %} {% block content %} -This is a message updating your access to the competition: -{{ participant.competition.title }} -> http://{{ site.domain }}{{ participant.competition.get_absolute_url }} +

We're thrilled to inform you that your application for the + {{ participant.competition.title }} + competition has been accepted. Get ready to showcase your skills and compete with other talented individuals.

+

We look forward to seeing your participation.

+{% endblock %} + -Your status has been accepted! -{% endblock %} diff --git a/src/templates/emails/participation/participant/participation_denied.html b/src/templates/emails/participation/participant/participation_denied.html index 8a08d054f..23d4701be 100644 --- a/src/templates/emails/participation/participant/participation_denied.html +++ b/src/templates/emails/participation/participant/participation_denied.html @@ -1,9 +1,14 @@ {% extends 'emails/base_email.html' %} {% block content %} -

This is a message updating your access to the competition:

+

We're writing to inform you about your application for the {{ participant.competition.title }} - -

Your participation privileges have been denied.

+ competition. While your application was carefully considered, we regret to inform you that your participation privileges + have been denied. We encourage you to review the competition details and rules to see if there are areas where you can + improve your application for future competitions.

+

Thank you for your interest in the competition. We wish you the best of luck in your future endeavors. +

{% endblock %} + + diff --git a/src/templates/emails/participation/participant/participation_denied.txt b/src/templates/emails/participation/participant/participation_denied.txt index 13e72711e..23d4701be 100644 --- a/src/templates/emails/participation/participant/participation_denied.txt +++ b/src/templates/emails/participation/participant/participation_denied.txt @@ -1,9 +1,14 @@ -{% extends 'emails/base_email.txt' %} +{% extends 'emails/base_email.html' %} {% block content %} -This is a message updating your access to the competition: -{{ participant.competition.title }} -> http://{{ site.domain }}{{ participant.competition.get_absolute_url }} - -Your participation privileges have been denied. +

We're writing to inform you about your application for the + {{ participant.competition.title }} + competition. While your application was carefully considered, we regret to inform you that your participation privileges + have been denied. We encourage you to review the competition details and rules to see if there are areas where you can + improve your application for future competitions.

+

Thank you for your interest in the competition. We wish you the best of luck in your future endeavors. +

{% endblock %} + + diff --git a/src/templates/emails/participation/participant/participation_requested.html b/src/templates/emails/participation/participant/participation_requested.html index 3e1f98098..582d174b5 100644 --- a/src/templates/emails/participation/participant/participation_requested.html +++ b/src/templates/emails/participation/participant/participation_requested.html @@ -1,8 +1,12 @@ {% extends 'emails/base_email.html' %} {% block content %} -

This is a message confirming you have requested access to the competition:

+

Thanks for your interest in the {{ participant.competition.title }} + competition. We have received your request to participate.

-

You will be notified if your participation status is approved or denied.

+

We will carefully review your application and notify you by email regarding your participation status (accepted or denied). + In the meantime, you can review the competition details and rules to familiarize yourself with the challenge.

+ +

We look forward to your participation!

{% endblock %} diff --git a/src/templates/emails/participation/participant/participation_requested.txt b/src/templates/emails/participation/participant/participation_requested.txt index 2a208fe0b..582d174b5 100644 --- a/src/templates/emails/participation/participant/participation_requested.txt +++ b/src/templates/emails/participation/participant/participation_requested.txt @@ -1,8 +1,12 @@ -{% extends 'emails/base_email.txt' %} +{% extends 'emails/base_email.html' %} {% block content %} -This is a message confirming you have requested access to the competition: -{{ participant.competition }} -> http://{{ site.domain }}{{ participant.competition.get_absolute_url }} +

Thanks for your interest in the + {{ participant.competition.title }} + competition. We have received your request to participate.

-You will be notified if your participation status is approved or denied. +

We will carefully review your application and notify you by email regarding your participation status (accepted or denied). + In the meantime, you can review the competition details and rules to familiarize yourself with the challenge.

+ +

We look forward to your participation!

{% endblock %}