From d54c7fa66b13aae1dd347151c8af71d7993e2fa1 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 12 May 2021 14:15:57 +0200 Subject: [PATCH] update docker setup and env, update requirements.txt against 1.3 with all legacy dependencies including telemeta & co (should be cleaned up) --- .gitmodules | 3 + Dockerfile | 21 ++- app/settings.py | 33 ++-- ...irements-debian.txt => debian-packages.txt | 1 + docker-compose.yml | 15 +- env/ci.yml | 54 ++++++ env/cypress.yml | 76 ++++++++ env/db.env | 4 + env/db.yml | 12 ++ env/dev.env | 1 + env/dev.yml | 28 +++ env/prod.env | 4 + env/prod.yml | 8 + env/staging.env | 4 + env/staging.yml | 8 + lib/pdfannotator | 1 + requirements-1.3.txt | 177 ------------------ requirements-dev.txt | 2 - requirements-new.txt | 27 ++- requirements.txt | 176 +++++++++++++++-- 20 files changed, 415 insertions(+), 240 deletions(-) rename requirements-debian.txt => debian-packages.txt (94%) create mode 100644 env/ci.yml create mode 100644 env/cypress.yml create mode 100644 env/db.env create mode 100644 env/db.yml create mode 100644 env/dev.env create mode 100644 env/dev.yml create mode 100644 env/prod.env create mode 100644 env/prod.yml create mode 100644 env/staging.env create mode 100644 env/staging.yml create mode 160000 lib/pdfannotator delete mode 100644 requirements-1.3.txt delete mode 100644 requirements-dev.txt diff --git a/.gitmodules b/.gitmodules index 5d9a988f..445d53ea 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "bin"] path = bin url = https://github.com/Ircam-Web/mezzo-bin.git +[submodule "lib/pdfannotator"] + path = lib/pdfannotator + url = git@git.pilotsystems.net:probarreau/pdfannotator.git diff --git a/Dockerfile b/Dockerfile index 167588e2..989508c7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM python2 +FROM python:2 MAINTAINER Guillaume Pellerin @@ -27,9 +27,9 @@ WORKDIR /srv RUN apt-get update && apt-get install -y apt-transport-https # COPY etc/apt/sources.list /etc/apt/ -COPY requirements-debian.txt /srv +COPY debian-packages.txt /srv RUN apt-get update && \ - DEBIAN_PACKAGES=$(egrep -v "^\s*(#|$)" /srv/requirements-debian.txt) && \ + DEBIAN_PACKAGES=$(egrep -v "^\s*(#|$)" /srv/debian-packages.txt) && \ apt-get install -y --force-yes $DEBIAN_PACKAGES && \ echo fr_FR.UTF-8 UTF-8 >> /etc/locale.gen && \ locale-gen && \ @@ -39,16 +39,17 @@ ENV LANG fr_FR.UTF-8 ENV LANGUAGE fr_FR:fr ENV LC_ALL fr_FR.UTF-8 -COPY requirements-dev.txt /srv -RUN pip install -r requirements-dev.txt --src /srv/lib - COPY requirements.txt /srv RUN pip install -r requirements.txt -WORKDIR /srv/lib/teleforma -COPY setup.py /srv/lib/teleforma -COPY teleforma /srv/lib/teleforma -COPY README.rst /srv/lib/teleforma +COPY lib /srv/lib +COPY bin/build/local/setup_lib.sh /srv +RUN /srv/setup_lib.sh + +WORKDIR /srv/src/teleforma +COPY setup.py /srv/src/teleforma +COPY teleforma /srv/src/teleforma +COPY README.rst /srv/src/teleforma RUN python setup.py develop WORKDIR /srv/app diff --git a/app/settings.py b/app/settings.py index c2aa29e1..c8b82300 100644 --- a/app/settings.py +++ b/app/settings.py @@ -4,11 +4,11 @@ import os import sys from django.core.urlresolvers import reverse_lazy -import environ +# import environ sys.dont_write_bytecode = True -DEBUG = False +DEBUG = True if os.environ.get('DEBUG') == 'True' else False TEMPLATE_DEBUG = DEBUG import warnings @@ -25,9 +25,9 @@ MANAGERS = ADMINS DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': 'teleforma_crfpa', # Or path to database file if using sqlite3. - 'USER': 'teleforma', # Not used with sqlite3. - 'PASSWORD': '8ShaqueWrac', # Not used with sqlite3. + 'NAME': os.environ.get('MYSQL_DATABASE'), # Or path to database file if using sqlite3. + 'USER': os.environ.get('MYSQL_USER'), # Not used with sqlite3. + 'PASSWORD': os.environ.get('MYSQL_PASSWORD'), # Not used with sqlite3. 'HOST': 'db', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. 'OPTIONS' : { 'init_command' : 'SET storage_engine=InnoDB', }, @@ -62,7 +62,7 @@ USE_L10N = True # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" -MEDIA_ROOT = '/srv/crfpa/var/media/' +MEDIA_ROOT = '/srv/media/' # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). @@ -74,7 +74,7 @@ MEDIA_URL = '/media/' # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/home/media/media.lawrence.com/static/" -STATIC_ROOT = '/srv/crfpa/var/static/' +STATIC_ROOT = '/srv/static/' # URL prefix for static files. # Example: "http://media.lawrence.com/static/" @@ -139,25 +139,17 @@ INSTALLED_APPS = ( 'django.contrib.admin', 'teleforma', 'teleforma.webclass', - 'telemeta', + 'teleforma.exam', 'jsonrpc', 'teleforma', 'south', - 'teleforma.exam', 'sorl.thumbnail', 'django_extensions', 'pagination', 'postman', - # 'private_files', - # 'markup_mixin', - #'notes', - # 'jquery', 'timezones', 'jqchat', -# 'follow', 'googletools', -# 'devserver', - #'timeside', 'extra_views', 'captcha', 'django_nvd3', @@ -169,8 +161,6 @@ INSTALLED_APPS = ( 'true_false', 'essay', 'quiz', - 'unique_session', - #'webviewer', 'pdfannotator', 'captcha', ) @@ -215,6 +205,9 @@ POSTMAN_AUTO_MODERATE_AS=True #FILE_PROTECTION_METHOD = 'xsendfile' +TELEFORMA_ORGANIZATION = 'Pré-Barreau - CRFPA' +TELEFORMA_SUBJECTS = ('Barreau', 'CRFPA', 'e-learning') +TELEFORMA_DESCRIPTION = "E-learning Pré-Barreau - CRFPA" TELEFORMA_E_LEARNING_TYPE = 'CRFPA' TELEFORMA_GLOBAL_TWEETER = False TELEFORMA_PERIOD_TWEETER = True @@ -241,7 +234,7 @@ PASSWORD_HASHERS = [ BOX_API_TOKEN = 'D2pBaN8YqjGIfS0tKrgnMP93' -FILE_UPLOAD_TEMP_DIR = '/srv/crfpa/var/tmp' +FILE_UPLOAD_TEMP_DIR = '/tmp' #SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies" SESSION_ENGINE = "unique_session.backends.session_backend" @@ -300,7 +293,7 @@ LOGGING = { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', - 'filename': "/srv/crfpa/var/log/app.log", + 'filename': "/var/log/app.log", 'formatter': 'simple', }, }, diff --git a/requirements-debian.txt b/debian-packages.txt similarity index 94% rename from requirements-debian.txt rename to debian-packages.txt index 7eba8bc7..a2201051 100644 --- a/requirements-debian.txt +++ b/debian-packages.txt @@ -7,3 +7,4 @@ python-setuptools python-mysqldb python-psycopg2 python-yaml +uwsgi \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index d66d6811..483f8946 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,11 +3,12 @@ version: '3' services: app: build: . - command: /bin/sh app/bin/app.sh + command: /bin/sh /srv/app/bin/app.sh volumes: - ./app/:/srv/app - ./bin:/srv/bin - - ./teleforma/:/srv/lib/teleforma/teleforma + - ./lib:/srv/lib + - ./teleforma/:/srv/src/teleforma/teleforma - ./var/media:/srv/media - ./var/backup:/srv/backup - ./var/static:/srv/static @@ -15,15 +16,15 @@ services: - "8000:8000" links: - db + env_file: + - env/prod.env db: image: mariadb - environment: - - MYSQL_ROOT_PASSWORD=mysecretrootpassword - - MYSQL_DATABASE=teleforma - - MYSQL_USER=teleforma - - MYSQL_PASSWORD=mysecretpassword + env_file: + - env/prod.env volumes: + - ./bin:/srv/bin - ./var/lib/mysql/:/var/lib/mysql - ./var/log/mysql/:/var/log/mysql - ./var/backup/:/srv/backup diff --git a/env/ci.yml b/env/ci.yml new file mode 100644 index 00000000..6d07a094 --- /dev/null +++ b/env/ci.yml @@ -0,0 +1,54 @@ +version: '3.6' +services: + db: + image: mysql:5.7 + volumes: + - ../var/lib/mysql:/var/lib/mysql + - ../etc/mysql/conf.d:/etc/mysql/conf.d + - ../var/backup:/srv/backup + - ../bin:/srv/bin + expose: + - "3306" + env_file: + - 'db.env' + + app: + image: mills.ircam.fr:5000/brahms_app:latest + command: /bin/sh bin/app.sh + volumes: + - ../app:/srv/app + - ../gulpfile.js:/srv/gulpfile.js + - ../package.json:/srv/package.json + - ../var/log/uwsgi:/var/log/uwsgi + - ../var/log/app:/var/log/app + - ../bin:/srv/bin + - ../lib:/srv/lib + - ../doc:/srv/doc + - ../static:/srv/static + - ../pyproject.toml:/srv/pyproject.toml:consistent + - ../poetry.lock:/srv/poetry.lock:consistent + expose: + - "8000" + ports: + - "9030:8000" + depends_on: + - db + - memcached + - node + env_file: + - 'prod.env' + - 'db.env' + + memcached: + image: memcached:alpine + entrypoint: + - memcached + - -m 512 + - -v + + node: + build: ../node + env_file: + - prod.env + restart: always + diff --git a/env/cypress.yml b/env/cypress.yml new file mode 100644 index 00000000..3dd56fa0 --- /dev/null +++ b/env/cypress.yml @@ -0,0 +1,76 @@ +version: '3.6' +services: + db: + image: mysql:5.7 + volumes: + - ../var/lib/mysql:/var/lib/mysql + - ../etc/mysql/conf.d:/etc/mysql/conf.d + - ../var/backup:/srv/backup + - ../bin:/srv/bin + expose: + - "3306" + env_file: + - 'db.env' + + app: + image: mills.ircam.fr:5000/brahms_app:latest + command: /bin/sh bin/app.sh + volumes: + - ../app:/srv/app + - ../gulpfile.js:/srv/gulpfile.js + - ../package.json:/srv/package.json + - ../var/log/uwsgi:/var/log/uwsgi + - ../var/log/app:/var/log/app + - ../bin:/srv/bin + - ../lib:/srv/lib + - ../doc:/srv/doc + - ../static:/srv/static + - ../pyproject.toml:/srv/pyproject.toml:consistent + - ../poetry.lock:/srv/poetry.lock:consistent + expose: + - "8000" + depends_on: + - db + - memcached + - node + env_file: + - 'prod.env' + - 'db.env' + + memcached: + image: memcached:alpine + entrypoint: + - memcached + - -m 512 + - -v + + web: + image: nginx + volumes: + - ../etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf + - ../etc/nginx/nginx.conf:/etc/nginx/nginx.conf + - ../static:/srv/static + - ../var/media:/srv/media + - ../var/stream:/srv/stream + expose: + - "80" + ports: + - "9030:80" + depends_on: + - app + + cypress: + build: + context: .. + dockerfile: ./cypress/Dockerfile + depends_on: + - app + - web + restart: always + + + node: + build: ../node + env_file: + - prod.env + restart: always diff --git a/env/db.env b/env/db.env new file mode 100644 index 00000000..d33aa533 --- /dev/null +++ b/env/db.env @@ -0,0 +1,4 @@ +MYSQL_DATABASE=teleforma +MYSQL_ROOT_PASSWORD=mysecretpassword +MYSQL_USER=teleforma +MYSQL_PASSWORD=teleforma diff --git a/env/db.yml b/env/db.yml new file mode 100644 index 00000000..22ed3876 --- /dev/null +++ b/env/db.yml @@ -0,0 +1,12 @@ +version: '3' + + db: + image: mariadb + env_file: + - 'prod.env' + - 'db.env' + + volumes: + - ./var/lib/mysql/:/var/lib/mysql + - ./var/log/mysql/:/var/log/mysql + - ./var/backup/:/srv/backup diff --git a/env/dev.env b/env/dev.env new file mode 100644 index 00000000..147ae0a0 --- /dev/null +++ b/env/dev.env @@ -0,0 +1 @@ +DEBUG=True diff --git a/env/dev.yml b/env/dev.yml new file mode 100644 index 00000000..4882da6e --- /dev/null +++ b/env/dev.yml @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2015 Guillaume Pellerin + +# Manifeste is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. + +# Manifeste is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with Manifeste. If not, see . + +# Authors: +# Guillaume Pellerin + +version: '3' + +services: + app: + command: /bin/sh bin/app.sh --runserver + env_file: + - 'env/dev.env' + diff --git a/env/prod.env b/env/prod.env new file mode 100644 index 00000000..73390232 --- /dev/null +++ b/env/prod.env @@ -0,0 +1,4 @@ +MYSQL_ROOT_PASSWORD=mysecretpassword +MYSQL_DATABASE=teleforma +MYSQL_USER=teleforma +MYSQL_PASSWORD=mysecretpassword \ No newline at end of file diff --git a/env/prod.yml b/env/prod.yml new file mode 100644 index 00000000..766b5a00 --- /dev/null +++ b/env/prod.yml @@ -0,0 +1,8 @@ +version: '3' + +services: + app: + restart: unless-stopped + env_file: + - env/prod.env + diff --git a/env/staging.env b/env/staging.env new file mode 100644 index 00000000..d82e0047 --- /dev/null +++ b/env/staging.env @@ -0,0 +1,4 @@ +BRAHMS_ENV=STAGING +DEBUG=True +GITLAB_USER=www-data +GITLAB_PWD=s%27%2F%408W%3B%5EC%5EU%7Bq%5CC%3A%29WEu-fVeX%23Y%24tx \ No newline at end of file diff --git a/env/staging.yml b/env/staging.yml new file mode 100644 index 00000000..93b173e4 --- /dev/null +++ b/env/staging.yml @@ -0,0 +1,8 @@ +version: '3.6' +services: + app: + volumes: + - ./var/media:${MEDIA_PATH} + - /srv/ftp:${FTP_PATH} + env_file: + - 'env/staging.env' diff --git a/lib/pdfannotator b/lib/pdfannotator new file mode 160000 index 00000000..36687802 --- /dev/null +++ b/lib/pdfannotator @@ -0,0 +1 @@ +Subproject commit 366878027aafe7f42dbcab8eed55e76259dcecd7 diff --git a/requirements-1.3.txt b/requirements-1.3.txt deleted file mode 100644 index 3516f98a..00000000 --- a/requirements-1.3.txt +++ /dev/null @@ -1,177 +0,0 @@ -amqp==1.0.13 -amqplib==1.0.2 -anyjson==0.3.1 -arabic-reshaper==2.1.1 -asv==0.2 -Babel==2.1.1 -backports.shutil-get-terminal-size==1.0.0 -backports.ssl-match-hostname==3.5.0.1 -beautifulsoup4==4.6.0 -bigbluebutton-api-python==0.0.9 -bleach==3.3.0 -bs4==0.0.1 -cached-property==1.3.0 -celery==2.5.3 -certifi==14.5.14 -chardet==2.1.1 -cl==0.0.3 -configobj==4.7.2 -configparser==4.0.2 -crocodoc==0.1.1 -debtcollector==1.22.0 -decorator==4.0.10 -Django==1.4.19 -django-bootstrap-pagination==1.5.1 -django-bootstrap3==6.1.0 -django-cacheops==2.1.1 -django-celery==2.5.5 -django-debug-toolbar==1.0.1 -django-email-extras==0.1.13 -django-extensions==1.2.1 -django-extra-views==0.7.0 -django-forms-builder==0.8.5 -django-google-tools==1.0.0 -django-jqchat==0.2 -django-json-rpc==0.6.1 -django-linguo==1.3.3 -django-longerusernameandemail==0.5.6 -django-markup-mixin==0.1.0 -django-model-utils==2.3.1 -django-mptt==0.5.2 -django-notes==0.2.2 -django-nvd3==0.8.2 -django-pagination==1.0.7 -django-picklefield==0.2.1 --e git+/var/git/django-postman.git@e432d9e2341d785091a02615c214563f97d31430#egg=django_postman -django-quiz-app==0.5.1 -django-redis-cache==0.13.0 -django-registration==1.0 -django-simple-captcha==0.4.6 -django-suit==0.2.12 -django-timezones==0.2 -django-tinymce==1.5.4 -django-unique-session==1.0 -django-user-agents==0.3.0 -docopt==0.6.2 -docutils==0.8.1 -enum34==1.1.6 -feedparser==5.1.3 -filebrowser-safe==0.2.28 -fpconst==0.7.2 -funcsigs==0.4 -functools32==3.2.3.post2 -funcy==1.2 -future==0.18.2 -gdata==2.0.18 -h5py==2.10.0 -html5lib==1.1 -httplib2==0.8 -ipaddress==1.0.17 -ipython==5.1.0 -ipython-genutils==0.1.0 -iso8601==0.1.11 -Jinja2==2.7.2 -jsonpatch==1.12 -jsonpointer==1.10 -jsonschema==2.5.1 -jxmlease==1.0.3 -keyring==3.8 -keystoneauth1==2.1.0 -kombu==2.5.16 -lazr.uri==1.0.5 -lockfile==0.8 -logilab-astng==0.24.3 -logilab-common==1.4.4 -longerusername==0.4 -mailer==0.7 -Mako==0.7.0 -Markdown==2.1.1 -MarkupSafe==0.15 -mock==1.0.1 -monotonic==0.5 -msgpack-python==0.4.6 -mutagen==1.20 -mysqlclient==1.4.6 -NavAdd==0.1.1 -netaddr==0.7.18 -netifaces==0.10.4 -numpy==1.7.0 -oauth==1.0.1 -oauth2==1.5.211 -oauthlib==0.6.0 -oslo.config==3.2.0 -oslo.i18n==3.1.0 -oslo.serialization==2.2.0 -oslo.utils==3.3.0 -packaging==20.9 -paramiko==1.10.1 -pathlib2==2.1.0 -pbr==1.8.1 -pexpect==4.2.1 -pickleshare==0.7.4 -Pillow==2.5.0 -pkg-resources==0.0.0 -prettytable==0.7.2 -prompt-toolkit==1.0.7 -psutil==5.8.0 -ptyprocess==0.7.0 -pycosat==0.6.1 -pycrypto==2.6 -pydot==1.0.28 -pygit==0.1 -Pygments==2.1.3 -pylint==0.25.1 -pymemcache==3.4.1 -pyparsing==2.0.2 -pyPdf==1.13 -PyPDF2==1.26.0 -python-bidi==0.4.2 -python-dateutil==1.5 -python-ebml==0.2.1 -python-gnupg==0.4.7 -python-keystoneclient==2.0.0 -python-nvd3==0.13.7 -python-openid==2.2.5 -python-slugify==0.0.9 -pytz==2013.9 -pyxdg==0.19 -PyYAML==3.12 -pyzmq==13.1.0 -redis==2.10.3 -reportlab==3.3.0 -requests==2.11.1 -requests-oauthlib==0.3.3 -scipy==0.10.1 -simplegeneric==0.8.1 -simplejson==2.5.2 -six==1.10.0 -sorl-thumbnail==12.3 -South==0.8.2 -Sphinx==1.1.3 -sphinx-me==0.2.1 -sqlparse==0.1.10 -stevedore==1.32.0 --e git+git@git.parisson.com:git/teleforma.git@d72e7afb4f6ec0ea7a665fb7f31e69761c99e952#egg=TeleForma --e git+git@git.parisson.com:git/telemeta.git@2fced3bcac3055830dab4d3d708d89ff0cc7ddb5#egg=Telemeta -texttable==0.8.7 -TimeSide==0.5.3 -traitlets==4.3.1 -ua-parser==0.3.6 -Unidecode==0.4.18 -unittest2==0.5.1 -urllib3==1.7.1 -user-agents==0.3.2 -uwsgitop==0.10 -vatnumber==1.1 -wadllib==1.3.4 -warlock==1.2.0 -wcwidth==0.1.7 -webencodings==0.5.1 -websocket-client==0.40.0 -Werkzeug==0.9.4 -wrapt==1.10.6 -xhtml2pdf==0.2.5 -xlrd==0.6.1 -xlwt==0.7.5 -zipstream==1.0.2 -zope.interface==3.6.1 diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 8a46e19d..00000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,2 +0,0 @@ --e git+https://github.com/Parisson/django_quiz.git#egg=django_quiz-0.5.1 # a supprimer --e git+https://github.com/Parisson/django-jqchat.git@master#egg=django-jqchat diff --git a/requirements-new.txt b/requirements-new.txt index 80dc8fc3..ed16fa32 100644 --- a/requirements-new.txt +++ b/requirements-new.txt @@ -1,9 +1,18 @@ -setuptools -uwsgi -django==1.6.11 -south -django-pagination -django-postman -django-extensions -django-notes -django-timezones +django==1.4.19 +South==0.8.2 # a supprimer +django-pagination==1.0.7 # a supprimer +django-postman==3.2.0 +django-extensions==1.2.1 +django-notes==0.2.2 # a supprimer +django-timezones==0.2 +crocodoc # a supprimer +django-registration==0.8 +django-extra-views==0.6.5 # a supprimer +django-simple-captcha==0.4.6 # a maj +django-suit==0.2.12 # a maj +django-nvd3==0.8.2 +django-user-agents==0.3.0 +xhtml2pdf==0.2.5 +html5lib==1.1 +django-tinymce==1.5.4 +sorl-thumbnail==11.12 diff --git a/requirements.txt b/requirements.txt index 3c768f83..908b1aec 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,19 +1,165 @@ -setuptools -django==1.4.19 -south # a supprimer -django-pagination==1.0.7 # a supprimer -django-postman==3.2.0 +bigbluebutton-api-python==0.0.9 +bleach==3.3.0 +bs4==0.0.1 +cached-property==1.3.0 +celery==2.5.3 +certifi==14.5.14 +chardet==2.1.1 +cl==0.0.3 +configobj==4.7.2 +configparser==4.0.2 +crocodoc==0.1.1 +debtcollector==1.22.0 +decorator==4.0.10 +Django==1.4.19 +django-bootstrap-pagination==1.5.1 +django-bootstrap3==6.1.0 +django-cacheops==2.1.1 +django-celery==2.5.5 +django-debug-toolbar==1.0.1 +django-email-extras==0.1.13 django-extensions==1.2.1 -django-notes # a supprimer -django-timezones==0.2 -crocodoc # a supprimer -django-registration==0.8 -django-extra-views==0.6.5 # a supprimer -django-simple-captcha==0.4.6 # a maj -django-suit==0.2.12 # a maj +django-extra-views==0.7.0 +django-forms-builder==0.8.5 +django-google-tools==1.0.0 +django-json-rpc==0.6.1 +django-linguo==1.3.3 +django-longerusernameandemail==0.5.6 +django-markup-mixin==0.1.0 +django-model-utils==2.3.1 +django-mptt==0.5.2 +django-notes==0.2.2 django-nvd3==0.8.2 +django-pagination==1.0.7 +django-picklefield==0.2.1 +django-postman==3.2.0 +django-quiz-app==0.5.1 +django-redis-cache==0.13.0 +django-registration==1.0 +django-simple-captcha==0.4.6 +django-suit==0.2.12 +django-timezones==0.2 +django-tinymce==1.5.4 +-e git+https://git.parisson.com/git/django-unique-session.git@master#egg=django-unique-session +-e git+https://github.com/Parisson/django-jqchat.git@master#egg=django-jqchat django-user-agents==0.3.0 -xhtml2pdf +docopt==0.6.2 +docutils==0.8.1 +enum34==1.1.6 +feedparser==5.1.3 +filebrowser-safe==0.2.28 +fpconst==0.7.2 +funcsigs==0.4 +functools32==3.2.3.post2 +funcy==1.2 +future==0.18.2 +gdata==2.0.18 +h5py==2.10.0 html5lib==1.1 -django-tinymce==1.5.4 -sorl-thumbnail==11.12 +httplib2==0.8 +ipaddress==1.0.17 +ipython==5.1.0 +ipython-genutils==0.1.0 +iso8601==0.1.11 +Jinja2==2.7.2 +jsonpatch==1.12 +jsonpointer==1.10 +jsonschema==2.5.1 +jxmlease==1.0.3 +keyring==3.8 +keystoneauth1==2.1.0 +kombu==2.5.16 +lazr.uri==1.0.5 +lockfile==0.8 +logilab-astng==0.24.3 +logilab-common==1.4.4 +longerusername==0.4 +mailer==0.7 +Mako==0.7.0 +Markdown==2.1.1 +MarkupSafe==0.15 +mock==1.0.1 +monotonic==0.5 +msgpack-python==0.4.6 +mutagen==1.20 +mysqlclient==1.4.6 +NavAdd==0.1.1 +netaddr==0.7.18 +netifaces==0.10.4 +numpy==1.7.0 +oauth==1.0.1 +oauth2==1.5.211 +oauthlib==0.6.0 +oslo.config==3.2.0 +oslo.i18n==3.1.0 +oslo.serialization==2.2.0 +oslo.utils==3.3.0 +packaging==20.9 +paramiko==1.10.1 +pathlib2==2.1.0 +pbr==1.8.1 +pexpect==4.2.1 +pickleshare==0.7.4 +Pillow==2.5.0 +prettytable==0.7.2 +prompt-toolkit==1.0.7 +psutil==5.8.0 +ptyprocess==0.7.0 +pycosat==0.6.1 +pycrypto==2.6 +pydot==1.0.28 +pygit==0.1 +Pygments==2.1.3 +pylint==0.25.1 +pymemcache==3.4.1 +pyparsing==2.0.2 +pyPdf==1.13 +PyPDF2==1.26.0 +python-bidi==0.4.2 +python-dateutil==1.5 +python-ebml==0.2.1 +python-gnupg==0.4.7 +python-keystoneclient==2.0.0 +python-nvd3==0.13.7 +python-openid==2.2.5 +python-slugify==0.0.9 +pytz==2013.9 +pyxdg==0.19 +PyYAML==3.12 +pyzmq==13.1.0 +redis==2.10.3 +reportlab==3.3.0 +requests==2.11.1 +requests-oauthlib==0.3.3 +scipy==0.10.1 +simplegeneric==0.8.1 +simplejson==2.5.2 +six==1.10.0 +sorl-thumbnail==12.3 +South==0.8.2 +Sphinx==1.1.3 +sphinx-me==0.2.1 +sqlparse==0.1.10 +stevedore==1.32.0 +texttable==0.8.7 +TimeSide==0.5.3 +traitlets==4.3.1 +ua-parser==0.3.6 +Unidecode==0.4.18 +unittest2==0.5.1 +urllib3==1.7.1 +user-agents==0.3.2 +uwsgitop==0.10 +vatnumber==1.1 +wadllib==1.3.4 +warlock==1.2.0 +wcwidth==0.1.7 +webencodings==0.5.1 +websocket-client==0.40.0 +Werkzeug==0.9.4 +wrapt==1.10.6 +xhtml2pdf==0.2.5 +xlrd==0.6.1 +xlwt==0.7.5 +zipstream==1.0.2 +zope.interface==3.6.1 -- 2.39.5