mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	Merge branch 'debian_deps' into 'beta'
Debian deps See merge request bde/nk20!103
This commit is contained in:
		@@ -1,25 +1,51 @@
 | 
				
			|||||||
image: python:3.8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
stages:
 | 
					stages:
 | 
				
			||||||
  - test
 | 
					  - test
 | 
				
			||||||
  - quality-assurance
 | 
					  - quality-assurance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
before_script:
 | 
					# Debian Buster
 | 
				
			||||||
  - pip install tox
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
py37-django22:
 | 
					py37-django22:
 | 
				
			||||||
  image: python:3.7
 | 
					 | 
				
			||||||
  stage: test
 | 
					  stage: test
 | 
				
			||||||
 | 
					  image: debian:buster-backports
 | 
				
			||||||
 | 
					  before_script:
 | 
				
			||||||
 | 
					    - >
 | 
				
			||||||
 | 
					        apt-get update &&
 | 
				
			||||||
 | 
					        apt-get install -t buster-backports -y python3-django python3-django-crispy-forms
 | 
				
			||||||
 | 
					        python3-django-extensions python3-django-filters python3-django-polymorphic
 | 
				
			||||||
 | 
					        python3-djangorestframework python3-django-cas-server python3-psycopg2 python3-pil
 | 
				
			||||||
 | 
					        python3-babel python3-lockfile python3-pip python3-phonenumbers ipython3
 | 
				
			||||||
 | 
					        gettext libjs-bootstrap4 fonts-font-awesome tox &&
 | 
				
			||||||
 | 
					        rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
  script: tox -e py37-django22
 | 
					  script: tox -e py37-django22
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ubuntu 20.04
 | 
				
			||||||
py38-django22:
 | 
					py38-django22:
 | 
				
			||||||
  image: python:3.8
 | 
					 | 
				
			||||||
  stage: test
 | 
					  stage: test
 | 
				
			||||||
 | 
					  image: ubuntu:20.04
 | 
				
			||||||
 | 
					  before_script:
 | 
				
			||||||
 | 
					    # Fix tzdata prompt
 | 
				
			||||||
 | 
					    - ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime && echo Europe/Paris > /etc/timezone
 | 
				
			||||||
 | 
					    - >
 | 
				
			||||||
 | 
					        apt-get update &&
 | 
				
			||||||
 | 
					        apt-get install -y python3-django python3-django-crispy-forms
 | 
				
			||||||
 | 
					        python3-django-extensions python3-django-filters python3-django-polymorphic
 | 
				
			||||||
 | 
					        python3-djangorestframework python3-django-cas-server python3-psycopg2 python3-pil
 | 
				
			||||||
 | 
					        python3-babel python3-lockfile python3-pip python3-phonenumbers ipython3
 | 
				
			||||||
 | 
					        gettext libjs-bootstrap4 fonts-font-awesome tox &&
 | 
				
			||||||
 | 
					        rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
  script: tox -e py38-django22
 | 
					  script: tox -e py38-django22
 | 
				
			||||||
 | 
					
 | 
				
			||||||
linters:
 | 
					linters:
 | 
				
			||||||
  image: python:3.8
 | 
					 | 
				
			||||||
  stage: quality-assurance
 | 
					  stage: quality-assurance
 | 
				
			||||||
 | 
					  image: debian:buster-backports
 | 
				
			||||||
 | 
					  before_script:
 | 
				
			||||||
 | 
					    - >
 | 
				
			||||||
 | 
					        apt-get update &&
 | 
				
			||||||
 | 
					        apt-get install -t buster-backports -y python3-django python3-django-crispy-forms
 | 
				
			||||||
 | 
					        python3-django-extensions python3-django-filters python3-django-polymorphic
 | 
				
			||||||
 | 
					        python3-djangorestframework python3-django-cas-server python3-psycopg2 python3-pil
 | 
				
			||||||
 | 
					        python3-babel python3-lockfile python3-pip python3-phonenumbers ipython3
 | 
				
			||||||
 | 
					        gettext libjs-bootstrap4 fonts-font-awesome tox &&
 | 
				
			||||||
 | 
					        rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
  script: tox -e linters
 | 
					  script: tox -e linters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Be nice to new contributors, but please use `tox`
 | 
					  # Be nice to new contributors, but please use `tox`
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										41
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								Dockerfile
									
									
									
									
									
								
							@@ -1,27 +1,26 @@
 | 
				
			|||||||
FROM python:3-alpine
 | 
					FROM debian:buster-backports
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Force the stdout and stderr streams to be unbuffered
 | 
				
			||||||
ENV PYTHONUNBUFFERED 1
 | 
					ENV PYTHONUNBUFFERED 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install LaTeX requirements
 | 
					# Install Django, external apps, LaTeX and dependencies
 | 
				
			||||||
RUN apk add --no-cache gettext texlive texmf-dist-latexextra texmf-dist-fontsextra nginx gcc libc-dev libffi-dev postgresql-dev libxml2-dev libxslt-dev jpeg-dev
 | 
					RUN apt-get update && \
 | 
				
			||||||
 | 
					    apt-get install -t buster-backports -y python3-django python3-django-crispy-forms \
 | 
				
			||||||
 | 
					    python3-django-extensions python3-django-filters python3-django-polymorphic \
 | 
				
			||||||
 | 
					    python3-djangorestframework python3-django-cas-server python3-psycopg2 python3-pil \
 | 
				
			||||||
 | 
					    python3-babel python3-lockfile python3-pip python3-phonenumbers ipython3 \
 | 
				
			||||||
 | 
					    uwsgi uwsgi-plugin-python3 \
 | 
				
			||||||
 | 
					    texlive-latex-extra texlive-fonts-extra texlive-lang-french \
 | 
				
			||||||
 | 
					    gettext libjs-bootstrap4 fonts-font-awesome && \
 | 
				
			||||||
 | 
					    rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN apk add --no-cache bash
 | 
					# Instal PyPI requirements
 | 
				
			||||||
 | 
					COPY requirements.txt /var/www/note_kfet/
 | 
				
			||||||
 | 
					RUN pip3 install -r /var/www/note_kfet/requirements.txt --no-cache-dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN mkdir /code
 | 
					# Copy code
 | 
				
			||||||
WORKDIR /code
 | 
					WORKDIR /var/www/note_kfet
 | 
				
			||||||
COPY requirements /code/requirements
 | 
					COPY . /var/www/note_kfet/
 | 
				
			||||||
RUN pip install gunicorn ptpython --no-cache-dir
 | 
					 | 
				
			||||||
RUN pip install -r requirements/base.txt -r requirements/cas.txt -r requirements/production.txt --no-cache-dir
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY . /code/
 | 
					EXPOSE 8080
 | 
				
			||||||
 | 
					ENTRYPOINT ["/var/www/note_kfet/entrypoint.sh"]
 | 
				
			||||||
# Configure nginx
 | 
					 | 
				
			||||||
RUN mkdir /run/nginx
 | 
					 | 
				
			||||||
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
 | 
					 | 
				
			||||||
RUN ln -sf /code/nginx_note.conf_docker /etc/nginx/conf.d/nginx_note.conf
 | 
					 | 
				
			||||||
RUN rm /etc/nginx/conf.d/default.conf
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ENTRYPOINT ["/code/entrypoint.sh"]
 | 
					 | 
				
			||||||
EXPOSE 80
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CMD ["./manage.py", "shell_plus", "--ptpython"]
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										75
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								README.md
									
									
									
									
									
								
							@@ -14,21 +14,25 @@ Sinon vous pouvez suivre les étapes ici.
 | 
				
			|||||||
### Installation avec Debian/Ubuntu
 | 
					### Installation avec Debian/Ubuntu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1.  **Installation des dépendances APT.**
 | 
					1.  **Installation des dépendances APT.**
 | 
				
			||||||
 | 
					    On tire les dépendances le plus possible à partir des dépôts de Debian.
 | 
				
			||||||
 | 
					    On a besoin d'un environnement LaTeX pour générer les factures.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    $ sudo apt install nginx python3 python3-pip python3-dev uwsgi uwsgi-plugin-python3 python3-venv git acl
 | 
					    $ sudo apt update
 | 
				
			||||||
    ```
 | 
					    $ sudo apt install -t buster-backports -y python3-django python3-django-crispy-forms \
 | 
				
			||||||
 | 
					        python3-django-extensions python3-django-filters python3-django-polymorphic \
 | 
				
			||||||
    La génération des factures de l'application trésorerie nécessite une installation de LaTeX suffisante,
 | 
					        python3-djangorestframework python3-django-cas-server python3-psycopg2 python3-pil \
 | 
				
			||||||
 | 
					        python3-babel python3-lockfile python3-pip python3-phonenumbers ipython3 \
 | 
				
			||||||
    ```bash
 | 
					        uwsgi uwsgi-plugin-python3 \
 | 
				
			||||||
    $ sudo apt install texlive-latex-extra texlive-fonts-extra texlive-lang-french
 | 
					        texlive-latex-extra texlive-fonts-extra texlive-lang-french \
 | 
				
			||||||
 | 
					        gettext libjs-bootstrap4 fonts-font-awesome \
 | 
				
			||||||
 | 
					        nginx python3-venv git acl
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2.  **Clonage du dépot** dans `/var/www/note_kfet`,
 | 
					2.  **Clonage du dépot** dans `/var/www/note_kfet`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    $ mkdir -p /var/www/note_kfet && cd /var/www/note_kfet
 | 
					    $ sudo mkdir -p /var/www/note_kfet && cd /var/www/note_kfet
 | 
				
			||||||
    $ sudo chown www-data:www-data .
 | 
					    $ sudo chown www-data:www-data .
 | 
				
			||||||
    $ sudo chmod g+rwx .
 | 
					    $ sudo chmod g+rwx .
 | 
				
			||||||
    $ sudo -u www-data git clone git@gitlab.crans.org:bde/nk20.git .
 | 
					    $ sudo -u www-data git clone git@gitlab.crans.org:bde/nk20.git .
 | 
				
			||||||
@@ -39,8 +43,7 @@ Sinon vous pouvez suivre les étapes ici.
 | 
				
			|||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    $ python3 -m venv env
 | 
					    $ python3 -m venv env
 | 
				
			||||||
    $ source env/bin/activate
 | 
					    $ source env/bin/activate
 | 
				
			||||||
    (env)$ pip3 install -r requirements/base.txt
 | 
					    (env)$ pip3 install -r requirements.txt
 | 
				
			||||||
    (env)$ pip3 install -r requirements/prod.txt  # uniquement en prod, nécessite une base postgres
 | 
					 | 
				
			||||||
    (env)$ deactivate  # sortir de l'environnement
 | 
					    (env)$ deactivate  # sortir de l'environnement
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -144,30 +147,44 @@ Sinon vous pouvez suivre les étapes ici.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Il est possible de travailler sur une instance Docker.
 | 
					Il est possible de travailler sur une instance Docker.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1.  Cloner le dépôt là où vous voulez :
 | 
					Pour construire l'image Docker `nk20`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $ git clone git@gitlab.crans.org:bde/nk20.git
 | 
					```
 | 
				
			||||||
 | 
					git clone https://gitlab.crans.org/bde/nk20/ && cd nk20
 | 
				
			||||||
 | 
					docker build . -t nk20
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2.  Copiez le fichier `.env_example` à la racine du projet vers le fichier `.env`,
 | 
					Ensuite pour lancer la note Kfet en tant que vous (option `-u`),
 | 
				
			||||||
    et  mettez à jour vos variables d'environnement
 | 
					l'exposer sur son port 80 (option `-p`) et monter le code en écriture (option `-v`),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
3.  Dans le fichier `docker_compose.yml`, qu'on suppose déjà configuré,
 | 
					```
 | 
				
			||||||
    ajouter les lignes suivantes, en les adaptant à la configuration voulue :
 | 
					docker run -it --rm -u $(id -u):$(id -g) -v "$(pwd):/var/www/note_kfet/" -p 80:8080 nk20
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         nk20:
 | 
					Si vous souhaitez lancer une commande spéciale, vous pouvez l'ajouter à la fin, par exemple,
 | 
				
			||||||
           build: /chemin/vers/nk20
 | 
					 | 
				
			||||||
           volumes:
 | 
					 | 
				
			||||||
             - /chemin/vers/nk20:/code/
 | 
					 | 
				
			||||||
           env_file: /chemin/vers/nk20/.env
 | 
					 | 
				
			||||||
           restart: always
 | 
					 | 
				
			||||||
           labels:
 | 
					 | 
				
			||||||
             - traefik.domain=ndd.example.com
 | 
					 | 
				
			||||||
             - traefik.frontend.rule=Host:ndd.example.com
 | 
					 | 
				
			||||||
             - traefik.port=8000
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
4.  Enjoy :
 | 
					```
 | 
				
			||||||
 | 
					docker run -it --rm -u $(id -u):$(id -g) -v "$(pwd):/var/www/note_kfet/" -p 80:8080 nk20 python3 ./manage.py createsuperuser
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $ docker-compose up -d nk20
 | 
					#### Avec Docker Compose
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On vous conseilles de faire un fichier d'environnement `.env` en prenant exemple sur `.env_example`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Pour par exemple utiliser le Docker de la note Kfet avec Traefik pour réaliser le HTTPS,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```YAML
 | 
				
			||||||
 | 
					nk20:
 | 
				
			||||||
 | 
					  build: /chemin/vers/le/code/nk20
 | 
				
			||||||
 | 
					  volumes:
 | 
				
			||||||
 | 
					    - /chemin/vers/le/code/nk20:/var/www/note_kfet/
 | 
				
			||||||
 | 
					  env_file: /chemin/vers/le/code/nk20/.env
 | 
				
			||||||
 | 
					  restart: always
 | 
				
			||||||
 | 
					  labels:
 | 
				
			||||||
 | 
					    - traefik.domain=ndd.example.com
 | 
				
			||||||
 | 
					    - traefik.frontend.rule=Host:ndd.example.com
 | 
				
			||||||
 | 
					    - traefik.port=8080
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Lancer un serveur de développement
 | 
					### Lancer un serveur de développement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -183,7 +200,7 @@ un serveur de développement par exemple sur son ordinateur.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
         $ python3 -m venv venv
 | 
					         $ python3 -m venv venv
 | 
				
			||||||
         $ source venv/bin/activate
 | 
					         $ source venv/bin/activate
 | 
				
			||||||
         (env)$ pip install -r requirements/base.txt
 | 
					         (env)$ pip install -r requirements.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
3.  Copier le fichier `.env_example` vers `.env` à la racine du projet et mettre à jour
 | 
					3.  Copier le fichier `.env_example` vers `.env` à la racine du projet et mettre à jour
 | 
				
			||||||
    ce qu'il faut
 | 
					    ce qu'il faut
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,8 @@
 | 
				
			|||||||
      - git
 | 
					      - git
 | 
				
			||||||
      - acl
 | 
					      - acl
 | 
				
			||||||
      - gettext
 | 
					      - gettext
 | 
				
			||||||
 | 
					      - libjs-bootstrap4
 | 
				
			||||||
 | 
					      - fonts-font-awesome
 | 
				
			||||||
      - texlive-latex-extra
 | 
					      - texlive-latex-extra
 | 
				
			||||||
      - texlive-fonts-extra
 | 
					      - texlive-fonts-extra
 | 
				
			||||||
      - texlive-lang-french
 | 
					      - texlive-lang-french
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@ server {
 | 
				
			|||||||
    # Finally, send all non-media requests to the Django server.
 | 
					    # Finally, send all non-media requests to the Django server.
 | 
				
			||||||
    location / {
 | 
					    location / {
 | 
				
			||||||
        uwsgi_pass note;
 | 
					        uwsgi_pass note;
 | 
				
			||||||
        include     /var/www/note_kfet/uwsgi_params; # the uwsgi_params file you installed
 | 
					        include /etc/nginx/uwsgi_params;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ssl_certificate /etc/letsencrypt/live/nk20-beta.crans.org/fullchain.pem;
 | 
					    ssl_certificate /etc/letsencrypt/live/nk20-beta.crans.org/fullchain.pem;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,11 +69,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
                {% endif %}
 | 
					                {% endif %}
 | 
				
			||||||
                {% if can_lock_note %}
 | 
					                {% if can_lock_note %}
 | 
				
			||||||
                <button class="btn btn-sm btn-danger" data-toggle="modal" data-target="#lock-note-modal">
 | 
					                <button class="btn btn-sm btn-danger" data-toggle="modal" data-target="#lock-note-modal">
 | 
				
			||||||
                    <i class="fas fa-ban"></i> {% trans 'Lock note' %}
 | 
					                    <i class="fa fa-ban"></i> {% trans 'Lock note' %}
 | 
				
			||||||
                </button>
 | 
					                </button>
 | 
				
			||||||
                {% elif can_unlock_note %}
 | 
					                {% elif can_unlock_note %}
 | 
				
			||||||
                <button class="btn btn-sm btn-success" data-toggle="modal" data-target="#unlock-note-modal">
 | 
					                <button class="btn btn-sm btn-success" data-toggle="modal" data-target="#unlock-note-modal">
 | 
				
			||||||
                    <i class="fas fa-check-circle"></i> {% trans 'Unlock note' %}
 | 
					                    <i class="fa fa-check-circle"></i> {% trans 'Unlock note' %}
 | 
				
			||||||
                </button>
 | 
					                </button>
 | 
				
			||||||
                {% endif %}
 | 
					                {% endif %}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
@@ -181,4 +181,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
{% if "member.change_profile_registration_valid"|has_perm:user %}
 | 
					{% if "member.change_profile_registration_valid"|has_perm:user %}
 | 
				
			||||||
<a class="btn btn-block btn-secondary mb-3" href="{% url 'registration:future_user_list' %}">
 | 
					<a class="btn btn-block btn-secondary mb-3" href="{% url 'registration:future_user_list' %}">
 | 
				
			||||||
    <i class="fas fa-user-plus"></i> {% trans "Registrations" %}
 | 
					    <i class="fa fa-user-plus"></i> {% trans "Registrations" %}
 | 
				
			||||||
</a>
 | 
					</a>
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
            </h3>
 | 
					            </h3>
 | 
				
			||||||
            <div class="card-body">
 | 
					            <div class="card-body">
 | 
				
			||||||
                <div class="alert alert-info">
 | 
					                <div class="alert alert-info">
 | 
				
			||||||
                    <i class="fas fa-info-circle"></i> {% trans "Superusers have all rights on everything, to manage the website." %}
 | 
					                    <i class="fa fa-info-circle"></i> {% trans "Superusers have all rights on everything, to manage the website." %}
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div class="card">
 | 
					                <div class="card">
 | 
				
			||||||
                    <div class="card-head">
 | 
					                    <div class="card-head">
 | 
				
			||||||
@@ -116,4 +116,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
            update();
 | 
					            update();
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,14 +43,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
                    {% with bde_kfet_fee=club.parent_club.membership_fee_paid|add:club.parent_club.parent_club.membership_fee_paid %}
 | 
					                    {% with bde_kfet_fee=club.parent_club.membership_fee_paid|add:club.parent_club.parent_club.membership_fee_paid %}
 | 
				
			||||||
                    <dt class="col-xl-6">{% trans 'WEI fee (paid students)'|capfirst %}</dt>
 | 
					                    <dt class="col-xl-6">{% trans 'WEI fee (paid students)'|capfirst %}</dt>
 | 
				
			||||||
                    <dd class="col-xl-6">{{ club.membership_fee_paid|add:bde_kfet_fee|pretty_money }}
 | 
					                    <dd class="col-xl-6">{{ club.membership_fee_paid|add:bde_kfet_fee|pretty_money }}
 | 
				
			||||||
                        <i class="fas fa-question-circle"
 | 
					                        <i class="fa fa-question-circle"
 | 
				
			||||||
                            title="{% trans "The BDE membership is included in the WEI registration." %}"></i></dd>
 | 
					                            title="{% trans "The BDE membership is included in the WEI registration." %}"></i></dd>
 | 
				
			||||||
                    {% endwith %}
 | 
					                    {% endwith %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    {% with bde_kfet_fee=club.parent_club.membership_fee_unpaid|add:club.parent_club.parent_club.membership_fee_unpaid %}
 | 
					                    {% with bde_kfet_fee=club.parent_club.membership_fee_unpaid|add:club.parent_club.parent_club.membership_fee_unpaid %}
 | 
				
			||||||
                    <dt class="col-xl-6">{% trans 'WEI fee (unpaid students)'|capfirst %}</dt>
 | 
					                    <dt class="col-xl-6">{% trans 'WEI fee (unpaid students)'|capfirst %}</dt>
 | 
				
			||||||
                    <dd class="col-xl-6">{{ club.membership_fee_unpaid|add:bde_kfet_fee|pretty_money }}
 | 
					                    <dd class="col-xl-6">{{ club.membership_fee_unpaid|add:bde_kfet_fee|pretty_money }}
 | 
				
			||||||
                        <i class="fas fa-question-circle"
 | 
					                        <i class="fa fa-question-circle"
 | 
				
			||||||
                            title="{% trans "The BDE membership is included in the WEI registration." %}"></i></dd>
 | 
					                            title="{% trans "The BDE membership is included in the WEI registration." %}"></i></dd>
 | 
				
			||||||
                    {% endwith %}
 | 
					                    {% endwith %}
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
@@ -106,4 +106,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
        {% block profile_content %}{% endblock %}
 | 
					        {% block profile_content %}{% endblock %}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,20 +5,29 @@
 | 
				
			|||||||
if [ -z ${NOTE_URL+x} ]; then
 | 
					if [ -z ${NOTE_URL+x} ]; then
 | 
				
			||||||
  echo "Warning: your env files are not configurated."
 | 
					  echo "Warning: your env files are not configurated."
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
  sed -i -e "s/example.com/$DOMAIN/g" /code/apps/member/fixtures/initial.json
 | 
					  sed -i -e "s/example.com/$DOMAIN/g" /var/www/note_kfet/apps/member/fixtures/initial.json
 | 
				
			||||||
  sed -i -e "s/localhost/$NOTE_URL/g" /code/note_kfet/fixtures/initial.json
 | 
					  sed -i -e "s/localhost/$NOTE_URL/g" /var/www/note_kfet/note_kfet/fixtures/initial.json
 | 
				
			||||||
  sed -i -e "s/\"\.\*\"/\"https?:\/\/$NOTE_URL\/.*\"/g" /code/note_kfet/fixtures/cas.json
 | 
					  sed -i -e "s/\"\.\*\"/\"https?:\/\/$NOTE_URL\/.*\"/g" /var/www/note_kfet/note_kfet/fixtures/cas.json
 | 
				
			||||||
  sed -i -e "s/REPLACEME/La Note Kfet \\\\ud83c\\\\udf7b/g" /code/note_kfet/fixtures/cas.json
 | 
					  sed -i -e "s/REPLACEME/La Note Kfet \\\\ud83c\\\\udf7b/g" /var/www/note_kfet/note_kfet/fixtures/cas.json
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
python manage.py compilemessages
 | 
					# Set up Django project
 | 
				
			||||||
python manage.py makemigrations
 | 
					python3 manage.py collectstatic --noinput
 | 
				
			||||||
python manage.py migrate
 | 
					python3 manage.py compilemessages
 | 
				
			||||||
 | 
					python3 manage.py makemigrations
 | 
				
			||||||
 | 
					python3 manage.py migrate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nginx
 | 
					if [ "$1" ]; then
 | 
				
			||||||
 | 
					    # Command passed
 | 
				
			||||||
if [ "$DJANGO_APP_STAGE" = "prod" ]; then
 | 
					    echo "Running $@..."
 | 
				
			||||||
    gunicorn -b 0.0.0.0:8000 --workers=2 --threads=4 --worker-class=gthread note_kfet.wsgi --access-logfile '-' --error-logfile '-';
 | 
					    $@
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    python manage.py runserver 0.0.0.0:8000;
 | 
					    # Launch server
 | 
				
			||||||
 | 
					    if [ "$DJANGO_APP_STAGE" = "prod" ]; then
 | 
				
			||||||
 | 
					        uwsgi --http-socket 0.0.0.0:8080 --master --plugins python3 \
 | 
				
			||||||
 | 
					              --module note_kfet.wsgi:application --env DJANGO_SETTINGS_MODULE=note_kfet.settings \
 | 
				
			||||||
 | 
					              --processes 4 --static-map /static=/var/www/note_kfet/static --harakiri=20 --max-requests=5000 --vacuum
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        python3 manage.py runserver 0.0.0.0:8080;
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
# This is an example NGINX site configuration for note_kfet in Docker
 | 
					 | 
				
			||||||
# Only HTTP, please use a reverse proxy to secure it!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
server {
 | 
					 | 
				
			||||||
    # Serve this site by default on HTTP
 | 
					 | 
				
			||||||
    listen 80 default_server;
 | 
					 | 
				
			||||||
    listen [::]:80 default_server;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Max upload size
 | 
					 | 
				
			||||||
    client_max_body_size 75M;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Django statics and media
 | 
					 | 
				
			||||||
    location /static {
 | 
					 | 
				
			||||||
        alias /code/static;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    location /media  {
 | 
					 | 
				
			||||||
        alias /code/media;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Send all non-media requests to the Django server.
 | 
					 | 
				
			||||||
    location / {
 | 
					 | 
				
			||||||
        proxy_pass http://127.0.0.1:8000;
 | 
					 | 
				
			||||||
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
					 | 
				
			||||||
        proxy_set_header Host $host;
 | 
					 | 
				
			||||||
        proxy_redirect off;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -164,8 +164,10 @@ LANGUAGES = [
 | 
				
			|||||||
STATIC_URL = '/static/'
 | 
					STATIC_URL = '/static/'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Add some custom statics from /note_kfet/static
 | 
					# Add some custom statics from /note_kfet/static
 | 
				
			||||||
 | 
					# Because we are using Debian, also include /usr/share/javascript
 | 
				
			||||||
STATICFILES_DIRS = [
 | 
					STATICFILES_DIRS = [
 | 
				
			||||||
    os.path.join(BASE_DIR, 'note_kfet/static'),
 | 
					    os.path.join(BASE_DIR, 'note_kfet/static'),
 | 
				
			||||||
 | 
					    '/usr/share/javascript',
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Collect statics to /static/
 | 
					# Collect statics to /static/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,24 +24,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
    <meta name="theme-color" content="#ffffff">
 | 
					    <meta name="theme-color" content="#ffffff">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {# Bootstrap, Font Awesome and custom CSS #}
 | 
					    {# Bootstrap, Font Awesome and custom CSS #}
 | 
				
			||||||
    <link rel="stylesheet"
 | 
					    <link rel="stylesheet" href="{% static "bootstrap4/css/bootstrap.min.css" %}">
 | 
				
			||||||
          href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
 | 
					    <link rel="stylesheet" href="{% static "font-awesome/css/font-awesome.min.css" %}">
 | 
				
			||||||
          integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 | 
					 | 
				
			||||||
          crossorigin="anonymous">
 | 
					 | 
				
			||||||
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.13.0/css/all.css">
 | 
					 | 
				
			||||||
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.13.0/css/v4-shims.css">
 | 
					 | 
				
			||||||
    <link rel="stylesheet" href="{% static "css/custom.css" %}">
 | 
					    <link rel="stylesheet" href="{% static "css/custom.css" %}">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {# JQuery, Bootstrap and Turbolinks JavaScript #}
 | 
					    {# JQuery, Bootstrap and Turbolinks JavaScript #}
 | 
				
			||||||
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"
 | 
					    <script src="{% static "jquery/jquery.min.js" %}"></script>
 | 
				
			||||||
            integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh"
 | 
					    <script src="{% static "popper.js/umd/popper.min.js" %}"></script>
 | 
				
			||||||
            crossorigin="anonymous"></script>
 | 
					    <script src="{% static "bootstrap4/js/bootstrap.min.js" %}"></script>
 | 
				
			||||||
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
 | 
					 | 
				
			||||||
            integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
 | 
					 | 
				
			||||||
            crossorigin="anonymous"></script>
 | 
					 | 
				
			||||||
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
 | 
					 | 
				
			||||||
            integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
 | 
					 | 
				
			||||||
            crossorigin="anonymous"></script>
 | 
					 | 
				
			||||||
    <script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js"
 | 
					    <script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js"
 | 
				
			||||||
            crossorigin="anonymous"></script>
 | 
					            crossorigin="anonymous"></script>
 | 
				
			||||||
    <script src="{% static "js/base.js" %}"></script>
 | 
					    <script src="{% static "js/base.js" %}"></script>
 | 
				
			||||||
@@ -69,54 +59,54 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
                    {% if "note.transactiontemplate"|not_empty_model_list %}
 | 
					                    {% if "note.transactiontemplate"|not_empty_model_list %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'note:consos' as url %}
 | 
					                            {% url 'note:consos' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-coffee"></i> {% trans 'Consumptions' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-coffee"></i> {% trans 'Consumptions' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if "note.transaction"|not_empty_model_list %}
 | 
					                    {% if "note.transaction"|not_empty_model_list %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'note:transfer' as url %}
 | 
					                            {% url 'note:transfer' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-exchange-alt"></i> {% trans 'Transfer' %} </a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-exchange"></i> {% trans 'Transfer' %} </a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if "auth.user"|model_list_length >= 2 %}
 | 
					                    {% if "auth.user"|model_list_length >= 2 %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'member:user_list' as url %}
 | 
					                            {% url 'member:user_list' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-user"></i> {% trans 'Users' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-user"></i> {% trans 'Users' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if "member.club"|not_empty_model_list %}
 | 
					                    {% if "member.club"|not_empty_model_list %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'member:club_list' as url %}
 | 
					                            {% url 'member:club_list' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-users"></i> {% trans 'Clubs' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-users"></i> {% trans 'Clubs' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if "activity.activity"|not_empty_model_list %}
 | 
					                    {% if "activity.activity"|not_empty_model_list %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'activity:activity_list' as url %}
 | 
					                            {% url 'activity:activity_list' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-calendar"></i> {% trans 'Activities' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-calendar"></i> {% trans 'Activities' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if "treasury.invoice"|not_empty_model_list %}
 | 
					                    {% if "treasury.invoice"|not_empty_model_list %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'treasury:invoice_list' as url %}
 | 
					                            {% url 'treasury:invoice_list' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-credit-card"></i> {% trans 'Treasury' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-credit-card"></i> {% trans 'Treasury' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if "wei.weiclub"|not_empty_model_list %}
 | 
					                    {% if "wei.weiclub"|not_empty_model_list %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'wei:current_wei_detail' as url %}
 | 
					                            {% url 'wei:current_wei_detail' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-bus"></i> {% trans 'WEI' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-bus"></i> {% trans 'WEI' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if request.user.is_authenticated %}
 | 
					                    {% if request.user.is_authenticated %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            {% url 'permission:rights' as url %}
 | 
					                            {% url 'permission:rights' as url %}
 | 
				
			||||||
                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fas fa-balance-scale"></i> {% trans 'Rights' %}</a>
 | 
					                            <a class="nav-link {% if request.path_info == url %}active{% endif %}" href="{{ url }}"><i class="fa fa-balance-scale"></i> {% trans 'Rights' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                    {% if request.user.is_staff and ""|has_perm:user %}
 | 
					                    {% if request.user.is_staff and ""|has_perm:user %}
 | 
				
			||||||
                        <li class="nav-item">
 | 
					                        <li class="nav-item">
 | 
				
			||||||
                            <a data-turbolinks="false" class="nav-link" href="{% url 'admin:index' %}"><i class="fas fa-user-cog"></i> {% trans 'Admin' %}</a>
 | 
					                            <a data-turbolinks="false" class="nav-link" href="{% url 'admin:index' %}"><i class="fa fa-cogs"></i> {% trans 'Admin' %}</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                </ul>
 | 
					                </ul>
 | 
				
			||||||
@@ -124,16 +114,16 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
                    {% if request.user.is_authenticated %}
 | 
					                    {% if request.user.is_authenticated %}
 | 
				
			||||||
                        <li class="dropdown">
 | 
					                        <li class="dropdown">
 | 
				
			||||||
                            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
 | 
					                            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
 | 
				
			||||||
                                <i class="fas fa-user"></i>
 | 
					                                <i class="fa fa-user"></i>
 | 
				
			||||||
                                <span id="user_balance">{{ request.user.username }} ({{ request.user.note.balance | pretty_money }})</span>
 | 
					                                <span id="user_balance">{{ request.user.username }} ({{ request.user.note.balance | pretty_money }})</span>
 | 
				
			||||||
                            </a>
 | 
					                            </a>
 | 
				
			||||||
                            <div class="dropdown-menu dropdown-menu-right"
 | 
					                            <div class="dropdown-menu dropdown-menu-right"
 | 
				
			||||||
                                 aria-labelledby="navbarDropdownMenuLink">
 | 
					                                 aria-labelledby="navbarDropdownMenuLink">
 | 
				
			||||||
                                <a class="dropdown-item" href="{% url 'member:user_detail' pk=request.user.pk %}">
 | 
					                                <a class="dropdown-item" href="{% url 'member:user_detail' pk=request.user.pk %}">
 | 
				
			||||||
                                    <i class="fas fa-user"></i> Mon compte
 | 
					                                    <i class="fa fa-user"></i> Mon compte
 | 
				
			||||||
                                </a>
 | 
					                                </a>
 | 
				
			||||||
                                <a class="dropdown-item" href="{% url 'logout' %}">
 | 
					                                <a class="dropdown-item" href="{% url 'logout' %}">
 | 
				
			||||||
                                    <i class="fas fa-sign-out-alt"></i> Se déconnecter
 | 
					                                    <i class="fa fa-sign-out"></i> Se déconnecter
 | 
				
			||||||
                                </a>
 | 
					                                </a>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
@@ -141,14 +131,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			|||||||
                {% if request.path != "/registration/signup/" %}
 | 
					                {% if request.path != "/registration/signup/" %}
 | 
				
			||||||
                            <li class="nav-item">
 | 
					                            <li class="nav-item">
 | 
				
			||||||
                                <a class="nav-link" href="{% url 'registration:signup' %}">
 | 
					                                <a class="nav-link" href="{% url 'registration:signup' %}">
 | 
				
			||||||
                                    <i class="fas fa-user-plus"></i> S'inscrire
 | 
					                                    <i class="fa fa-user-plus"></i> S'inscrire
 | 
				
			||||||
                                </a>
 | 
					                                </a>
 | 
				
			||||||
                            </li>
 | 
					                            </li>
 | 
				
			||||||
                        {% endif %}
 | 
					                        {% endif %}
 | 
				
			||||||
                {% if request.path != "/accounts/login/" %}
 | 
					                {% if request.path != "/accounts/login/" %}
 | 
				
			||||||
                            <li class="nav-item">
 | 
					                            <li class="nav-item">
 | 
				
			||||||
                                <a class="nav-link" href="{% url 'login' %}">
 | 
					                                <a class="nav-link" href="{% url 'login' %}">
 | 
				
			||||||
                                    <i class="fas fa-sign-in-alt"></i> Se connecter
 | 
					                                    <i class="fa fa-sign-in"></i> Se connecter
 | 
				
			||||||
                                </a>
 | 
					                                </a>
 | 
				
			||||||
                            </li>
 | 
					                            </li>
 | 
				
			||||||
                        {% endif %}
 | 
					                        {% endif %}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					django-htcpcp-tea==0.3.1
 | 
				
			||||||
 | 
					django-mailer==2.0.1
 | 
				
			||||||
 | 
					django-phonenumber-field==4.0.0
 | 
				
			||||||
 | 
					django-tables2==2.1.0
 | 
				
			||||||
 | 
					django-rest-polymorphic==0.1.8
 | 
				
			||||||
 | 
					django-bootstrap-datepicker-plus==3.0.5
 | 
				
			||||||
 | 
					django-colorfield==0.3.2
 | 
				
			||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
beautifulsoup4==4.9.1
 | 
					 | 
				
			||||||
certifi==2019.6.16
 | 
					 | 
				
			||||||
chardet==3.0.4
 | 
					 | 
				
			||||||
defusedxml==0.6.0
 | 
					 | 
				
			||||||
Django~=2.2
 | 
					 | 
				
			||||||
django-allauth==0.39.1
 | 
					 | 
				
			||||||
django-crispy-forms==1.7.2
 | 
					 | 
				
			||||||
django-extensions==2.1.9
 | 
					 | 
				
			||||||
django-filter==2.2.0
 | 
					 | 
				
			||||||
django-htcpcp-tea==0.3.1
 | 
					 | 
				
			||||||
django-mailer==2.0.1
 | 
					 | 
				
			||||||
django-phonenumber-field==4.0.0
 | 
					 | 
				
			||||||
django-polymorphic==2.0.3
 | 
					 | 
				
			||||||
django-tables2==2.1.0
 | 
					 | 
				
			||||||
docutils==0.14
 | 
					 | 
				
			||||||
idna==2.8
 | 
					 | 
				
			||||||
lxml==4.5.2
 | 
					 | 
				
			||||||
oauthlib==3.1.0
 | 
					 | 
				
			||||||
phonenumbers==8.12.7
 | 
					 | 
				
			||||||
Pillow==7.1.2
 | 
					 | 
				
			||||||
python3-openid==3.1.0
 | 
					 | 
				
			||||||
pytz==2019.1
 | 
					 | 
				
			||||||
requests==2.22.0
 | 
					 | 
				
			||||||
requests-oauthlib==1.2.0
 | 
					 | 
				
			||||||
six==1.12.0
 | 
					 | 
				
			||||||
sqlparse==0.3.0
 | 
					 | 
				
			||||||
djangorestframework==3.9.0
 | 
					 | 
				
			||||||
django-rest-polymorphic==0.1.8
 | 
					 | 
				
			||||||
urllib3==1.25.3
 | 
					 | 
				
			||||||
django-bootstrap-datepicker-plus==3.0.5
 | 
					 | 
				
			||||||
django-colorfield==0.3.2
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
django-cas-server==1.2.0
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
psycopg2-binary==2.8.4
 | 
					 | 
				
			||||||
							
								
								
									
										11
									
								
								tox.ini
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								tox.ini
									
									
									
									
									
								
							@@ -10,12 +10,11 @@ envlist =
 | 
				
			|||||||
skipsdist = True
 | 
					skipsdist = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[testenv]
 | 
					[testenv]
 | 
				
			||||||
 | 
					sitepackages = True
 | 
				
			||||||
setenv =
 | 
					setenv =
 | 
				
			||||||
	PYTHONWARNINGS = all
 | 
					    PYTHONWARNINGS = all
 | 
				
			||||||
deps =
 | 
					deps =
 | 
				
			||||||
    -r{toxinidir}/requirements/base.txt
 | 
					    -r{toxinidir}/requirements.txt
 | 
				
			||||||
    -r{toxinidir}/requirements/cas.txt
 | 
					 | 
				
			||||||
    -r{toxinidir}/requirements/production.txt
 | 
					 | 
				
			||||||
    coverage
 | 
					    coverage
 | 
				
			||||||
commands =
 | 
					commands =
 | 
				
			||||||
    ./manage.py makemigrations
 | 
					    ./manage.py makemigrations
 | 
				
			||||||
@@ -24,9 +23,7 @@ commands =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[testenv:linters]
 | 
					[testenv:linters]
 | 
				
			||||||
deps =
 | 
					deps =
 | 
				
			||||||
    -r{toxinidir}/requirements/base.txt
 | 
					    -r{toxinidir}/requirements.txt
 | 
				
			||||||
    -r{toxinidir}/requirements/cas.txt
 | 
					 | 
				
			||||||
    -r{toxinidir}/requirements/production.txt
 | 
					 | 
				
			||||||
    flake8
 | 
					    flake8
 | 
				
			||||||
    flake8-colors
 | 
					    flake8-colors
 | 
				
			||||||
    flake8-import-order
 | 
					    flake8-import-order
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								uwsgi_params
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								uwsgi_params
									
									
									
									
									
								
							@@ -1,26 +0,0 @@
 | 
				
			|||||||
                                         
 | 
					 | 
				
			||||||
uwsgi_param  QUERY_STRING       $query_string;
 | 
					 | 
				
			||||||
uwsgi_param  REQUEST_METHOD     $request_method;
 | 
					 | 
				
			||||||
uwsgi_param  CONTENT_TYPE       $content_type;
 | 
					 | 
				
			||||||
uwsgi_param  CONTENT_LENGTH     $content_length;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uwsgi_param  REQUEST_URI        $request_uri;
 | 
					 | 
				
			||||||
uwsgi_param  PATH_INFO          $document_uri;
 | 
					 | 
				
			||||||
uwsgi_param  DOCUMENT_ROOT      $document_root;
 | 
					 | 
				
			||||||
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
 | 
					 | 
				
			||||||
uwsgi_param  REQUEST_SCHEME     $scheme;
 | 
					 | 
				
			||||||
uwsgi_param  HTTPS              $https if_not_empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uwsgi_param  REMOTE_ADDR        $remote_addr;
 | 
					 | 
				
			||||||
uwsgi_param  REMOTE_PORT        $remote_port;
 | 
					 | 
				
			||||||
uwsgi_param  SERVER_PORT        $server_port;
 | 
					 | 
				
			||||||
uwsgi_param  SERVER_NAME        $server_name;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user