🌱 Add README, improve settings
This commit is contained in:
parent
c30a0cdf86
commit
c7f753cf09
|
@ -3,7 +3,7 @@ FROM python:3-alpine
|
|||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
# Install LaTeX requirements
|
||||
RUN apk add --no-cache gettext texlive nginx gcc libc-dev libffi-dev postgresql-dev
|
||||
RUN apk add --no-cache gettext texlive nginx gcc libc-dev libffi-dev postgresql-dev mariadb-connector-c-dev
|
||||
|
||||
RUN apk add --no-cache bash
|
||||
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
# Plateforme d'inscription du TFJM²
|
||||
|
||||
La plateforme du TFJM² est née pour l'édition 2020 du tournoi. D'abord codée en PHP, elle a subi une refonte totale en
|
||||
Python, à l'aide du framework Web [Django](https://www.djangoproject.com/).
|
||||
|
||||
Cette plateforme permet aux participants et encadrants de s'inscrire et de déposer leurs autorisations nécessaires.
|
||||
Ils pourront ensuite déposer leurs solutions et notes de synthèse pour le premier tour en temps voulu. La plateforme
|
||||
offre également un accès pour les organisateurs et les jurys leur permettant de communiquer avec les équipes et de
|
||||
récupérer les documents nécessaires.
|
||||
|
||||
Un wiki plus détaillé arrivera ultérieurement. L'interface organisateur et jury est vouée à être plus poussée.
|
||||
|
||||
L'instance de production est disponible à l'adresse [inscription.tfjm.org](https://inscription.tfjm.org).
|
||||
|
||||
## Installation
|
||||
|
||||
Le plus simple pour installer la plateforme est d'utiliser l'image Docker incluse, qui fait tourner un serveur Nginx
|
||||
exposé sur le port 80 avec le serveur Django. Ci-dessous une configuration Docker-Compose, à adapter selon vos besoins :
|
||||
|
||||
```yaml
|
||||
inscription-tfjm:
|
||||
build: ./inscription-tfjm
|
||||
links:
|
||||
- postgres
|
||||
ports:
|
||||
- "80:80"
|
||||
env_file:
|
||||
- ./inscription-tfjm.env
|
||||
volumes:
|
||||
# - ./inscription-tfjm:/code
|
||||
- ./inscription-tfjm/media:/code/media
|
||||
```
|
||||
|
||||
Le volume `/code` n'est à ajouter uniquement en développement, et jamais en production.
|
||||
|
||||
Il faut remplir les variables d'environnement suivantes :
|
||||
|
||||
```env
|
||||
TFJM_STAGE= # dev ou prod
|
||||
TFJM_YEAR=2021 # Année de la session du TFJM²
|
||||
DJANGO_DB_TYPE= # MySQL, PostgreSQL ou SQLite (par défaut)
|
||||
DJANGO_DB_HOST= # Hôte de la base de données
|
||||
DJANGO_DB_NAME= # Nom de la base de données
|
||||
DJANGO_DB_USER= # Utilisateur de la base de données
|
||||
DJANGO_DB_PASSWORD= # Mot de passe pour accéder à la base de données
|
||||
SMTP_HOST= # Hôte SMTP pour l'envoi de mails
|
||||
SMTP_PORT=465 # Port du serveur SMTP
|
||||
SMTP_HOST_USER= # Utilisateur du compte SMTP
|
||||
SMTP_HOST_PASSWORD= # Mot de passe du compte SMTP
|
||||
FROM_EMAIL=contact@tfjm.org # Nom de l'expéditeur des mails
|
||||
SERVER_EMAIL=contact@tfjm.org # Adresse e-mail expéditrice
|
||||
```
|
||||
|
||||
Si le type de base de données sélectionné est SQLite, la variable `DJANGO_DB_HOST` sera utilisée en guise de chemin vers
|
||||
le fichier de base de données (par défaut, `db.sqlite3`).
|
||||
|
||||
En développement, il est recommandé d'utiliser SQLite pour des raisons de simplicité. Les paramètres de mail ne seront
|
||||
pas utilisés, et les mails qui doivent être envoyés seront envoyés dans la console.
|
||||
|
||||
En production, il est recommandé de ne pas utiliser SQLite pour des raisons de performances.
|
||||
|
||||
La dernière différence entre le développment et la production est qu'en développement, chaque modification d'un fichier
|
||||
est détectée et le serveur se relance automatiquement dès lors.
|
||||
|
||||
Une fois le site lancé, le premier compte créé sera un compte administrateur.
|
|
@ -8,6 +8,7 @@ django-polymorphic
|
|||
django-tables2
|
||||
djangorestframework
|
||||
django-rest-polymorphic
|
||||
mysqlclient
|
||||
psycopg2-binary
|
||||
ptpython
|
||||
gunicorn
|
|
@ -179,6 +179,27 @@ CRISPY_TEMPLATE_PACK = 'bootstrap4'
|
|||
|
||||
DJANGO_TABLES2_TEMPLATE = 'django_tables2/bootstrap4.html'
|
||||
|
||||
_db_type = os.getenv('DJANGO_DB_TYPE', 'sqlite').lower()
|
||||
|
||||
if _db_type == 'mysql' or _db_type.startswith('postgres') or _db_type == 'psql':
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql' if _db_type == 'mysql' else 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': os.environ.get('DJANGO_DB_NAME', 'tfjm'),
|
||||
'USER': os.environ.get('DJANGO_DB_USER', 'tfjm'),
|
||||
'PASSWORD': os.environ.get('DJANGO_DB_PASSWORD', 'CHANGE_ME_IN_ENV_SETTINGS'),
|
||||
'HOST': os.environ.get('DJANGO_DB_HOST', 'localhost'),
|
||||
'PORT': os.environ.get('DJANGO_DB_PORT', ''), # Use default port
|
||||
}
|
||||
}
|
||||
else:
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': os.path.join(BASE_DIR, os.getenv('DJANGO_DB_HOST', 'db.sqlite3')),
|
||||
}
|
||||
}
|
||||
|
||||
if os.getenv("TFJM_STAGE", "dev") == "prod":
|
||||
from .settings_prod import *
|
||||
else:
|
||||
|
|
|
@ -1,15 +1,4 @@
|
|||
# Database
|
||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
||||
|
||||
import os
|
||||
|
||||
from tfjm.settings import BASE_DIR
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
||||
}
|
||||
}
|
||||
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
|
|
|
@ -1,16 +1,5 @@
|
|||
import os
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': os.environ.get('DJANGO_DB_NAME', 'tfjm'),
|
||||
'USER': os.environ.get('DJANGO_DB_USER', 'tfjm'),
|
||||
'PASSWORD': os.environ.get('DJANGO_DB_PASSWORD', 'CHANGE_ME_IN_ENV_SETTINGS'),
|
||||
'HOST': os.environ.get('DJANGO_DB_HOST', 'localhost'),
|
||||
'PORT': os.environ.get('DJANGO_DB_PORT', ''), # Use default port
|
||||
}
|
||||
}
|
||||
|
||||
# Break it, fix it!
|
||||
DEBUG = False
|
||||
|
||||
|
@ -22,13 +11,13 @@ SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', 'CHANGE_ME_IN_ENV_SETTINGS')
|
|||
# Emails
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_USE_SSL = True
|
||||
EMAIL_HOST = os.getenv("EMAIL_HOST")
|
||||
EMAIL_PORT = os.getenv("EMAIL_PORT")
|
||||
EMAIL_HOST_USER = os.getenv("EMAIL_HOST_USER")
|
||||
EMAIL_HOST_PASSWORD = os.getenv("EMAIL_HOST_PASSWORD")
|
||||
EMAIL_HOST = os.getenv("SMTP_HOST")
|
||||
EMAIL_PORT = os.getenv("SMTP_PORT")
|
||||
EMAIL_HOST_USER = os.getenv("SMTP_HOST_USER")
|
||||
EMAIL_HOST_PASSWORD = os.getenv("SMTP_HOST_PASSWORD")
|
||||
|
||||
DEFAULT_FROM_EMAIL = 'Contact TFJM² <contact@tfjm.org>'
|
||||
SERVER_EMAIL = 'contact@tfjm.org'
|
||||
DEFAULT_FROM_EMAIL = os.getenv('FROM_EMAIL', 'Contact TFJM² <contact@tfjm.org>')
|
||||
SERVER_EMAIL = os.getenv('SERVER_EMAIL', 'contact@tfjm.org')
|
||||
|
||||
# Security settings
|
||||
SECURE_CONTENT_TYPE_NOSNIFF = False
|
||||
|
|
Loading…
Reference in New Issue