[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
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM python2
+FROM python:2
MAINTAINER Guillaume Pellerin <yomguy@parisson.com>
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 && \
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
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
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', },
# 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).
# 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/"
'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',
'true_false',
'essay',
'quiz',
- 'unique_session',
- #'webviewer',
'pdfannotator',
'captcha',
)
#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
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"
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
- 'filename': "/srv/crfpa/var/log/app.log",
+ 'filename': "/var/log/app.log",
'formatter': 'simple',
},
},
--- /dev/null
+git
+netcat
+vim
+locales
+ipython
+python-setuptools
+python-mysqldb
+python-psycopg2
+python-yaml
+uwsgi
\ No newline at end of file
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
- "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
--- /dev/null
+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
+
--- /dev/null
+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
--- /dev/null
+MYSQL_DATABASE=teleforma
+MYSQL_ROOT_PASSWORD=mysecretpassword
+MYSQL_USER=teleforma
+MYSQL_PASSWORD=teleforma
--- /dev/null
+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
--- /dev/null
+DEBUG=True
--- /dev/null
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2015 Guillaume Pellerin <guillaume.pellerin@ircam.fr>
+
+# 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 <http://www.gnu.org/licenses/>.
+
+# Authors:
+# Guillaume Pellerin <guillaume.pellerin@ircam.fr>
+
+version: '3'
+
+services:
+ app:
+ command: /bin/sh bin/app.sh --runserver
+ env_file:
+ - 'env/dev.env'
+
--- /dev/null
+MYSQL_ROOT_PASSWORD=mysecretpassword
+MYSQL_DATABASE=teleforma
+MYSQL_USER=teleforma
+MYSQL_PASSWORD=mysecretpassword
\ No newline at end of file
--- /dev/null
+version: '3'
+
+services:
+ app:
+ restart: unless-stopped
+ env_file:
+ - env/prod.env
+
--- /dev/null
+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
--- /dev/null
+version: '3.6'
+services:
+ app:
+ volumes:
+ - ./var/media:${MEDIA_PATH}
+ - /srv/ftp:${FTP_PATH}
+ env_file:
+ - 'env/staging.env'
--- /dev/null
+Subproject commit 366878027aafe7f42dbcab8eed55e76259dcecd7
+++ /dev/null
-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
+++ /dev/null
-git
-netcat
-vim
-locales
-ipython
-python-setuptools
-python-mysqldb
-python-psycopg2
-python-yaml
+++ /dev/null
--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
-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
-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