diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index fa52e87..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,32 +0,0 @@ -recursive-include portail_citoyen2/apps/login_plugin/templates *.html -recursive-include portail_citoyen2/apps/login_plugin/static *.css *.gif *.png *.js -recursive-include portail_citoyen2/apps/login_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/data_source_plugin/templates *.html -recursive-include portail_citoyen2/apps/data_source_plugin/static *.css *.gif *.png *.js -recursive-include portail_citoyen2/apps/data_source_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/a2_service_list_plugin/templates *.html -recursive-include portail_citoyen2/apps/a2_service_list_plugin/static *.css *.gif *.png *.js -recursive-include portail_citoyen2/apps/a2_service_list_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/passerelle_register_plugin/templates *.html -recursive-include portail_citoyen2/apps/passerelle_register_plugin/static *.css *.gif *.png *.js -recursive-include portail_citoyen2/apps/passerelle_register_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/auquotidien_plugin/templates *.html -recursive-include portail_citoyen2/apps/auquotidien_plugin/static *.js -recursive-include portail_citoyen2/apps/auquotidien_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/federation_plugin/templates *.html -recursive-include portail_citoyen2/apps/federation_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/feed_plugin/templates *.html -recursive-include portail_citoyen2/apps/feed_plugin/locale *.po *.mo -recursive-include portail_citoyen2/apps/msp/templates *.html -recursive-include portail_citoyen2/apps/msp/static *.css *.gif *.png *.js *.jpg -recursive-include portail_citoyen2/apps/msp/locale *.po *.mo -include portail_citoyen2/apps/msp/README.txt -recursive-include portail_citoyen2/fixtures *.json -recursive-include portail_citoyen2/templates *.html *.txt -recursive-include portail_citoyen2/static *.css *.gif *.png *.js -recursive-include portail_citoyen2/locale *.po *.mo -recursive-include help *.page -include local_settings.py.example -include requirements.txt -include MANIFEST.in -include VERSION diff --git a/README b/README deleted file mode 100644 index cbaa6a1..0000000 --- a/README +++ /dev/null @@ -1,67 +0,0 @@ -How to start -============ - -To work on portail-citoyen just execute the following lines (command -to launch start with $, other lines are expected output):: - - $ pip install -r ./requirements - $ cp local_settings.py.example local_settings.py - $ ./portail-citoyen syncdb --all # you will be asked to create a new admin user - Syncing... - Creating tables ... - [ snipped ] - Creating table cmsplugin_a2servicelistplugin - Creating table registration_registrationprofile - - You just installed Django's auth system, which means you don't have any superusers defined. - Would you like to create one now? (yes/no): yes - Username: admin - First name: admin - Last name: admin - E-mail address: admin@coin.org - Password: - Password (again): - Superuser created successfully. - Installing custom SQL ... - Installing indexes ... - Installed 2 object(s) from 1 fixture(s) - - Synced: - > django.contrib.auth - [ snipped ] - > registration - - Not synced (use migrations): - - - (use ./manage.py migrate to migrate these) - $ ./portail-citoyen migrate --fake - [ lots of migrations running ] - $ ./portail-citoyen runserver - Validating models... - - 0 errors found - April 12, 2013 - 16:04:50 - Django version 1.5.1, using settings 'compte_agglo_montpellier.settings' - Development server is running at http://127.0.0.1:8000/ - Quit the server with CONTROL-C. - -The application is now usable at http://localhost:8000/ - -Settings --------- - -Settings can be passed using a local_settings.py file or the shell -environment. Dictionaries are passed by flattening the variable name and the -dictionnary key separated by an underscore character. For example to passe the -variable MAIN_SITE_URL in templates, define the following environment -variable:: - - export PORTAIL_CITOYEN_TEMPLATE_VARS_MAIN_SITE_URL=https://main-site.com/ - -Those variables must be prefixed with PORTAIL_CITOYEN_ when set in a -local_settings.py file or in the environment. - -Name Description -================================ ============================================ -TEMPLATE_VARS dictionnary of variables passed to templates -PORTAIL_ADMIN_URL URL of the global administration portal diff --git a/TODO b/TODO deleted file mode 100644 index 9407e18..0000000 --- a/TODO +++ /dev/null @@ -1,3 +0,0 @@ -- Authentication is handled by authsaml2 -- First user created must be superadmin -- User admin must be read-only diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..ab8af97 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,6 @@ +portail-citoyen2 (1.0-1) unstable; urgency=medium + + * Initial release + + -- Jérôme Schneider Tue, 01 Apr 2014 15:17:34 +0200 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +7 diff --git a/debian/conf/db.conf b/debian/conf/db.conf new file mode 100644 index 0000000..4b4df01 --- /dev/null +++ b/debian/conf/db.conf @@ -0,0 +1,5 @@ +export DATABASE_ENGINE='django.db.backends.postgresql_psycopg2' +export DATABASE_NAME='_DBC_DBNAME_' +export DATABASE_USER='_DBC_DBUSER_' +export DATABASE_PASSWORD='_DBC_DBPASS_' +export DATABASE_HOST='localhost' diff --git a/debian/conf/nginx-example.conf b/debian/conf/nginx-example.conf new file mode 100644 index 0000000..65a1041 --- /dev/null +++ b/debian/conf/nginx-example.conf @@ -0,0 +1,41 @@ +server { + listen 443; + server_name citoyen.example.fr; + + ssl on; + ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; + ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; + + access_log /var/log/nginx/citoyen.example.fr-access.log combined; + error_log /var/log/nginx/citoyen.example.fr-error.log; + + location /static { + alias /var/lib/portail-citoyen/static; + } + + location / { + proxy_pass http://unix:/var/run/portail-citoyen/portail-citoyen.sock; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-SSL on; + proxy_set_header X-Forwarded-Protocol ssl; + proxy_set_header X-Forwarded-Proto https; + } +} + +server { + listen 80; + server_name citoyen.example.fr; + + access_log /var/log/nginx/citoyen.example.fr-access.log combined; + error_log /var/log/nginx/citoyen.example.fr-error.log; + + location /static { + alias /var/lib/portail-citoyen/static; + } + + location / { + proxy_pass http://unix:/var/run/portail-citoyen/portail-citoyen.sock; + proxy_set_header Host $http_host; + } +} + diff --git a/debian/conf/portail-citoyen2.conf b/debian/conf/portail-citoyen2.conf new file mode 100644 index 0000000..ad7cb65 --- /dev/null +++ b/debian/conf/portail-citoyen2.conf @@ -0,0 +1,46 @@ +# do not remove this line, it imports db configuration from dbconfig-common +[ -f /etc/portail-citoyen/db.conf ] && . /etc/portail-citoyen/db.conf +# do not remove this line, it imports secret which is automatically generated +[ -f /etc/portail-citoyen/secret ] && . /etc/portail-citoyen/secret +# import saml certificates (automatically genereted) +[ -f /etc/portail-citoyen/saml-certs.conf ] && . /etc/portail-citoyen/saml-certs.conf + +# Static root directory +export STATIC_ROOT='/var/lib/portail-citoyen/static' + +# Debug +#export DEBUG=yes + +# Define administrators / managers +export ADMINS='admin eo;admin@entrouvert.com' + +# Database configuration (please use dpkg-reconfigure portail-citoyen) +#export DATABASE_ENGINE='django.db.backends.sqlite3' +#export DATABASE_NAME='/var/lib/portail-citoyen/portail-citoyen.db' + +# Sentry / Raven configuration +#export export RAVEN_CONFIG_DSN='' # require package python-raven + +# Log root directory +export LOG_ROOT='/var/log/portail-citoyen/portail-citoyen.log' + +# We are behind a reverse proxy so we accept every hosts +export ALLOWED_HOSTS='*' + +# Email configuration +#export EMAIL_HOST='localhost' +#export EMAIL_PORT='25' +#export EMAIL_SUBJECT_PREFIX='[Portail Citoyen]' +#export SERVER_EMAIL='root@test.com' +#export DEFAULT_FROM_EMAIL='portail-citoyen@test.com' + +# Enables some features +export IDP_SAML2='yes' +#export IDP_OPENID='yes' +#export IDP_CAS='yes' +#export AUTH_SAML2='yes' +#export AUTH_OPENID='yes' +#export AUTH_SSL='yes' +#export AUTH_OATH='yes' + + diff --git a/debian/conf/syncdb.sh b/debian/conf/syncdb.sh new file mode 100755 index 0000000..b410361 --- /dev/null +++ b/debian/conf/syncdb.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +. /etc/portail-citoyen/portail-citoyen.conf + +python /usr/lib/portail-citoyen/manage.py syncdb --all --noinput +python /usr/lib/portail-citoyen/manage.py migrate --fake --noinput + diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..43f8fb1 --- /dev/null +++ b/debian/control @@ -0,0 +1,41 @@ +Source: portail-citoyen2 +Maintainer: Jérôme Schneider +Section: python +Priority: optional +Build-Depends: python-setuptools (>= 0.6b3), + python-all (>= 2.6.6-3), + debhelper (>= 8.0), + openssl, + python-django (>= 1.5) +Standards-Version: 3.9.1 +X-Python-Version: >= 2.6 + +Package: python-portail-citoyen2 +Architecture: all +Depends: ${misc:Depends}, python (>= 2.6), + python-imaging, + python-feedparser, + python-django (>= 1.5), python-django (<< 1.6), + python-authentic2 (>= 2.1.2), + python-django-cms (>= 3.0rc1), + python-django-admin-tools (>= 0.5), + python-django-admin-tools (<< 0.6), + python-requests (>= 1.0.0), + python-django-allauth (>= 0.14) +Description: Portail citoyen v2 python module +Conflicts: python-portail-citoyen + +Package: portail-citoyen2 +Architecture: all +Depends: ${misc:Depends}, adduser, + python-portail-citoyen2 (>= 1.0), + python-entrouvert (>= 6.0), + python-django-south (>= 0.8.4), + python-psycopg2, + gunicorn, dbconfig-common, + debconf | debconf-2.0, ucf +Recommends: postgresql-client +Suggests: nginx, postgresql +Description: Portail citoyen v2 daemon +Conflicts: portail-citoyen + diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +README diff --git a/debian/portail-citoyen-manage b/debian/portail-citoyen-manage new file mode 100755 index 0000000..dfeab6a --- /dev/null +++ b/debian/portail-citoyen-manage @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ "$(whoami)" != "portail-citoyen" ]; then + if which sudo; then + if sudo -v -u portail-citoyen; then + sudo -u portail-citoyen portail-citoyen-manage "$@" + exit $? + fi + echo "You must run this script with portail-citoyen user" + exit 1 + fi +fi + +if [ -f /etc/portail-citoyen/portail-citoyen.conf ]; then + . /etc/portail-citoyen/portail-citoyen.conf +fi + +/usr/lib/portail-citoyen/manage.py "$@" diff --git a/debian/portail-citoyen2.config b/debian/portail-citoyen2.config new file mode 100644 index 0000000..373c7e3 --- /dev/null +++ b/debian/portail-citoyen2.config @@ -0,0 +1,14 @@ +#!/bin/sh +# config maintainer script for foo-pgsql + +set -e + +# source debconf stuff +. /usr/share/debconf/confmodule +# source dbconfig-common shell library, and call the hook function +if [ -f /usr/share/dbconfig-common/dpkg/config.pgsql ]; then + . /usr/share/dbconfig-common/dpkg/config.pgsql + dbc_go portail-citoyen $@ +fi + +#DEBHELPER# diff --git a/debian/portail-citoyen2.dirs b/debian/portail-citoyen2.dirs new file mode 100644 index 0000000..d58ab9d --- /dev/null +++ b/debian/portail-citoyen2.dirs @@ -0,0 +1,8 @@ +etc/portail-citoyen +usr/lib/portail-citoyen +usr/share/dbconfig-common/scripts/portail-citoyen/install +var/lib/portail-citoyen/media +var/lib/portail-citoyen/static +var/lib/portail-citoyen/extra-static +var/run/portail-citoyen +var/log/portail-citoyen diff --git a/debian/portail-citoyen2.docs b/debian/portail-citoyen2.docs new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/debian/portail-citoyen2.docs @@ -0,0 +1 @@ +README diff --git a/debian/portail-citoyen2.init b/debian/portail-citoyen2.init new file mode 100644 index 0000000..4c8a25c --- /dev/null +++ b/debian/portail-citoyen2.init @@ -0,0 +1,178 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: portail-citoyen +# Required-Start: $network $local_fs +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Portail citoyen +# Description: Portail citoyen +### END INIT INFO + +# Author: Jérôme Schneider + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC=portail-citoyen +NAME=portail-citoyen +DAEMON=/usr/bin/gunicorn +PID_DIR=/var/run/$NAME +LOG_DIR=/var/log/$NAME +PIDFILE=$PID_DIR/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +USER=portail-citoyen +GROUP=portail-citoyen + +DAEMON_ARGS="--pid $PIDFILE \ +--user $USER --group $GROUP \ +--daemon \ +--access-logfile $LOG_DIR/gunicorn-access.log \ +--log-file $LOG_DIR/gunicorn-error.log \ +--bind=unix:$PID_DIR/$NAME.sock \ +--workers=10 \ +--worker-class=sync \ +--timeout=60 \ +portail_citoyen.wsgi:application" + +# Exit if the package is not installed +[ -x $DAEMON ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load confg +. /etc/portail-citoyen/portail-citoyen.conf + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +. /lib/lsb/init-functions + +# Create pid directory +if [ ! -d $PID_DIR ]; then + install -d -m 755 -o $USER -g $GROUP $PID_DIR +fi + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +do_migrate() { + log_action_msg "Applying new migrations .." + su $USER -p -c "/usr/bin/portail-citoyen-manage syncdb --migrate --noinput" + log_action_msg ".. done" +} + + +case "$1" in + start) + do_migrate + log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac + ;; + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + #reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + #log_daemon_msg "Reloading $DESC" "$NAME" + #do_reload + #log_end_msg $? + #;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + do_migrate + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + diff --git a/debian/portail-citoyen2.install b/debian/portail-citoyen2.install new file mode 100644 index 0000000..aa91f67 --- /dev/null +++ b/debian/portail-citoyen2.install @@ -0,0 +1,4 @@ +debian/conf/portail-citoyen.conf /etc/portail-citoyen +debian/conf/nginx-example.conf /etc/portail-citoyen +debian/conf/db.conf /usr/share/portail-citoyen/templates +debian/portail-citoyen-manage /usr/bin diff --git a/debian/portail-citoyen2.postinst b/debian/portail-citoyen2.postinst new file mode 100644 index 0000000..0e8da04 --- /dev/null +++ b/debian/portail-citoyen2.postinst @@ -0,0 +1,87 @@ +#!/bin/sh +# +# Postinst script for portail-citoyen +# + +set -e + +NAME=portail-citoyen +USER=portail-citoyen +GROUP=portail-citoyen +HOME=/var/lib/$NAME + +# source debconf stuff +. /usr/share/debconf/confmodule + +case "$1" in + configure) + if ! getent group $GROUP > /dev/null 2>&1; then + echo -n "Adding group $GROUP.." >&2 + addgroup --quiet --system $GROUP + echo "..done" >&2 + fi + if ! getent passwd $USER > /dev/null 2>&1; then + echo -n "Adding user $USER.." >&2 + adduser --quiet --system --gecos "$NAME daemon" \ + --ingroup $GROUP \ + --no-create-home --home $HOME \ + $USER + echo "..done" >&2 + fi + if [ ! -f "/etc/$NAME/secret" ]; then + echo -n "Generating Django secret.." >&2 + echo "export SECRET_KEY='` /etc/$NAME/secret + chmod 0640 /etc/$NAME/secret + chown root:$GROUP /etc/$NAME/secret + echo "..done" >&2 + fi + if [ ! -f "/etc/$NAME/saml-certs.conf" ]; then + echo -n "Generating SAML certificates.." >&2 + openssl genrsa -out /tmp/saml.key 2048 >&2 + openssl rsa -in /tmp/saml.key -pubout -out /tmp/saml.pub >&2 + echo SAML_SIGNATURE_PRIVATE_KEY=\"`cat /tmp/saml.key`\" > /etc/$NAME/saml-certs.conf + echo SAML_SIGNATURE_PUBLIC_KEY=\"`cat /tmp/saml.pub`\" >> /etc/$NAME/saml-certs.conf + rm /tmp/saml.key /tmp/saml.pub + echo "..done" >&2 + fi + + chown $USER:$GROUP /var/lib/portail-citoyen \ + /var/lib/portail-citoyen/static \ + /var/lib/portail-citoyen/extra-static \ + /var/lib/portail-citoyen/media \ + /var/run/portail-citoyen \ + /var/log/portail-citoyen + + # source dbconfig-common shell library, and call the hook function + if [ -f /usr/share/dbconfig-common/dpkg/postinst.pgsql ]; then + . /usr/share/dbconfig-common/dpkg/postinst.pgsql + dbc_generate_include="template:/etc/portail-citoyen/db.conf" + dbc_generate_include_args="-o template_infile=/usr/share/portail-citoyen/templates/db.conf -U" + dbc_generate_include_owner="root:portail-citoyen" + dbc_generate_include_perms="640" + dbc_pgsql_createdb_encoding="UTF8" + dbc_go portail-citoyen $@ + fi + + echo -n "Generating static files.." >&2 + su $USER -p -c "/usr/bin/portail-citoyen-manage collectstatic --noinput --link" >&2 + echo "..done" >&2 + ;; + + reconfigure|abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +db_stop + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/portail-citoyen2.postrm b/debian/portail-citoyen2.postrm new file mode 100644 index 0000000..80a667b --- /dev/null +++ b/debian/portail-citoyen2.postrm @@ -0,0 +1,32 @@ +#!/bin/sh +# postrm script for portail-citoyen +# +# see: dh_installdeb(1) + +set -e + +case "$1" in purge) + deluser --quiet --system portail-citoyen > /dev/null || true + rm -f /etc/portail-citoyen/secret + rm -rf /var/lib/portail-citoyen/static/* + # source debconf stuff + . /usr/share/debconf/confmodule + # source dbconfig-common shell library, and call the hook function + if [ -f /usr/share/dbconfig-common/dpkg/postrm.pgsql ]; then + . /usr/share/dbconfig-common/dpkg/postrm.pgsql + dbc_go portail-citoyen $@ + fi + + DBCONF=/etc/portail-citoyen/db.conf + if [ "$1" = "purge" ]; then + rm -f $DBCONF + if which ucf >/dev/null 2>&1; then + ucf --purge $DBCONF + fi + fi + ;; + +esac + +exit 0 + diff --git a/debian/python-portail-citoyen2.install b/debian/python-portail-citoyen2.install new file mode 100644 index 0000000..1b91047 --- /dev/null +++ b/debian/python-portail-citoyen2.install @@ -0,0 +1 @@ +usr/ diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..3e8eefa --- /dev/null +++ b/debian/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +d=$(CURDIR)/debian/tmp +portailcitoyen=$(CURDIR)/debian/portail-citoyen + +%: + dh $@ --with python2 + +override_dh_install: + install -m 755 -o root -g root debian/conf/syncdb.sh $(portailcitoyen)/usr/share/dbconfig-common/scripts/portail-citoyen/install/pgsql + mv $(d)/usr/bin/portail-citoyen2 $(portailcitoyen)/usr/lib/portail-citoyen/manage.py + rm -rf $(d)/usr/bin + dh_install + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/help/fr/api-services.page b/help/fr/api-services.page deleted file mode 100644 index 2101ddb..0000000 --- a/help/fr/api-services.page +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - Frédéric Péters - fpeters@entrouvert.com - - - Benjamin Dauvergne - bdauvergne@entrouvert.com - - - Pierre Cros - pcros@entrouvert.com - - Remontée d'informations de services vers le portail citoyen - - -Remontée d'informations vers le portail citoyen - -
-Introduction - -

Le portail citoyen est une plate-forme dans laquelle sont agrégées des -informations provenant de sources web diverses.

- -

Afin de permettre cette remontée d'information pour les services ne -disposant pas nativement d'une API exposée sur le Web, nous proposons -d'utiliser celle qui est décrite dans ce document.

- -
- - -
-Requête - -

Le portail effectue des requêtes HTTP GET vers les différents services. Les -échanges atendus sont conformes au style d'architecture REST.

- - -
-Requête identifiante - -

L'URI utilisée pour ces requêtes peut contenir des informations identifiant -l'usager concerné.

- -
-Identifiant SAML - -

Lorsque le service intègre le protocole de fédération d'identité SAML, la -requête identifiante utilisera un identifiant SAML, le NameID :

- - -https://www.example.com/eservices/pending?NameID=nameid - -
- -
-Adresse électronique - -

Lorsque le service n'intègre pas le protocole de fédération d'identité SAML, -la requête identifiante utilisera l'adresse électronique de l'utilisateur :

- - -https://www.example.com/eservices/pending?email=email - - - - Adresses électroniques identiques -

L'utilisation de cette méthode pour identifier l'utilisateur ne fonctionne - que si ce dernier a employé la même adresse électronique pour la création du - compte citoyen et la création du compte sur le service.

-
-
-
- -
-Autres requêtes - -

Il est possible pour le service d'exposer davantage de données via des -URL.

- -
-Données génériques (qui ne concernent pas un utilisateur particulier) - -

L'applications peut exposer des données génériques (horaires, informations, -actualités). Elle doit le faire via une URL du type :

- -https://www.example.com/eservices/horaires/ -
- -
-Filtres - -

Il peut être utile pour le portail citoyen de filtrer les données récupérées -en utilisant des critères divers (catégories, localisations...) via les URL. -Les filtres doivent être compris dans les URL sous la forme (pour exposer les -horaires de Montpellier par exemple) :

- -https://www.example.com/eservices/montpellier/horaires/ - -
-
-
- -
-Structure de l'information fournie par les services - -

En réponse à la requête du portail citoyen, le service doit fournir une -information structurée. Cette réponse peut prendre plusieurs formes.

- -
-Fils d'info - -

Le portail peut intégrer, sans que cela ne nécessite la moindre -modification, les fils d'information au format RSS et Atom qui sont -offerts par les services.

- -
- -
-HTML - -

Comme pour les fils d'infos, des blocs de code HTML fournis par les services -peuvent être intégrés directement dans le portail. À noter toutefois que ce -HTML doit être "brut" parce qu'il est filtré. Il ne peut pas contenir de -Javascript par exemple.

- -
- -
-JSON - -

La réponse du service à la requête du portail peut aussi être faite en -JSON.

- -
-Liste - -

Les données exposées au format JSON doivent être organisées sous forme d'un -tableau associatif. Les clés (variables) de ce tableau sont les suivantes :

- - -

title : titre (obligatoire)

-

url : URL (obligatoire)

-

description : description (facultatif)

-
- -

La liste des données doit être attachées à une clé nommée data. -

- -

Exemple :

- - -{ "data": [ - {"title": "Demande de bac pour ordures", - "url": "https://eservices.example.com/dechets/demande-bac"}, - {"title": "Demande d'acte de naissance", - "url": "https://eservices.example.com/actes/naissance", - "Description": "Faites vos démarches sans vous déplacer"} - ] -} - - -
- -
-Tableau - -

Le portail citoyen peut aussi recevoir des données qu'il affichera sous -forme de tableau.

- -

La liste des données doit être attachées à une clé nommée data -et une clé nommée columns peut exister pour fournir les libellés -des colonnes. -

- -

Exemple :

- - -{"data": [ - {"day": "Lundi", "open": "8h", "close": "17h"}, - {"day": "Mardi", "open": "8h", "close": "19h"}, - {"day": "Mercredi", "open": "9h", "close": "17h"} - ], - "columns": { - "day": "Jour", - "open": "Horaire d'ouverture", - "close": "Horaire de fermeture"} -} - - -

Le résultat sur le portail citoyen sera l'affichage du tableau suivant :

- - - - - - - - - - - - - - - - - - - - -

Jour

Horaire d'ouverture

Horaire de fermeture

Lundi

8h

17h

Mardi

8h

19h

Mercredi

9h

17h

- -
- -
- -
- -
- Signature de l'URL - -

-L'URL doit être signée via une clé partagée à configurer des deux cotés de la -liaison, la signature est du type HMAC; l'algorithme de hash à employer est -passé en paramètre. -

- -

Si le service doit être utilisé par différents requêteurs il est -recommandé de ne pas utiliser une clé unique; il est ainsi suggéré que l'URL -attende également un paramètre précisant l'appelant, à travers, par exemple, -un paramètre supplémentaire apikey. -

- -

En ce qui concerne l'algorithme de hash, il est préconisé d'utiliser -SHA-256 par respect du Référentiel Général -de Sécurité (RGS).

- - -

-La signature est à calculer sur la query string encodée complète, en -enlevant les paramètres terminaux algo, timestamp, -nonce et signature. La formule de calcul de la -signature est la suivante : -

- - -BASE64(HMAC-HASH(query_string+'algo=HASH&timestamp=' + timestamp + '&nonce=" + nonce, clé)) - - - - -

timestamp est la date dans la zone GMT au format ISO8601 -en se limitant à la précision des secondes (ex : 2012-04-04T12:34:00Z), -

- -

nonce est une chaîne aléatoire contenant au moins 128 bits d'entropie -(16 octets aléatoires),

- -

algo est une chaîne représentant l'algorithme de hachage utilisé, sont -définis : sha1, sha256, sha512 pour les trois algorithmes correspondant. -L'utilisation d'une valeur différente n'est pas définie.

- -
- -

-La query string définitive est ainsi : -

- - -qs_initial&algo=algo&timestamp=ts&nonce=nonce&signature=signature - - -

-Pour la validation il faut contrôler : -

- - - -

que la signature regénérée est identique,

- -

que le timestamp est dans une fenêtre étroite par rapport à la date -courante, il est recommandé d'accepter un écart de trente secondes -maximum.

- -

que le nonce n'a encore jamais été vu (associé au timestamp il suffit -de conserver les nonces pour une durée de 3 ou 4 fois la fenêtre de temps, par -exemple cinq minutes).

- -
- -

-Lors de l'utilisation de ces signatures il est important d'utiliser HTTPS pour -éviter les interceptions et de stocker les nonces pour éviter les rejeux et à -maintenir une bonne synchronisation des horloges, en utilisant par exemple le -protocole NTP. -

- -
- -
diff --git a/jenkins.sh b/jenkins.sh deleted file mode 100755 index 5993b75..0000000 --- a/jenkins.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -e -pip install --upgrade setuptools -pip install --upgrade pip -pip install --upgrade pylint -pip install --upgrade pyOpenSSL==0.13 ndg-httpsclient requests pyasn1 -sed -i 's/^MAX = 64/MAX = 200/' $VIRTUAL_ENV/lib/python*/site-packages/ndg/httpsclient/subj_alt_name.py - -pip install --upgrade -r requirements.txt - -./portail-citoyen syncdb --migrate --noinput --no-initial-data -./portail-citoyen loaddata initial_data -./portail-citoyen validate -(pylint -f parseable --rcfile /var/lib/jenkins/pylint.django.rc portail_citoyen2/ | tee pylint.out) || /bin/true diff --git a/load-base-data.sh b/load-base-data.sh deleted file mode 100755 index 7111c07..0000000 --- a/load-base-data.sh +++ /dev/null @@ -1,5 +0,0 @@ -BASE=`dirname $0` - -ENV=${ENV:-dev} - -$BASE/run.sh loaddata --traceback initial_data diff --git a/local_settings.py.example b/local_settings.py.example deleted file mode 100644 index ef804f1..0000000 --- a/local_settings.py.example +++ /dev/null @@ -1,22 +0,0 @@ - -import os - -DEBUG = True - -if DEBUG: - DEBUG_TOOLBAR = True - TEMPLATE_DEBUG = True - DEBUG_TOOLBAR_CONFIG = { - 'INTERCEPT_REDIRECTS': False, - } -INTERNAL_IPS = ('127.0.0.1',) - -SECRET_KEY = 'coin' - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(os.path.dirname(__file__), 'portail_citoyen.sqlite'), - }, -} - diff --git a/portail-citoyen2 b/portail-citoyen2 deleted file mode 100755 index 3e13785..0000000 --- a/portail-citoyen2 +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "portail_citoyen2.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/portail_citoyen2/__init__.py b/portail_citoyen2/__init__.py deleted file mode 100644 index 7a1d20e..0000000 --- a/portail_citoyen2/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -import os.path -import sys - -__version__ = '0.1' - -apps_dir = os.path.join(os.path.dirname(__file__), 'apps') -if apps_dir not in sys.path: - sys.path.append(apps_dir) diff --git a/portail_citoyen2/admin.py b/portail_citoyen2/admin.py deleted file mode 100644 index 40b3e5b..0000000 --- a/portail_citoyen2/admin.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.views.decorators.cache import never_cache -from django.http import HttpResponseRedirect -from django.utils.http import urlencode -from django.conf import settings -from django.contrib.auth import REDIRECT_FIELD_NAME -from django.contrib import admin - -@never_cache -def login(request, extra_context=None): - query = urlencode({REDIRECT_FIELD_NAME: request.build_absolute_uri()}) - url = '{0}?{1}'.format(settings.LOGIN_URL, query) - return HttpResponseRedirect(url) - -admin.site.login = login diff --git a/portail_citoyen2/allauth_authentic2/__init__.py b/portail_citoyen2/allauth_authentic2/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/allauth_authentic2/models.py b/portail_citoyen2/allauth_authentic2/models.py deleted file mode 100644 index 6b20219..0000000 --- a/portail_citoyen2/allauth_authentic2/models.py +++ /dev/null @@ -1 +0,0 @@ -# Create your models here. diff --git a/portail_citoyen2/allauth_authentic2/provider.py b/portail_citoyen2/allauth_authentic2/provider.py deleted file mode 100644 index 5abb29c..0000000 --- a/portail_citoyen2/allauth_authentic2/provider.py +++ /dev/null @@ -1,33 +0,0 @@ -from allauth.socialaccount import providers -from allauth.socialaccount.providers.base import ProviderAccount -from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider -from allauth.account.models import EmailAddress - -class Authentic2Account(ProviderAccount): - def to_str(self): - return self.account.uid - - -class Authentic2Provider(OAuth2Provider): - id = 'authentic2' - name = 'Authentic2' - package = 'portail_citoyen2.allauth_authentic2' - account_class = Authentic2Account - - def extract_uid(self, data): - return str(data['username']) - - def extract_common_fields(self, data): - return dict(email=data.get('email'), - username=data.get('username'), - name=data.get('displayname')) - - def extract_email_addresses(self, data): - ret = [EmailAddress(email=data['email'], - verified=True, - primary=True)] - return ret - - - -providers.registry.register(Authentic2Provider) diff --git a/portail_citoyen2/allauth_authentic2/tests.py b/portail_citoyen2/allauth_authentic2/tests.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/allauth_authentic2/urls.py b/portail_citoyen2/allauth_authentic2/urls.py deleted file mode 100644 index 69b19e7..0000000 --- a/portail_citoyen2/allauth_authentic2/urls.py +++ /dev/null @@ -1,5 +0,0 @@ -from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns -from .provider import Authentic2Provider - -urlpatterns = default_urlpatterns(Authentic2Provider) - diff --git a/portail_citoyen2/allauth_authentic2/views.py b/portail_citoyen2/allauth_authentic2/views.py deleted file mode 100644 index dae345f..0000000 --- a/portail_citoyen2/allauth_authentic2/views.py +++ /dev/null @@ -1,43 +0,0 @@ -import urlparse -import requests - -from django.core.exceptions import ImproperlyConfigured - -from allauth.socialaccount.providers.oauth2.views import (OAuth2Adapter, - OAuth2LoginView, - OAuth2CallbackView) -from .provider import Authentic2Provider - - -class Authentic2OAuth2Adapter(OAuth2Adapter): - provider_id = Authentic2Provider.id - - def get_url(self): - provider = self.get_provider() - try: - return provider.get_settings()['URL'] - except IndexError: - raise ImproperlyConfigured('The authentic2 provider needs an URL defined in settings') - - @property - def access_token_url(self): - return urlparse.urljoin(self.get_url(), 'access_token') - - @property - def authorize_url(self): - return urlparse.urljoin(self.get_url(), 'authorize') - - @property - def profile_url(self): - return urlparse.urljoin(self.get_url(), 'user-info') - - def complete_login(self, request, app, token, **kwargs): - resp = requests.get(self.profile_url, - headers={'authorization': 'Bearer %s' % token.token}) - extra_data = resp.json() - return self.get_provider().sociallogin_from_response(request, - extra_data) - - -oauth2_login = OAuth2LoginView.adapter_view(Authentic2OAuth2Adapter) -oauth2_callback = OAuth2CallbackView.adapter_view(Authentic2OAuth2Adapter) diff --git a/portail_citoyen2/app_settings.py b/portail_citoyen2/app_settings.py deleted file mode 100644 index 8779707..0000000 --- a/portail_citoyen2/app_settings.py +++ /dev/null @@ -1,38 +0,0 @@ -import sys - -from django.core.exceptions import ImproperlyConfigured - -class AppSettings(object): - __defaults = { - 'PORTAIL_ADMIN_URL': None, - } - - def __init__(self, prefix): - self.prefix = prefix - - def __getattr__(self, name): - if name in self.__defaults: - return self._settings(name, self.__defaults[name]) - else: - return self._settings(name) - - @property - def TEMPLATE_VARS(self): - v = self._settings('TEMPLATE_VARS', {}) - try: - from django.conf import settings - v['LOGOUT_URL'] = settings.LOGOUT_URL - except AttributeError: - raise ImproperlyConfigured('LOGOUT_URL is mandatory') - return v - - def _settings(self, name, default=Ellipsis): - from django.conf import settings - if default is Ellipsis: - return getattr(settings, self.prefix + name) - else: - return getattr(settings, self.prefix + name, default) - -app_settings = AppSettings('PORTAIL_CITOYEN_') -app_settings.__name__ = __name__ -sys.modules[__name__] = app_settings diff --git a/portail_citoyen2/apps/__init__.py b/portail_citoyen2/apps/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/apps/auquotidien_plugin/__init__.py b/portail_citoyen2/apps/auquotidien_plugin/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/apps/auquotidien_plugin/admin.py b/portail_citoyen2/apps/auquotidien_plugin/admin.py deleted file mode 100644 index 48a5e43..0000000 --- a/portail_citoyen2/apps/auquotidien_plugin/admin.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.contrib import admin - -from models import AuQuotidienAPI - -class AuQuotidienAPIAdmin(admin.ModelAdmin): - list_display = [ 'name', 'order', 'active', 'service_provider', 'orig', 'hash_algo', 'verify_certificate', 'allow_redirects', 'timeout' ] - -admin.site.register(AuQuotidienAPI, AuQuotidienAPIAdmin) diff --git a/portail_citoyen2/apps/auquotidien_plugin/cms_plugins.py b/portail_citoyen2/apps/auquotidien_plugin/cms_plugins.py deleted file mode 100644 index 6e3ca1e..0000000 --- a/portail_citoyen2/apps/auquotidien_plugin/cms_plugins.py +++ /dev/null @@ -1,78 +0,0 @@ -import logging -import urlparse - -from django.utils.translation import ugettext_lazy as _ - - -from cms.plugin_pool import plugin_pool - - -from data_source_plugin.cms_plugins import DataSourcePlugin, Data -from data_source_plugin.models import DataSource - -from .models import ( - AuQuotidienActiveFormsPlugin as AuQuotidienActiveFormsPluginModel, - AuQuotidienCategoryPlugin as AuQuotidienCategoryPluginModel) - -logger = logging.getLogger(__name__) - -class FakeSource(object): - def __init__(self, url, api): - self.url = url - self.mime_type = DataSource.JSON - self.api = api - - def __getattr__(self, attribute): - return getattr(self.api, attribute) - -class AuQuotidienBasePlugin(DataSourcePlugin): - model = AuQuotidienActiveFormsPluginModel - render_template = None - text_enabled = True - inlines = [] - url_template = None - - def get_apis(self, context, instance): - user = context['request'].user - return instance.apis.filter(service_provider__libertyfederation__user=user, active=True) - - def get_sources(self, context, instance): - for api in self.get_apis(context, instance): - url = api.base_url - url_suffix = self.url_template - orig = api.orig - url_suffix = url_suffix.format(provider_id=api.provider_id, - orig=orig) - url = urlparse.urljoin(url, url_suffix) - source = FakeSource(url=url, api=api) - yield Data(source, context, 0, instance.refresh) - - def render(self, context, instance, placeholder): - ctx = super(AuQuotidienBasePlugin, self).render(context, instance, - placeholder) - ctx['instance'] = instance - return ctx - - -class AuQuotidienActiveFormsPlugin(AuQuotidienBasePlugin): - model = AuQuotidienActiveFormsPluginModel - name = _('au-quotidien active forms') - render_template = 'auquotidien_plugin/active_forms.html' - text_enabled = True - inlines = [] - url_template = '/myspace/json/forms?format=json&NameID={{{{federations.service_{provider_id}.links.0}}}}&orig={orig}' - - -plugin_pool.register_plugin(AuQuotidienActiveFormsPlugin) - - -class AuQuotidienCategoryPlugin(AuQuotidienBasePlugin): - model = AuQuotidienCategoryPluginModel - name = _('au-quotidien categories') - render_template = 'auquotidien_plugin/categories.html' - text_enabled = True - inlines = [] - url_template = '/categories?format=json&NameID={{{{federations.service_{provider_id}.links.0}}}}&orig={orig}' - - -plugin_pool.register_plugin(AuQuotidienCategoryPlugin) diff --git a/portail_citoyen2/apps/auquotidien_plugin/locale/fr/LC_MESSAGES/django.po b/portail_citoyen2/apps/auquotidien_plugin/locale/fr/LC_MESSAGES/django.po deleted file mode 100644 index 0ec1b74..0000000 --- a/portail_citoyen2/apps/auquotidien_plugin/locale/fr/LC_MESSAGES/django.po +++ /dev/null @@ -1,105 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-10 16:31+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: cms_plugins.py:59 models.py:67 models.py:68 -msgid "au-quotidien active forms" -msgstr "affichage des démarches en cours" - -#: cms_plugins.py:71 models.py:82 -msgid "au-quotidien categories" -msgstr "affichage des catégories de démarches" - -#: models.py:14 -msgid "name" -msgstr "nom" - -#: models.py:16 -msgid "active" -msgstr "actif" - -#: models.py:17 -msgid "order" -msgstr "ordre" - -#: models.py:19 -msgid "liberty service provider for the au-quotidien service" -msgstr "fournisseur de service liberty associé au service au-quotidien" - -#: models.py:21 -msgid "origin" -msgstr "origine" - -#: models.py:22 -msgid "hashing algorithm" -msgstr "algorithme de hachage" - -#: models.py:24 -msgid "signature key" -msgstr "clé de signature" - -#: models.py:26 -msgid "verify certificate" -msgstr "vérifier le certificat SSL" - -#: models.py:28 -msgid "allows HTTP redirections" -msgstr "permettre les redirections HTTP" - -#: models.py:29 -msgid "it can improve latencies to forbid redirection follow" -msgstr "" -"cela peut améliorer les performances en cas d'absence de service d'interdire " -"les redirections" - -#: models.py:31 -msgid "timeout" -msgstr "temps d'expiration pour la requête HTTP" - -#: models.py:33 -msgid "time in second to wait before failing to download a datasource" -msgstr " " - -#: models.py:50 -msgid "au-quotidien API endpoint" -msgstr "terminaison de l'API au-quotidien" - -#: models.py:51 -msgid "au-quotidien API endpoints" -msgstr "terminaisons de l'API au-quotidien" - -#: models.py:56 models.py:71 -msgid "refresh timeout" -msgstr "durée de rafraîchissement" - -#: models.py:57 models.py:72 -msgid "Number of seconds between two web service calls" -msgstr "nombre de secondes entre deux appels au web-service" - -#: models.py:61 models.py:76 -msgid "refresh {0}" -msgstr "durée de rafraîchissement {0}s" - -#: templates/auquotidien_plugin/categories.html:2 -msgid "Other procedures.." -msgstr "Autres démarches..." - -#: templates/auquotidien_plugin/categories.html:20 -msgid "All categories" -msgstr "Toutes les démarches" diff --git a/portail_citoyen2/apps/auquotidien_plugin/migrations/0001_initial.py b/portail_citoyen2/apps/auquotidien_plugin/migrations/0001_initial.py deleted file mode 100644 index 646dae0..0000000 --- a/portail_citoyen2/apps/auquotidien_plugin/migrations/0001_initial.py +++ /dev/null @@ -1,215 +0,0 @@ -# -*- coding: utf-8 -*- -from south.utils import datetime_utils as datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'AuQuotidienAPI' - db.create_table(u'auquotidien_plugin_auquotidienapi', ( - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True)), - ('active', self.gf('django.db.models.fields.BooleanField')(default=True)), - ('order', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('service_provider', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['saml.LibertyServiceProvider'])), - ('orig', self.gf('django.db.models.fields.CharField')(max_length=64)), - ('hash_algo', self.gf('django.db.models.fields.CharField')(default='', max_length=16, blank=True)), - ('signature_key', self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True)), - ('verify_certificate', self.gf('django.db.models.fields.BooleanField')(default=True)), - ('allow_redirects', self.gf('django.db.models.fields.BooleanField')(default=True)), - ('timeout', self.gf('django.db.models.fields.IntegerField')(default=10)), - )) - db.send_create_signal(u'auquotidien_plugin', ['AuQuotidienAPI']) - - # Adding model 'AuQuotidienActiveFormsPlugin' - db.create_table(u'auquotidien_plugin_auquotidienactiveformsplugin', ( - (u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), - ('refresh', self.gf('django.db.models.fields.IntegerField')(default=60)), - )) - db.send_create_signal(u'auquotidien_plugin', ['AuQuotidienActiveFormsPlugin']) - - # Adding M2M table for field apis on 'AuQuotidienActiveFormsPlugin' - m2m_table_name = db.shorten_name(u'auquotidien_plugin_auquotidienactiveformsplugin_apis') - db.create_table(m2m_table_name, ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('auquotidienactiveformsplugin', models.ForeignKey(orm[u'auquotidien_plugin.auquotidienactiveformsplugin'], null=False)), - ('auquotidienapi', models.ForeignKey(orm[u'auquotidien_plugin.auquotidienapi'], null=False)) - )) - db.create_unique(m2m_table_name, ['auquotidienactiveformsplugin_id', 'auquotidienapi_id']) - - # Adding model 'AuQuotidienCategoryPlugin' - db.create_table(u'auquotidien_plugin_auquotidiencategoryplugin', ( - (u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), - ('refresh', self.gf('django.db.models.fields.IntegerField')(default=60)), - )) - db.send_create_signal(u'auquotidien_plugin', ['AuQuotidienCategoryPlugin']) - - # Adding M2M table for field apis on 'AuQuotidienCategoryPlugin' - m2m_table_name = db.shorten_name(u'auquotidien_plugin_auquotidiencategoryplugin_apis') - db.create_table(m2m_table_name, ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('auquotidiencategoryplugin', models.ForeignKey(orm[u'auquotidien_plugin.auquotidiencategoryplugin'], null=False)), - ('auquotidienapi', models.ForeignKey(orm[u'auquotidien_plugin.auquotidienapi'], null=False)) - )) - db.create_unique(m2m_table_name, ['auquotidiencategoryplugin_id', 'auquotidienapi_id']) - - - def backwards(self, orm): - # Deleting model 'AuQuotidienAPI' - db.delete_table(u'auquotidien_plugin_auquotidienapi') - - # Deleting model 'AuQuotidienActiveFormsPlugin' - db.delete_table(u'auquotidien_plugin_auquotidienactiveformsplugin') - - # Removing M2M table for field apis on 'AuQuotidienActiveFormsPlugin' - db.delete_table(db.shorten_name(u'auquotidien_plugin_auquotidienactiveformsplugin_apis')) - - # Deleting model 'AuQuotidienCategoryPlugin' - db.delete_table(u'auquotidien_plugin_auquotidiencategoryplugin') - - # Removing M2M table for field apis on 'AuQuotidienCategoryPlugin' - db.delete_table(db.shorten_name(u'auquotidien_plugin_auquotidiencategoryplugin_apis')) - - - models = { - u'attribute_aggregator.attributeitem': { - 'Meta': {'object_name': 'AttributeItem'}, - 'attribute_name': ('django.db.models.fields.CharField', [], {'default': "('OpenLDAProotDSE', 'OpenLDAProotDSE')", 'max_length': '100'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'output_name_format': ('django.db.models.fields.CharField', [], {'default': "('urn:oasis:names:tc:SAML:2.0:attrname-format:uri', 'SAMLv2 URI')", 'max_length': '100'}), - 'output_namespace': ('django.db.models.fields.CharField', [], {'default': "('Default', 'Default')", 'max_length': '100'}), - 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['attribute_aggregator.AttributeSource']", 'null': 'True', 'blank': 'True'}) - }, - u'attribute_aggregator.attributelist': { - 'Meta': {'object_name': 'AttributeList'}, - 'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'attributes of the list'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['attribute_aggregator.AttributeItem']"}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) - }, - u'attribute_aggregator.attributesource': { - 'Meta': {'object_name': 'AttributeSource'}, - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), - 'namespace': ('django.db.models.fields.CharField', [], {'default': "('Default', 'Default')", 'max_length': '100'}) - }, - u'auquotidien_plugin.auquotidienactiveformsplugin': { - 'Meta': {'object_name': 'AuQuotidienActiveFormsPlugin', '_ormbases': ['cms.CMSPlugin']}, - 'apis': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auquotidien_plugin.AuQuotidienAPI']", 'symmetrical': 'False'}), - u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), - 'refresh': ('django.db.models.fields.IntegerField', [], {'default': '60'}) - }, - u'auquotidien_plugin.auquotidienapi': { - 'Meta': {'ordering': "('order', 'name')", 'object_name': 'AuQuotidienAPI'}, - 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'allow_redirects': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'hash_algo': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '16', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'orig': ('django.db.models.fields.CharField', [], {'max_length': '64'}), - 'service_provider': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['saml.LibertyServiceProvider']"}), - 'signature_key': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'timeout': ('django.db.models.fields.IntegerField', [], {'default': '10'}), - 'verify_certificate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) - }, - u'auquotidien_plugin.auquotidiencategoryplugin': { - 'Meta': {'object_name': 'AuQuotidienCategoryPlugin', '_ormbases': ['cms.CMSPlugin']}, - 'apis': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auquotidien_plugin.AuQuotidienAPI']", 'symmetrical': 'False'}), - u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), - 'refresh': ('django.db.models.fields.IntegerField', [], {'default': '60'}) - }, - 'cms.cmsplugin': { - 'Meta': {'object_name': 'CMSPlugin'}, - 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) - }, - 'cms.placeholder': { - 'Meta': {'object_name': 'Placeholder'}, - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) - }, - u'idp.attributepolicy': { - 'Meta': {'object_name': 'AttributePolicy'}, - 'allow_attributes_selection': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'ask_consent_attributes': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'attribute_filter_for_sso_from_push_sources': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filter attributes of push sources with list'", 'null': 'True', 'to': u"orm['attribute_aggregator.AttributeList']"}), - 'attribute_list_for_sso_from_pull_sources': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes from pull sources'", 'null': 'True', 'to': u"orm['attribute_aggregator.AttributeList']"}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'filter_source_of_filtered_attributes': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'forward_attributes_from_push_sources': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'map_attributes_from_push_sources': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'map_attributes_of_filtered_attributes': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}), - 'output_name_format': ('django.db.models.fields.CharField', [], {'default': "('urn:oasis:names:tc:SAML:2.0:attrname-format:uri', 'SAMLv2 URI')", 'max_length': '100'}), - 'output_namespace': ('django.db.models.fields.CharField', [], {'default': "('Default', 'Default')", 'max_length': '100'}), - 'send_error_and_no_attrs_if_missing_required_attrs': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'source_filter_for_sso_from_push_sources': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'filter attributes of push sources with sources'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['attribute_aggregator.AttributeSource']"}) - }, - u'saml.libertyprovider': { - 'Meta': {'ordering': "('name',)", 'object_name': 'LibertyProvider'}, - 'ca_cert_chain': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'entity_id': ('django.db.models.fields.URLField', [], {'unique': 'True', 'max_length': '200'}), - 'entity_id_sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}), - 'federation_source': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata': ('django.db.models.fields.TextField', [], {}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '140', 'blank': 'True'}), - 'protocol_conformance': ('django.db.models.fields.IntegerField', [], {'max_length': '10'}), - 'public_key': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '140'}), - 'ssl_certificate': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - u'saml.libertyproviderpolicy': { - 'Meta': {'object_name': 'LibertyProviderPolicy'}, - 'authn_request_signature_check_hint': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}) - }, - u'saml.libertyserviceprovider': { - 'Meta': {'object_name': 'LibertyServiceProvider'}, - 'attribute_policy': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attribute_policy'", 'null': 'True', 'to': u"orm['idp.AttributePolicy']"}), - 'enable_following_attribute_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'enable_following_sp_options_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'liberty_provider': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'service_provider'", 'unique': 'True', 'primary_key': 'True', 'to': u"orm['saml.LibertyProvider']"}), - 'policy': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': u"orm['saml.LibertyProviderPolicy']", 'null': 'True'}), - 'sp_options_policy': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'sp_options_policy'", 'null': 'True', 'to': u"orm['saml.SPOptionsIdPPolicy']"}) - }, - u'saml.spoptionsidppolicy': { - 'Meta': {'object_name': 'SPOptionsIdPPolicy'}, - 'accept_slo': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'accepted_name_id_format': ('authentic2.saml.fields.MultiSelectField', [], {'max_length': '1024', 'blank': 'True'}), - 'ask_user_consent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'authn_request_signed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'default_name_id_format': ('django.db.models.fields.CharField', [], {'default': "'none'", 'max_length': '256'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'encrypt_assertion': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'encrypt_nameid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'federation_mode': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), - 'forward_slo': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'idp_initiated_sso': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'iframe_logout_timeout': ('django.db.models.fields.PositiveIntegerField', [], {'default': '300'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'needs_iframe_logout': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'prefered_assertion_consumer_binding': ('django.db.models.fields.CharField', [], {'default': "'meta'", 'max_length': '4'}) - } - } - - complete_apps = ['auquotidien_plugin'] \ No newline at end of file diff --git a/portail_citoyen2/apps/auquotidien_plugin/migrations/__init__.py b/portail_citoyen2/apps/auquotidien_plugin/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/apps/auquotidien_plugin/models.py b/portail_citoyen2/apps/auquotidien_plugin/models.py deleted file mode 100644 index b4bf2ff..0000000 --- a/portail_citoyen2/apps/auquotidien_plugin/models.py +++ /dev/null @@ -1,82 +0,0 @@ -from django.utils.translation import ugettext as _ -from django.db import models - - -from cms.models import CMSPlugin - - -from data_source_plugin.models import DataSource - - -__all__ = [ 'AuQuotidienAPI', 'AuQuotidienActiveFormsPlugin' ] - -class AuQuotidienAPI(models.Model): - name = models.CharField(verbose_name=_('name'), max_length=128, blank=True, - default='') - active = models.BooleanField(verbose_name=_('active'), default=True) - order = models.IntegerField(verbose_name=_('order'), default=0) - service_provider = models.ForeignKey('saml.LibertyServiceProvider', - verbose_name=_('liberty service provider for the au-quotidien ' - 'service')) - orig = models.CharField(max_length=64, verbose_name=_('origin')) - hash_algo = models.CharField(verbose_name=_('hashing algorithm'), - max_length=16, choices=DataSource.HASHES, default='', blank=True) - signature_key = models.CharField(verbose_name=_('signature key'), - max_length=128, default='', blank=True) - verify_certificate = models.BooleanField(verbose_name=_('verify ' - 'certificate'), default=True, blank=True) - allow_redirects = models.BooleanField(verbose_name=_('allows HTTP redirections'), - help_text=_('it can improve latencies to forbid redirection follow'), - default=True) - timeout = models.IntegerField(verbose_name=_('timeout'), - default=10, - help_text=_('time in second to wait before ' - 'failing to download a datasource')) - - @property - def base_url(self): - '''Base URL of the Au-Quotidien service''' - url = self.service_provider.liberty_provider.entity_id - return url.split('/saml/')[0] - - def __unicode__(self): - return self.name - - @property - def provider_id(self): - return self.service_provider.liberty_provider.pk - - class Meta: - verbose_name = _('au-quotidien API endpoint') - verbose_name_plural = _('au-quotidien API endpoints') - ordering = ('order', 'name') - - -class AuQuotidienActiveFormsPlugin(CMSPlugin): - refresh = models.IntegerField(verbose_name=_('refresh timeout'), default=60, - help_text=_('Number of seconds between two web service calls')) - apis = models.ManyToManyField(AuQuotidienAPI, verbose_name=('au-quotidien API endpoints')) - - def __unicode__(self): - return _('refresh {0}').format(self.refresh) - - def copy_relations(self, old_instance): - self.apis = old_instance.apis.all() - - class Meta: - verbose_name = _('au-quotidien active forms') - verbose_name_plural = _('au-quotidien active forms') - -class AuQuotidienCategoryPlugin(CMSPlugin): - refresh = models.IntegerField(verbose_name=_('refresh timeout'), default=60, - help_text=_('Number of seconds between two web service calls')) - apis = models.ManyToManyField(AuQuotidienAPI, verbose_name=('au-quotidien API endpoints')) - - def __unicode__(self): - return _('refresh {0}').format(self.refresh) - - def copy_relations(self, old_instance): - self.apis = old_instance.apis.all() - - class Meta: - verbose_name = _('au-quotidien categories') diff --git a/portail_citoyen2/apps/auquotidien_plugin/static/auquotidien_plugin/js/categories.js b/portail_citoyen2/apps/auquotidien_plugin/static/auquotidien_plugin/js/categories.js deleted file mode 100644 index e6f2da8..0000000 --- a/portail_citoyen2/apps/auquotidien_plugin/static/auquotidien_plugin/js/categories.js +++ /dev/null @@ -1,54 +0,0 @@ -$(document).ready(function () { - $('.aq-catgr-plg').each(function (i, elt) { - var $plugin = $(elt); - var $titles = $('.aq-catgr-plg-title', elt); - var $categories = $('.aq-catgr-plg-body', elt); - var $empty = $plugin.attr('data-empty'); - - if ($plugin.data('initialized')) { - return; - } - $plugin.data('initialized', 1); - - $titles.hide(); - - if ($categories.length > 1) { - if ($empty) { - $categories.hide(); - } else { - $categories.slice(1).hide(); - } - // Create a selector from titles - var $p = $('

'); - var $select = $(' - diff --git a/portail_citoyen2/apps/feed_plugin/templates/feed_plugin/show_user_feed.html b/portail_citoyen2/apps/feed_plugin/templates/feed_plugin/show_user_feed.html deleted file mode 100644 index e13c21b..0000000 --- a/portail_citoyen2/apps/feed_plugin/templates/feed_plugin/show_user_feed.html +++ /dev/null @@ -1,8 +0,0 @@ -

diff --git a/portail_citoyen2/apps/feed_plugin/utils.py b/portail_citoyen2/apps/feed_plugin/utils.py deleted file mode 100644 index f6f37e0..0000000 --- a/portail_citoyen2/apps/feed_plugin/utils.py +++ /dev/null @@ -1,23 +0,0 @@ -import logging -import threading - - -from django.core.cache import cache - -logger = logging.getLogger(__name__) - -def launch_in_thread(key, function, *args, **kwargs): - '''Launch a function in a thread, prevent launching the same function many times using a lock''' - key = 'thread-' + key - created = cache.add(key, 1) - if created: - logger.debug('launching thread for %s', key) - def f(): - try: - function(*args, **kwargs) - finally: - cache.delete(key) - thread = threading.Thread(target=f) - thread.start() - - diff --git a/portail_citoyen2/apps/feed_plugin/widgets.py b/portail_citoyen2/apps/feed_plugin/widgets.py deleted file mode 100644 index 30a7262..0000000 --- a/portail_citoyen2/apps/feed_plugin/widgets.py +++ /dev/null @@ -1,104 +0,0 @@ -from itertools import chain - -from django.forms.widgets import SubWidget, SelectMultiple -from django.forms.util import flatatt -from django.utils.html import conditional_escape -from django.utils.encoding import StrAndUnicode, force_unicode -from django.utils.safestring import mark_safe - -class CheckboxInput(SubWidget): - """ - An object used by CheckboxRenderer that represents a single - . - """ - def __init__(self, name, value, attrs, choice, index): - self.name, self.value = name, value - self.attrs = attrs - self.choice_value = force_unicode(choice[0]) - self.choice_label = force_unicode(choice[1]) - self.index = index - - def __unicode__(self): - return self.render() - - def render(self, name=None, value=None, attrs=None, choices=()): - name = name or self.name - value = value or self.value - attrs = attrs or self.attrs - - if 'id' in self.attrs: - label_for = ' for="%s_%s"' % (self.attrs['id'], self.index) - else: - label_for = '' - choice_label = conditional_escape(force_unicode(self.choice_label)) - return mark_safe(u'%s %s' % (label_for, self.tag(), choice_label)) - - def is_checked(self): - return self.choice_value in self.value - - def tag(self): - if 'id' in self.attrs: - self.attrs['id'] = '%s_%s' % (self.attrs['id'], self.index) - final_attrs = dict(self.attrs, type='checkbox', name=self.name, value=self.choice_value) - if self.is_checked(): - final_attrs['checked'] = 'checked' - return mark_safe(u'' % flatatt(final_attrs)) - -class CheckboxRenderer(StrAndUnicode): - def __init__(self, name, value, attrs, choices): - self.name, self.value, self.attrs = name, value, attrs - self.choices = choices - - def __iter__(self): - for i, choice in enumerate(self.choices): - yield CheckboxInput(self.name, self.value, self.attrs.copy(), choice, i) - - def __getitem__(self, idx): - choice = self.choices[idx] # Let the IndexError propogate - return CheckboxInput(self.name, self.value, self.attrs.copy(), choice, idx) - - def __unicode__(self): - return self.render() - - def render(self): - """Outputs a
    for this set of checkbox fields.""" - return mark_safe(u'
      \n%s\n
    ' % u'\n'.join([u'
  • %s
  • ' - % force_unicode(w) for w in self])) - -class CheckboxMultipleSelect(SelectMultiple): - """ - Checkbox multi select field that enables iteration of each checkbox - Similar to django.forms.widgets.RadioSelect - """ - renderer = CheckboxRenderer - - def __init__(self, *args, **kwargs): - # Override the default renderer if we were passed one. - renderer = kwargs.pop('renderer', None) - if renderer: - self.renderer = renderer - super(CheckboxMultipleSelect, self).__init__(*args, **kwargs) - - def subwidgets(self, name, value, attrs=None, choices=()): - for widget in self.get_renderer(name, value, attrs, choices): - yield widget - - def get_renderer(self, name, value, attrs=None, choices=()): - """Returns an instance of the renderer.""" - if value is None: value = '' - str_values = set([force_unicode(v) for v in value]) # Normalize to string. - if attrs is None: - attrs = {} - if 'id' not in attrs: - attrs['id'] = name - final_attrs = self.build_attrs(attrs) - choices = list(chain(self.choices, choices)) - return self.renderer(name, str_values, final_attrs, choices) - - def render(self, name, value, attrs=None, choices=()): - return self.get_renderer(name, value, attrs, choices).render() - - def id_for_label(self, id_): - if id_: - id_ += '_0' - return id_ diff --git a/portail_citoyen2/apps/passerelle_register_plugin/__init__.py b/portail_citoyen2/apps/passerelle_register_plugin/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/apps/passerelle_register_plugin/cms_plugins.py b/portail_citoyen2/apps/passerelle_register_plugin/cms_plugins.py deleted file mode 100644 index 863c8a1..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/cms_plugins.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.utils.translation import ugettext_lazy as _ - - -from cms.plugin_pool import plugin_pool - - -from portail_citoyen2.cms_plugins import FormPluginBase -from . import models, forms - - -class PasserelleRegisterPlugin(FormPluginBase): - model = models.PasserelleRegisterPlugin - name = _('passerelle register plugin') - render_template = 'passerelle_register_plugin/plugin.html' - text_enabled = True - no_cancel_button = False - form_class = forms.PasserelleRegisterForm - - -plugin_pool.register_plugin(PasserelleRegisterPlugin) diff --git a/portail_citoyen2/apps/passerelle_register_plugin/forms.py b/portail_citoyen2/apps/passerelle_register_plugin/forms.py deleted file mode 100644 index e4f9d9e..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/forms.py +++ /dev/null @@ -1,58 +0,0 @@ -import logging - - -from django import forms - - -import widgets - -logger = logging.getLogger(__name__) - -class PasserelleRegisterForm(forms.Form): - def __init__(self, *args, **kwargs): - self.request = kwargs.pop('request') - self.user = self.request.user - instance = self.instance = kwargs.pop('plugin_instance') - try: - subscriptions = self.subscriptions = self.instance.get_subscriptions(user=self.user.email) - except: - subscriptions = self.subscriptions = [] - logger.warning('unable to retrieve subscriptions for %r: %r', - self.user, self.user.email, exc_info=True) - super(PasserelleRegisterForm, self).__init__(*args, **kwargs) - self.all_choices = set() - for subscription in subscriptions: - if not instance.check_ressource(subscription['name']): - continue - choices = [] - initial = [] - for transport in subscription['transports']['available']: - if not instance.check_transport(transport): - continue - self.all_choices.add(transport) - choices.append((transport, transport)) - if transport in subscription['transports']['defined']: - initial.append(transport) - self.fields[instance.simplify(subscription['name'])] = \ - forms.MultipleChoiceField(label=subscription['description'], - choices=choices, initial=initial, - widget=widgets.CheckboxMultipleSelect, - required=False) - __init__.need_request = True - __init__.need_plugin_instance = True - - - def save(self): - cleaned_data = self.cleaned_data - subscriptions = [] - for key, value in cleaned_data.iteritems(): - subscriptions.append({ - 'name': key, - 'transports': value - }) - try: - self.instance.set_subscriptions(subscriptions, user=self.user.email) - except: - subscriptions = self.subscriptions = [] - logger.warning('unable to save subscriptions for %r: %r', - self.user, self.user.email, exc_info=True) diff --git a/portail_citoyen2/apps/passerelle_register_plugin/locale/fr/LC_MESSAGES/django.po b/portail_citoyen2/apps/passerelle_register_plugin/locale/fr/LC_MESSAGES/django.po deleted file mode 100644 index 1dfb7a4..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/locale/fr/LC_MESSAGES/django.po +++ /dev/null @@ -1,43 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-09-10 15:01+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: cms_plugins.py:36 -msgid "passerelle register plugin" -msgstr "Plugin de gestion d'abonnements" - -#: models.py:20 -msgid "passerelle url" -msgstr "URL du service d'abonnement" - -#: models.py:22 -msgid "ressources restrictions" -msgstr "Restriction sur les ressources ouvertes aux abonnements" - -#: models.py:23 -msgid "transports restrictions" -msgstr "Restriction sur les modes d'envoi" - -#: templates/passerelle_register_plugin/plugin.html:14 -msgid "Name" -msgstr "Nom" - -#: templates/passerelle_register_plugin/plugin.html:37 -msgid "Validate" -msgstr "Valider" diff --git a/portail_citoyen2/apps/passerelle_register_plugin/migrations/0001_initial.py b/portail_citoyen2/apps/passerelle_register_plugin/migrations/0001_initial.py deleted file mode 100644 index c5892f3..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/migrations/0001_initial.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -from south.utils import datetime_utils as datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'PasserelleRegisterPlugin' - db.create_table(u'passerelle_register_plugin_passerelleregisterplugin', ( - (u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), - ('passerelle_url', self.gf('django.db.models.fields.URLField')(max_length=128)), - ('ressources_restrictions', self.gf('django.db.models.fields.TextField')(blank=True)), - ('transports_restrictions', self.gf('django.db.models.fields.TextField')(blank=True)), - )) - db.send_create_signal(u'passerelle_register_plugin', ['PasserelleRegisterPlugin']) - - - def backwards(self, orm): - # Deleting model 'PasserelleRegisterPlugin' - db.delete_table(u'passerelle_register_plugin_passerelleregisterplugin') - - - models = { - 'cms.cmsplugin': { - 'Meta': {'object_name': 'CMSPlugin'}, - 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) - }, - 'cms.placeholder': { - 'Meta': {'object_name': 'Placeholder'}, - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) - }, - u'passerelle_register_plugin.passerelleregisterplugin': { - 'Meta': {'object_name': 'PasserelleRegisterPlugin', '_ormbases': ['cms.CMSPlugin']}, - u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), - 'passerelle_url': ('django.db.models.fields.URLField', [], {'max_length': '128'}), - 'ressources_restrictions': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'transports_restrictions': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - } - } - - complete_apps = ['passerelle_register_plugin'] \ No newline at end of file diff --git a/portail_citoyen2/apps/passerelle_register_plugin/migrations/__init__.py b/portail_citoyen2/apps/passerelle_register_plugin/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/apps/passerelle_register_plugin/models.py b/portail_citoyen2/apps/passerelle_register_plugin/models.py deleted file mode 100644 index 4eb75f6..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/models.py +++ /dev/null @@ -1,122 +0,0 @@ -import requests -import requests.exceptions -import logging -import json - - -from django.db import models -from django.utils.translation import ugettext as _ -from django.template.defaultfilters import slugify -from django.core.cache import cache - - -from cms.models import CMSPlugin - - -logger = logging.getLogger(__name__) - - -class PasserelleRegisterPlugin(CMSPlugin): - passerelle_url = models.URLField(verbose_name=_('passerelle url'), - max_length=128) - ressources_restrictions = models.TextField(verbose_name=_('ressources restrictions'), blank=True) - transports_restrictions = models.TextField(verbose_name=_('transports restrictions'), blank=True) - - __ressources_restrictions = None - __transports_restrictions = None - - def simplify(self, name): - return slugify(name.strip()) - - def get_ressources_restrictions(self): - if self.__ressources_restrictions is None: - self.__ressources_restrictions = [] - for name in filter(None, map(self.simplify, self.ressources_restrictions.strip().split(','))): - self.__ressources_restrictions.append(name) - return self.__ressources_restrictions - - def get_transports_restrictions(self): - if self.__transports_restrictions is None: - self.__transports_restrictions = [] - for name in filter(None, map(self.simplify, self.transports_restrictions.strip().split(','))): - self.__transports_restrictions.append(name) - return self.__transports_restrictions - - - def check_ressource(self, ressource): - restrictions = self.get_ressources_restrictions() - if restrictions and self.simplify(ressource) not in restrictions: - return False - return True - - def check_transport(self, transport): - restrictions = self.get_transports_restrictions() - if restrictions and self.simplify(transport) not in restrictions: - return False - return True - - def key(self, **kwargs): - return 'passerelle_register_subscriptions_'+slugify(self.passerelle_url+repr(sorted(kwargs.iteritems()))) - - def get_subscriptions(self, **kwargs): - key = self.key(**kwargs) - early_response = cache.get(key) - if early_response is not None: - logger.debug('got subscriptions from cache') - return early_response - http_response = requests.get(self.passerelle_url, params=kwargs) - json_response = http_response.json() - if json_response['err'] == 0: - logger.debug('got subscriptions from %s: %r', self.passerelle_url, - json_response['data']) - cache.set(key, json_response['data']) - return json_response['data'] - else: - logger.error('got subscriptions from %(url)s failed: %(json)r', - { 'url': self.passerelle_url, - 'json': json_response }) - return [] - - def set_subscriptions(self, subscriptions, **kwargs): - old_subscriptions = self.get_subscriptions(**kwargs) - index = {} - for subscription in subscriptions: - index[subscription['name']] = subscription - post = [] - for subscription in old_subscriptions: - new_defined = set(subscription['transports']['defined']) - if self.simplify(subscription['name']) in index: - new_subscription = index[subscription['name']] - for transport in subscription['transports']['available']: - stransport = self.simplify(transport) - if self.check_transport(transport): - if stransport in new_subscription['transports']: - new_defined.add(transport) - else: - new_defined.discard(transport) - post.append(dict(name=subscription['name'], - transports=list(new_defined))) - headers = {'Content-type': 'application/json', 'Accept': 'application/json'} - try: - response = requests.post(self.passerelle_url, params=kwargs, - data=json.dumps(post), headers=headers) - response.raise_for_status() - except requests.exceptions.HTTPError: - logger.error(u'set subscriptions on %s returned an HTTP error code: %s', - response.request.url, response.status_code) - except requests.exceptions.RequestException, e: - logger.error(u'set subscriptions on %s failed with exception: %s', - response.request.url, e) - else: - logger.debug(u'set subscriptions on %s: post %r', response.request.url, - post) - logger.debug(u'set subscriptions on %s: response %r', - response.request.url, response.content) - cache.delete(self.key(**kwargs)) - if response.json()['err'] != 0: - logger.error(u'set subscriptions on %s returned an error: %r', - response.request.url, response.json()) - - - def __unicode__(self): - return u'' % self.passerelle_url diff --git a/portail_citoyen2/apps/passerelle_register_plugin/templates/passerelle_register_plugin/plugin.html b/portail_citoyen2/apps/passerelle_register_plugin/templates/passerelle_register_plugin/plugin.html deleted file mode 100644 index 817aeb6..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/templates/passerelle_register_plugin/plugin.html +++ /dev/null @@ -1,39 +0,0 @@ -{% load i18n %} - -
    - {{ form.non_field_errors }} - {% for field in form %} - {{ field.errors }} - {% endfor %} - -
    - {% csrf_token %} - - - - - {% for choice in form.all_choices %} - - {% endfor %} - - - - {% for field in form %} - - - {% for choice in form.all_choices %} - {% for checkbox in field %} - {% if checkbox.choice_value == choice %} - - {% endif %} - {% endfor %} - {% endfor %} - - {% endfor %} - -
    {% trans "Name" %} - {{ choice }} -
    {{ checkbox.tag }}
    - -
    -
    diff --git a/portail_citoyen2/apps/passerelle_register_plugin/tests.py b/portail_citoyen2/apps/passerelle_register_plugin/tests.py deleted file mode 100644 index 501deb7..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/tests.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -This file demonstrates writing tests using the unittest module. These will pass -when you run "manage.py test". - -Replace this with more appropriate tests for your application. -""" - -from django.test import TestCase - - -class SimpleTest(TestCase): - def test_basic_addition(self): - """ - Tests that 1 + 1 always equals 2. - """ - self.assertEqual(1 + 1, 2) diff --git a/portail_citoyen2/apps/passerelle_register_plugin/views.py b/portail_citoyen2/apps/passerelle_register_plugin/views.py deleted file mode 100644 index 60f00ef..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/views.py +++ /dev/null @@ -1 +0,0 @@ -# Create your views here. diff --git a/portail_citoyen2/apps/passerelle_register_plugin/widgets.py b/portail_citoyen2/apps/passerelle_register_plugin/widgets.py deleted file mode 100644 index 30a7262..0000000 --- a/portail_citoyen2/apps/passerelle_register_plugin/widgets.py +++ /dev/null @@ -1,104 +0,0 @@ -from itertools import chain - -from django.forms.widgets import SubWidget, SelectMultiple -from django.forms.util import flatatt -from django.utils.html import conditional_escape -from django.utils.encoding import StrAndUnicode, force_unicode -from django.utils.safestring import mark_safe - -class CheckboxInput(SubWidget): - """ - An object used by CheckboxRenderer that represents a single - . - """ - def __init__(self, name, value, attrs, choice, index): - self.name, self.value = name, value - self.attrs = attrs - self.choice_value = force_unicode(choice[0]) - self.choice_label = force_unicode(choice[1]) - self.index = index - - def __unicode__(self): - return self.render() - - def render(self, name=None, value=None, attrs=None, choices=()): - name = name or self.name - value = value or self.value - attrs = attrs or self.attrs - - if 'id' in self.attrs: - label_for = ' for="%s_%s"' % (self.attrs['id'], self.index) - else: - label_for = '' - choice_label = conditional_escape(force_unicode(self.choice_label)) - return mark_safe(u'%s %s' % (label_for, self.tag(), choice_label)) - - def is_checked(self): - return self.choice_value in self.value - - def tag(self): - if 'id' in self.attrs: - self.attrs['id'] = '%s_%s' % (self.attrs['id'], self.index) - final_attrs = dict(self.attrs, type='checkbox', name=self.name, value=self.choice_value) - if self.is_checked(): - final_attrs['checked'] = 'checked' - return mark_safe(u'' % flatatt(final_attrs)) - -class CheckboxRenderer(StrAndUnicode): - def __init__(self, name, value, attrs, choices): - self.name, self.value, self.attrs = name, value, attrs - self.choices = choices - - def __iter__(self): - for i, choice in enumerate(self.choices): - yield CheckboxInput(self.name, self.value, self.attrs.copy(), choice, i) - - def __getitem__(self, idx): - choice = self.choices[idx] # Let the IndexError propogate - return CheckboxInput(self.name, self.value, self.attrs.copy(), choice, idx) - - def __unicode__(self): - return self.render() - - def render(self): - """Outputs a
      for this set of checkbox fields.""" - return mark_safe(u'
        \n%s\n
      ' % u'\n'.join([u'
    • %s
    • ' - % force_unicode(w) for w in self])) - -class CheckboxMultipleSelect(SelectMultiple): - """ - Checkbox multi select field that enables iteration of each checkbox - Similar to django.forms.widgets.RadioSelect - """ - renderer = CheckboxRenderer - - def __init__(self, *args, **kwargs): - # Override the default renderer if we were passed one. - renderer = kwargs.pop('renderer', None) - if renderer: - self.renderer = renderer - super(CheckboxMultipleSelect, self).__init__(*args, **kwargs) - - def subwidgets(self, name, value, attrs=None, choices=()): - for widget in self.get_renderer(name, value, attrs, choices): - yield widget - - def get_renderer(self, name, value, attrs=None, choices=()): - """Returns an instance of the renderer.""" - if value is None: value = '' - str_values = set([force_unicode(v) for v in value]) # Normalize to string. - if attrs is None: - attrs = {} - if 'id' not in attrs: - attrs['id'] = name - final_attrs = self.build_attrs(attrs) - choices = list(chain(self.choices, choices)) - return self.renderer(name, str_values, final_attrs, choices) - - def render(self, name, value, attrs=None, choices=()): - return self.get_renderer(name, value, attrs, choices).render() - - def id_for_label(self, id_): - if id_: - id_ += '_0' - return id_ diff --git a/portail_citoyen2/cms_plugins.py b/portail_citoyen2/cms_plugins.py deleted file mode 100644 index 10c5776..0000000 --- a/portail_citoyen2/cms_plugins.py +++ /dev/null @@ -1,49 +0,0 @@ -from django.utils.translation import ugettext as _ -from django.core.exceptions import ImproperlyConfigured -from django.forms import ModelForm - - -from cms.plugin_base import CMSPluginBase - -from . import utils - -class FormPluginBase(CMSPluginBase): - form_class = None - no_cancel_button = True - submit_text = None - add_form_prefix = True - cache = False - - def get_form_class(self, request, context, instance, placeholder): - return self.form_class - - def render(self, context, instance, placeholder): - request = context['request'] - class_name = self.__class__.__name__.lower() - context['submit_name'] = submit = 'submit-{class_name}-{instance_id}'.format( - class_name=class_name, - instance_id=instance.id) - context['submit_value'] = self.submit_text or _('Modify') - context['instance'] = instance - context['no_cancel_button'] = self.no_cancel_button - kwargs = {} - if self.add_form_prefix: - kwargs['prefix'] = class_name - form_class = self.get_form_class(request, context, instance, - placeholder) - if issubclass(form_class, ModelForm): - if not hasattr(self, 'get_object'): - raise ImproperlyConfigured('Your plugin class is missing a get_object method but use a ModelForm') - kwargs['instance'] = context['object'] = self.get_object(request, context, instance, placeholder) - if utils.callable_has_arg(form_class.__init__, 'plugin_instance'): - kwargs['plugin_instance'] = instance - if utils.callable_has_arg(form_class.__init__, 'request'): - kwargs['request'] = request - if request.method == 'POST' and submit in request.POST: - form = form_class(data=request.POST, **kwargs) - if form.is_valid(): - form.save() - else: - form = form_class(**kwargs) - context['form'] = form - return context diff --git a/portail_citoyen2/context_processors.py b/portail_citoyen2/context_processors.py deleted file mode 100644 index b363983..0000000 --- a/portail_citoyen2/context_processors.py +++ /dev/null @@ -1,7 +0,0 @@ -from . import app_settings - -def template_vars(request): - ctx = app_settings.TEMPLATE_VARS.copy() - if app_settings.PORTAIL_ADMIN_URL: - ctx['PORTAIL_ADMIN_URL'] = app_settings.PORTAIL_ADMIN_URL - return ctx diff --git a/portail_citoyen2/dashboard.py b/portail_citoyen2/dashboard.py deleted file mode 100644 index fae5d41..0000000 --- a/portail_citoyen2/dashboard.py +++ /dev/null @@ -1,73 +0,0 @@ -from django.utils.translation import ugettext_lazy as _ -from admin_tools.dashboard import modules, Dashboard, AppIndexDashboard - - -class CustomIndexDashboard(Dashboard): - """ - Custom index dashboard for Compte Orleans - """ - def init_with_context(self, context): - # append an app list module for "Applications" - self.children.append(modules.ModelList( - _('Contents'), - models=( - 'cms.models.pagemodel.Page', - 'data_source_plugin.models.DataSource', - 'feed_plugin.models.Feed', - ), - )) - - self.children.append(modules.ModelList( - _('Announces'), - models=( - 'portail_citoyen_announces.*', - ), - )) - - # append a recent actions module - self.children.append(modules.RecentActions(_('Recent Actions'), 5)) - - # append another link list module for "support". - self.children.append(modules.LinkList( - _('Support'), - children=[ - { - 'title': _('Project site'), - 'url': 'https://dev.entrouvert.org/projects/portail-citoyen/', - 'external': True, - }, - { - 'title': _('Report a bug'), - 'url': 'https://dev.entrouvert.org/projects/portail-citoyen/issues/new', - 'external': True, - }, - ] - )) - - -class CustomAppIndexDashboard(AppIndexDashboard): - """ - Custom app index dashboard for Compte Orleans - """ - - # we disable title because its redundant with the model list module - title = '' - - def __init__(self, *args, **kwargs): - AppIndexDashboard.__init__(self, *args, **kwargs) - - # append a model list module and a recent actions module - self.children += [ - modules.ModelList(self.app_title, self.models), - modules.RecentActions( - _('Recent Actions'), - include_list=self.get_app_content_types(), - limit=5 - ) - ] - - def init_with_context(self, context): - """ - Use this method if you need to access the request context. - """ - return super(CustomAppIndexDashboard, self).init_with_context(context) diff --git a/portail_citoyen2/fixtures/demo.json b/portail_citoyen2/fixtures/demo.json deleted file mode 100644 index c63b044..0000000 --- a/portail_citoyen2/fixtures/demo.json +++ /dev/null @@ -1,5588 +0,0 @@ -[ -{ - "pk": 1, - "model": "sites.site", - "fields": { - "domain": "portail-citoyen.au-quotidien.com", - "name": "Portail citoyen" - } -}, -{ - "pk": 4, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 5, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 6, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 9, - "model": "cms.placeholder", - "fields": { - "slot": "gauche.html", - "default_width": null - } -}, -{ - "pk": 10, - "model": "cms.placeholder", - "fields": { - "slot": "droite.html", - "default_width": null - } -}, -{ - "pk": 11, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 13, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 14, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 15, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 16, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 17, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 18, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 19, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 20, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 21, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 22, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 23, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 24, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 25, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 26, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 27, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 28, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 29, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 30, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 31, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 32, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 33, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 34, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 35, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 36, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 37, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 38, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 39, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 40, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 41, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 42, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 43, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 44, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 53, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 54, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 55, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 56, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 57, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 58, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 59, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 60, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 61, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 62, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 63, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 64, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 65, - "model": "cms.placeholder", - "fields": { - "slot": "Titre colonne gauche", - "default_width": null - } -}, -{ - "pk": 66, - "model": "cms.placeholder", - "fields": { - "slot": "gauche", - "default_width": null - } -}, -{ - "pk": 67, - "model": "cms.placeholder", - "fields": { - "slot": "centre", - "default_width": null - } -}, -{ - "pk": 68, - "model": "cms.placeholder", - "fields": { - "slot": "droite", - "default_width": null - } -}, -{ - "pk": 71, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 72, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 73, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 74, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 75, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 76, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 78, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 79, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 80, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 81, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 82, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 83, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 84, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 85, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 86, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 87, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 88, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 89, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 90, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 91, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 92, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 93, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 94, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 95, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 96, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 97, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 98, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 99, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 100, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 101, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 102, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 103, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 104, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 105, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 106, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 107, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 108, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 109, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 110, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 119, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 120, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 121, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 122, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 123, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 124, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 125, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 126, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 127, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 128, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 129, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 130, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 131, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 132, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 133, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 134, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 135, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 136, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 137, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 138, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 139, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 140, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 141, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 142, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 143, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 144, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 145, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 146, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 147, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 148, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 149, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 150, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 152, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 157, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 158, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 159, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 160, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 161, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 162, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 163, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 164, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 165, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 166, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 167, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 168, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 169, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 170, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 171, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 172, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 173, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 174, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 175, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 176, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 177, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 178, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 179, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 180, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 181, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 182, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 183, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 184, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 185, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 186, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 187, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 188, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 189, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 190, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 191, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 192, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 193, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 194, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 195, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 196, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 197, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 198, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 199, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 200, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 204, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 205, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 206, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 207, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 208, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 209, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 210, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 211, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 212, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 213, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 214, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 215, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 216, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 217, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 218, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 219, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 220, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 221, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 222, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 223, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 224, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 225, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 226, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 227, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 228, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 229, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 230, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 231, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 232, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 233, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 234, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 235, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 236, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 240, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 241, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 242, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 243, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 244, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 245, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 246, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 247, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 248, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 249, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 250, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 251, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 252, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 253, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 254, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 255, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 256, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 257, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 258, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 259, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 260, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 261, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 262, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 263, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 264, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 265, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 266, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 267, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 268, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 269, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 270, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 271, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 272, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 273, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 274, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 275, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 276, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 277, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 278, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 279, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 280, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 281, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 282, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 283, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 284, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 285, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 286, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 287, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 288, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 289, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 290, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 291, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 292, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 293, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 294, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 295, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 296, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 297, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 298, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 299, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 300, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 301, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 302, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 303, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 304, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 305, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 306, - "model": "cms.placeholder", - "fields": { - "slot": "admin-links", - "default_width": null - } -}, -{ - "pk": 307, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 308, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 309, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 310, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 311, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 312, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 319, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 320, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 321, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 322, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 323, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 324, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 326, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 327, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 328, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 329, - "model": "cms.placeholder", - "fields": { - "slot": "right", - "default_width": null - } -}, -{ - "pk": 330, - "model": "cms.placeholder", - "fields": { - "slot": "left", - "default_width": null - } -}, -{ - "pk": 331, - "model": "cms.placeholder", - "fields": { - "slot": "stack_content", - "default_width": null - } -}, -{ - "pk": 332, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 333, - "model": "cms.placeholder", - "fields": { - "slot": "center", - "default_width": null - } -}, -{ - "pk": 602, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-04-17T17:18:02.731Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-03-19T15:54:03.304Z", - "lft": 1, - "tree_id": 139, - "position": 0, - "placeholder": 5, - "plugin_type": "A2ServiceListPlugin" - } -}, -{ - "pk": 603, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-04-17T17:18:02.819Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-03-21T08:17:08.384Z", - "lft": 1, - "tree_id": 140, - "position": 2, - "placeholder": 5, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 604, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-04-17T17:18:02.938Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-03-21T14:08:42.833Z", - "lft": 1, - "tree_id": 141, - "position": 3, - "placeholder": 5, - "plugin_type": "RawInlineTemplatePlugin" - } -}, -{ - "pk": 605, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-04-17T17:18:03.026Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-03-21T14:10:39.535Z", - "lft": 1, - "tree_id": 142, - "position": 4, - "placeholder": 5, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 606, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-05T08:24:54.989Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-03-19T15:53:50.436Z", - "lft": 1, - "tree_id": 143, - "position": 0, - "placeholder": 6, - "plugin_type": "LoginPlugin" - } -}, -{ - "pk": 608, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-05T08:24:54.997Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-03-29T12:19:18.285Z", - "lft": 1, - "tree_id": 145, - "position": 1, - "placeholder": 6, - "plugin_type": "RawInlineTemplatePlugin" - } -}, -{ - "pk": 609, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-05T08:24:55.006Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-10T08:51:44.887Z", - "lft": 1, - "tree_id": 146, - "position": 2, - "placeholder": 6, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 758, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-04-23T17:01:21.745Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-23T16:57:49.967Z", - "lft": 1, - "tree_id": 183, - "position": 2, - "placeholder": 78, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 759, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-04-23T16:58:20.435Z", - "parent": 758, - "language": "fr", - "level": 1, - "creation_date": "2013-04-23T16:58:18.595Z", - "lft": 2, - "tree_id": 183, - "position": 0, - "placeholder": 78, - "plugin_type": "SelectUserFeedPlugin" - } -}, -{ - "pk": 760, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-05-12T11:52:53.258Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-23T16:58:42.289Z", - "lft": 1, - "tree_id": 184, - "position": 3, - "placeholder": 78, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 761, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-04-24T07:39:02.605Z", - "parent": 760, - "language": "fr", - "level": 1, - "creation_date": "2013-04-23T16:59:03.038Z", - "lft": 2, - "tree_id": 184, - "position": 1, - "placeholder": 78, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 1289, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-05T08:24:55.104Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-18T08:35:19.946Z", - "lft": 1, - "tree_id": 244, - "position": 0, - "placeholder": 80, - "plugin_type": "LoginPlugin" - } -}, -{ - "pk": 1290, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-05-12T06:16:35.005Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-07T02:51:36.702Z", - "lft": 1, - "tree_id": 245, - "position": 0, - "placeholder": 143, - "plugin_type": "VideoPlugin" - } -}, -{ - "pk": 1291, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-05-07T03:10:30.607Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-07T02:52:15.528Z", - "lft": 1, - "tree_id": 246, - "position": 0, - "placeholder": 144, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 1292, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-05-08T07:16:35.183Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-07T02:53:55.914Z", - "lft": 1, - "tree_id": 247, - "position": 1, - "placeholder": 144, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 1586, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-06-20T10:19:37.289Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-06-20T10:18:31.253Z", - "lft": 1, - "tree_id": 302, - "position": 4, - "placeholder": 78, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 1588, - "model": "cms.cmsplugin", - "fields": { - "rght": 8, - "changed_date": "2013-09-10T19:15:28.654Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-06-21T14:47:36.308Z", - "lft": 1, - "tree_id": 303, - "position": 1, - "placeholder": 161, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 1589, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-09-05T08:24:54.671Z", - "parent": 1588, - "language": "fr", - "level": 1, - "creation_date": "2013-06-21T14:47:55.017Z", - "lft": 2, - "tree_id": 303, - "position": 1, - "placeholder": 161, - "plugin_type": "SelectUserFeedPlugin" - } -}, -{ - "pk": 1590, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-09-18T09:36:11.360Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-06-21T14:48:13.432Z", - "lft": 1, - "tree_id": 304, - "position": 0, - "placeholder": 160, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 1666, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-07-30T09:09:44.363Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-07T02:51:36.702Z", - "lft": 1, - "tree_id": 320, - "position": 0, - "placeholder": 145, - "plugin_type": "VideoPlugin" - } -}, -{ - "pk": 1667, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-07-30T09:09:44.396Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-07T02:52:15.528Z", - "lft": 1, - "tree_id": 321, - "position": 0, - "placeholder": 146, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 1668, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-07-30T09:09:44.403Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-07T02:53:55.914Z", - "lft": 1, - "tree_id": 322, - "position": 1, - "placeholder": 146, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2153, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-08-12T12:57:15.926Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T20:49:51.192Z", - "lft": 1, - "tree_id": 331, - "position": 0, - "placeholder": 71, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2155, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-05T08:24:54.838Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-28T15:50:44.472Z", - "lft": 1, - "tree_id": 333, - "position": 1, - "placeholder": 71, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2225, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-09-18T09:36:15.587Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-23T16:57:49.967Z", - "lft": 1, - "tree_id": 353, - "position": 2, - "placeholder": 79, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2226, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-09-18T09:36:15.495Z", - "parent": 2225, - "language": "fr", - "level": 1, - "creation_date": "2013-04-23T16:58:18.595Z", - "lft": 2, - "tree_id": 353, - "position": 0, - "placeholder": 79, - "plugin_type": "SelectUserFeedPlugin" - } -}, -{ - "pk": 2227, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-09-18T09:36:15.611Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-23T16:58:42.289Z", - "lft": 1, - "tree_id": 354, - "position": 3, - "placeholder": 79, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2228, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-09-18T09:36:15.545Z", - "parent": 2227, - "language": "fr", - "level": 1, - "creation_date": "2013-04-23T16:59:03.038Z", - "lft": 2, - "tree_id": 354, - "position": 1, - "placeholder": 79, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2229, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-18T09:36:15.628Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-06-20T10:18:31.253Z", - "lft": 1, - "tree_id": 355, - "position": 4, - "placeholder": 79, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2230, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2013-09-18T09:36:15.690Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-06-21T14:48:13.432Z", - "lft": 1, - "tree_id": 356, - "position": 0, - "placeholder": 162, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2232, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-09-18T09:36:15.748Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-06-21T14:47:36.308Z", - "lft": 1, - "tree_id": 357, - "position": 1, - "placeholder": 164, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2233, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-09-18T09:36:15.727Z", - "parent": 2232, - "language": "fr", - "level": 1, - "creation_date": "2013-06-21T14:47:55.017Z", - "lft": 2, - "tree_id": 357, - "position": 1, - "placeholder": 164, - "plugin_type": "SelectUserFeedPlugin" - } -}, -{ - "pk": 2272, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-12-24T08:57:40.277Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-12-23T09:44:40.980Z", - "lft": 1, - "tree_id": 361, - "position": 0, - "placeholder": 326, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2273, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-12-24T08:57:40.244Z", - "parent": 2272, - "language": "fr", - "level": 1, - "creation_date": "2013-12-23T09:49:51.846Z", - "lft": 2, - "tree_id": 361, - "position": 1, - "placeholder": 326, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2274, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2013-12-24T10:07:52.042Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-10-15T14:42:11.789Z", - "lft": 1, - "tree_id": 362, - "position": 2, - "placeholder": 311, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2275, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2013-12-24T10:07:51.203Z", - "parent": 2274, - "language": "fr", - "level": 1, - "creation_date": "2013-10-15T15:37:12.072Z", - "lft": 2, - "tree_id": 362, - "position": 0, - "placeholder": 311, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2287, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2014-01-21T15:14:43.292Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T09:46:38.654Z", - "lft": 1, - "tree_id": 365, - "position": 0, - "placeholder": 328, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2288, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T15:42:03.167Z", - "parent": 2287, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T09:46:58.929Z", - "lft": 2, - "tree_id": 365, - "position": 1, - "placeholder": 328, - "plugin_type": "ProfileFormPlugin" - } -}, -{ - "pk": 2289, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-21T09:48:10.212Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T09:47:41.788Z", - "lft": 1, - "tree_id": 366, - "position": 0, - "placeholder": 327, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2290, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T14:24:03.489Z", - "parent": 2289, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T09:48:06.757Z", - "lft": 2, - "tree_id": 366, - "position": 1, - "placeholder": 327, - "plugin_type": "AccountManagementPlugin" - } -}, -{ - "pk": 2291, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-21T15:19:50.635Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T09:48:22.921Z", - "lft": 1, - "tree_id": 367, - "position": 2, - "placeholder": 327, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2466, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2014-01-21T11:31:35.423Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T11:31:27.895Z", - "lft": 1, - "tree_id": 372, - "position": null, - "placeholder": 331, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2473, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T15:19:49.026Z", - "parent": 2291, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T15:19:47.230Z", - "lft": 2, - "tree_id": 367, - "position": 0, - "placeholder": 327, - "plugin_type": "FederationPlugin" - } -}, -{ - "pk": 2474, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-21T15:19:56.833Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T09:47:41.788Z", - "lft": 1, - "tree_id": 373, - "position": 0, - "placeholder": 329, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2475, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T15:19:56.818Z", - "parent": 2474, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T15:19:56.816Z", - "lft": 2, - "tree_id": 373, - "position": 1, - "placeholder": 329, - "plugin_type": "AccountManagementPlugin" - } -}, -{ - "pk": 2476, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-21T15:19:56.841Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T09:48:22.921Z", - "lft": 1, - "tree_id": 374, - "position": 2, - "placeholder": 329, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2477, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T15:19:56.827Z", - "parent": 2476, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T15:19:47.230Z", - "lft": 2, - "tree_id": 374, - "position": 0, - "placeholder": 329, - "plugin_type": "FederationPlugin" - } -}, -{ - "pk": 2479, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-21T15:19:56.867Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2014-01-21T09:46:38.654Z", - "lft": 1, - "tree_id": 376, - "position": 0, - "placeholder": 330, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2480, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T15:42:03.203Z", - "parent": 2479, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T09:46:58.929Z", - "lft": 2, - "tree_id": 376, - "position": 1, - "placeholder": 330, - "plugin_type": "ProfileFormPlugin" - } -}, -{ - "pk": 2574, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-21T18:17:09.254Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-10-15T14:42:11.789Z", - "lft": 1, - "tree_id": 382, - "position": 2, - "placeholder": 312, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2575, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-21T18:17:09.229Z", - "parent": 2574, - "language": "fr", - "level": 1, - "creation_date": "2013-10-15T15:37:12.072Z", - "lft": 2, - "tree_id": 382, - "position": 0, - "placeholder": 312, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2687, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-23T10:11:53.173Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T21:21:00.789Z", - "lft": 1, - "tree_id": 388, - "position": 1, - "placeholder": 74, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2688, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-23T10:11:53.119Z", - "parent": 2687, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T17:34:02.998Z", - "lft": 2, - "tree_id": 388, - "position": 1, - "placeholder": 74, - "plugin_type": "ShowUserFeedPlugin" - } -}, -{ - "pk": 2689, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-23T10:13:22.469Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T21:23:01.669Z", - "lft": 1, - "tree_id": 389, - "position": 0, - "placeholder": 74, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2690, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-23T10:13:21.458Z", - "parent": 2689, - "language": "fr", - "level": 1, - "creation_date": "2013-05-06T16:23:46.648Z", - "lft": 2, - "tree_id": 389, - "position": 0, - "placeholder": 74, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2691, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2014-01-23T10:11:53.221Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-14T07:01:23.187Z", - "lft": 1, - "tree_id": 390, - "position": 0, - "placeholder": 147, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2692, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-23T10:12:17.505Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T21:09:42.797Z", - "lft": 1, - "tree_id": 391, - "position": 1, - "placeholder": 73, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2693, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-23T10:12:15.450Z", - "parent": 2692, - "language": "fr", - "level": 1, - "creation_date": "2013-05-06T16:20:41.631Z", - "lft": 2, - "tree_id": 391, - "position": 0, - "placeholder": 73, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2694, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2014-01-23T10:11:53.335Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-12T05:07:52.469Z", - "lft": 1, - "tree_id": 392, - "position": 2, - "placeholder": 73, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2703, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2014-01-23T10:13:26.069Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-14T07:01:23.187Z", - "lft": 1, - "tree_id": 393, - "position": 0, - "placeholder": 148, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2704, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-23T10:13:26.173Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T21:09:42.797Z", - "lft": 1, - "tree_id": 394, - "position": 1, - "placeholder": 75, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2705, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-23T10:13:26.132Z", - "parent": 2704, - "language": "fr", - "level": 1, - "creation_date": "2013-05-06T16:20:41.631Z", - "lft": 2, - "tree_id": 394, - "position": 0, - "placeholder": 75, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 2706, - "model": "cms.cmsplugin", - "fields": { - "rght": 2, - "changed_date": "2014-01-23T10:13:26.188Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-05-12T05:07:52.469Z", - "lft": 1, - "tree_id": 395, - "position": 2, - "placeholder": 75, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2707, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-23T10:13:26.279Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T21:21:00.789Z", - "lft": 1, - "tree_id": 396, - "position": 1, - "placeholder": 76, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2708, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-23T10:13:26.223Z", - "parent": 2707, - "language": "fr", - "level": 1, - "creation_date": "2014-01-21T17:34:02.998Z", - "lft": 2, - "tree_id": 396, - "position": 1, - "placeholder": 76, - "plugin_type": "ShowUserFeedPlugin" - } -}, -{ - "pk": 2709, - "model": "cms.cmsplugin", - "fields": { - "rght": 4, - "changed_date": "2014-01-23T10:13:26.302Z", - "parent": null, - "language": "fr", - "level": 0, - "creation_date": "2013-04-17T21:23:01.669Z", - "lft": 1, - "tree_id": 397, - "position": 0, - "placeholder": 76, - "plugin_type": "TextPlugin" - } -}, -{ - "pk": 2710, - "model": "cms.cmsplugin", - "fields": { - "rght": 3, - "changed_date": "2014-01-23T10:13:26.253Z", - "parent": 2709, - "language": "fr", - "level": 1, - "creation_date": "2013-05-06T16:23:46.648Z", - "lft": 2, - "tree_id": 397, - "position": 0, - "placeholder": 76, - "plugin_type": "DataSourcePlugin" - } -}, -{ - "pk": 3, - "model": "cms.page", - "fields": { - "rght": 22, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T14:38:00.576Z", - "lft": 1, - "in_navigation": true, - "reverse_id": "top-page", - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 6, - "placeholders": [ - 141, - 142, - 149, - 21, - 22, - 23, - 24 - ], - "changed_date": "2013-04-17T19:57:53.782Z", - "limit_visibility_in_menu": null, - "parent": null, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T16:52:43.112Z", - "publisher_public": 6, - "level": 0, - "changed_by": "admin", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 4, - "model": "cms.page", - "fields": { - "rght": 3, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T14:38:21.017Z", - "lft": 2, - "in_navigation": true, - "reverse_id": null, - "login_required": true, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 6, - "placeholders": [ - 81, - 147, - 25, - 26, - 27, - 28, - 73, - 74 - ], - "changed_date": "2014-01-23T10:13:26.321Z", - "limit_visibility_in_menu": 1, - "parent": 3, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T16:52:46.846Z", - "publisher_public": 7, - "level": 1, - "changed_by": "jschneider", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 5, - "model": "cms.page", - "fields": { - "rght": 7, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T14:38:34.539Z", - "lft": 6, - "in_navigation": true, - "reverse_id": null, - "login_required": true, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 6, - "placeholders": [ - 78, - 150, - 160, - 161, - 29, - 30, - 31, - 32 - ], - "changed_date": "2013-09-18T09:36:15.787Z", - "limit_visibility_in_menu": 1, - "parent": 3, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T16:52:49.637Z", - "publisher_public": 8, - "level": 1, - "changed_by": "admin", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 6, - "model": "cms.page", - "fields": { - "rght": 34, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T16:52:47.741Z", - "lft": 1, - "in_navigation": true, - "reverse_id": "top-page", - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 1, - "placeholders": [ - 33, - 34, - 35, - 36 - ], - "changed_date": "2013-04-17T19:57:53.490Z", - "limit_visibility_in_menu": null, - "parent": null, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T16:52:43.112Z", - "publisher_public": 3, - "level": 0, - "changed_by": "admin", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 7, - "model": "cms.page", - "fields": { - "rght": 7, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T16:52:51.490Z", - "lft": 4, - "in_navigation": true, - "reverse_id": null, - "login_required": true, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 1, - "placeholders": [ - 76, - 82, - 148, - 37, - 38, - 39, - 40, - 75 - ], - "changed_date": "2014-01-23T10:13:25.891Z", - "limit_visibility_in_menu": 1, - "parent": 6, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T16:52:46.846Z", - "publisher_public": 4, - "level": 1, - "changed_by": "jschneider", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 8, - "model": "cms.page", - "fields": { - "rght": 11, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T16:52:54.294Z", - "lft": 10, - "in_navigation": true, - "reverse_id": null, - "login_required": true, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 1, - "placeholders": [ - 79, - 162, - 163, - 164, - 41, - 42, - 43, - 44 - ], - "changed_date": "2013-09-18T09:36:15.241Z", - "limit_visibility_in_menu": 1, - "parent": 6, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T16:52:49.637Z", - "publisher_public": 5, - "level": 1, - "changed_by": "admin", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 11, - "model": "cms.page", - "fields": { - "rght": 21, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T17:16:05.199Z", - "lft": 10, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 6, - "placeholders": [ - 143, - 144, - 165, - 166, - 53, - 54, - 55, - 56 - ], - "changed_date": "2013-07-30T09:09:44.417Z", - "limit_visibility_in_menu": null, - "parent": 3, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T17:16:05.110Z", - "publisher_public": 14, - "level": 1, - "changed_by": "admin", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 14, - "model": "cms.page", - "fields": { - "rght": 33, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-04-17T17:16:26.509Z", - "lft": 22, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 1, - "placeholders": [ - 145, - 146, - 167, - 168, - 65, - 66, - 67, - 68 - ], - "changed_date": "2013-07-30T09:09:44.257Z", - "limit_visibility_in_menu": null, - "parent": 6, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-04-17T17:16:05.110Z", - "publisher_public": 11, - "level": 1, - "changed_by": "admin", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 18, - "model": "cms.page", - "fields": { - "rght": 16, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:10:39.765Z", - "lft": 11, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 6, - "placeholders": [ - 169, - 170 - ], - "changed_date": "2013-07-30T09:13:15.507Z", - "limit_visibility_in_menu": null, - "parent": 11, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:10.503Z", - "publisher_public": 23, - "level": 2, - "changed_by": "admin", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 19, - "model": "cms.page", - "fields": { - "rght": 18, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:11:13.857Z", - "lft": 17, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 6, - "placeholders": [ - 171, - 172, - 173, - 174 - ], - "changed_date": "2013-07-30T09:13:20.346Z", - "limit_visibility_in_menu": null, - "parent": 11, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:15.342Z", - "publisher_public": 26, - "level": 2, - "changed_by": "admin", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 20, - "model": "cms.page", - "fields": { - "rght": 20, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:11:42.715Z", - "lft": 19, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 6, - "placeholders": [ - 175, - 176, - 177, - 332 - ], - "changed_date": "2014-01-22T07:36:49.907Z", - "limit_visibility_in_menu": null, - "parent": 11, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:17.404Z", - "publisher_public": 27, - "level": 2, - "changed_by": "serghei", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 21, - "model": "cms.page", - "fields": { - "rght": 13, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:12:20.405Z", - "lft": 12, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 6, - "placeholders": [ - 178, - 179, - 180, - 199 - ], - "changed_date": "2014-01-21T21:04:34.498Z", - "limit_visibility_in_menu": null, - "parent": 18, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:12.209Z", - "publisher_public": 24, - "level": 3, - "changed_by": "serghei", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 22, - "model": "cms.page", - "fields": { - "rght": 15, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:13:01.527Z", - "lft": 14, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 6, - "placeholders": [ - 181, - 182, - 183, - 301 - ], - "changed_date": "2014-01-21T21:05:39.041Z", - "limit_visibility_in_menu": null, - "parent": 18, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:14.358Z", - "publisher_public": 25, - "level": 3, - "changed_by": "serghei", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 23, - "model": "cms.page", - "fields": { - "rght": 28, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:13:15.466Z", - "lft": 23, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 1, - "placeholders": [ - 184, - 185 - ], - "changed_date": "2013-07-30T09:13:15.466Z", - "limit_visibility_in_menu": null, - "parent": 14, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:10.463Z", - "publisher_public": 18, - "level": 2, - "changed_by": "admin", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 24, - "model": "cms.page", - "fields": { - "rght": 25, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:13:17.169Z", - "lft": 24, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 1, - "placeholders": [ - 186, - 187, - 188, - 200 - ], - "changed_date": "2014-01-21T21:04:34.430Z", - "limit_visibility_in_menu": null, - "parent": 23, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:12.209Z", - "publisher_public": 21, - "level": 3, - "changed_by": "serghei", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 25, - "model": "cms.page", - "fields": { - "rght": 27, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:13:19.313Z", - "lft": 26, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 1, - "placeholders": [ - 189, - 190, - 191, - 302 - ], - "changed_date": "2014-01-21T21:05:38.973Z", - "limit_visibility_in_menu": null, - "parent": 23, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:14.358Z", - "publisher_public": 22, - "level": 3, - "changed_by": "serghei", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 26, - "model": "cms.page", - "fields": { - "rght": 30, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:13:20.292Z", - "lft": 29, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 1, - "placeholders": [ - 192, - 193, - 194, - 195 - ], - "changed_date": "2013-07-30T09:13:20.292Z", - "limit_visibility_in_menu": null, - "parent": 14, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:15.289Z", - "publisher_public": 19, - "level": 2, - "changed_by": "admin", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 27, - "model": "cms.page", - "fields": { - "rght": 32, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-07-30T09:13:22.365Z", - "lft": 31, - "in_navigation": true, - "reverse_id": null, - "login_required": false, - "created_by": "admin", - "publication_end_date": null, - "template": "base_help.html", - "tree_id": 1, - "placeholders": [ - 196, - 197, - 198, - 333 - ], - "changed_date": "2014-01-22T07:36:49.822Z", - "limit_visibility_in_menu": null, - "parent": 14, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-07-30T09:13:17.404Z", - "publisher_public": 20, - "level": 2, - "changed_by": "serghei", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 60, - "model": "cms.page", - "fields": { - "rght": 9, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-10-15T14:39:49.607Z", - "lft": 8, - "in_navigation": false, - "reverse_id": null, - "login_required": false, - "created_by": "jschneider", - "publication_end_date": null, - "template": "base_one_column.html", - "tree_id": 6, - "placeholders": [ - 307, - 308, - 311 - ], - "changed_date": "2014-01-21T18:17:09.274Z", - "limit_visibility_in_menu": null, - "parent": 3, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-10-15T14:39:53.632Z", - "publisher_public": 61, - "level": 1, - "changed_by": "jschneider", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 61, - "model": "cms.page", - "fields": { - "rght": 19, - "navigation_extenders": "", - "site": 1, - "creation_date": "2013-10-15T14:39:58.464Z", - "lft": 12, - "in_navigation": false, - "reverse_id": null, - "login_required": false, - "created_by": "jschneider", - "publication_end_date": null, - "template": "base_one_column.html", - "tree_id": 1, - "placeholders": [ - 309, - 310, - 312 - ], - "changed_date": "2014-01-21T18:17:09.037Z", - "limit_visibility_in_menu": null, - "parent": 6, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2013-10-15T14:39:53.632Z", - "publisher_public": 60, - "level": 1, - "changed_by": "jschneider", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 68, - "model": "cms.page", - "fields": { - "rght": 5, - "navigation_extenders": "", - "site": 1, - "creation_date": "2014-01-21T08:37:00.814Z", - "lft": 4, - "in_navigation": true, - "reverse_id": null, - "login_required": true, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 6, - "placeholders": [ - 327, - 328 - ], - "changed_date": "2014-01-21T15:19:56.875Z", - "limit_visibility_in_menu": 1, - "parent": 3, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2014-01-21T08:37:06.415Z", - "publisher_public": 69, - "level": 1, - "changed_by": "admin", - "publisher_is_draft": true, - "published": true - } -}, -{ - "pk": 69, - "model": "cms.page", - "fields": { - "rght": 9, - "navigation_extenders": "", - "site": 1, - "creation_date": "2014-01-21T08:37:11.341Z", - "lft": 8, - "in_navigation": true, - "reverse_id": null, - "login_required": true, - "created_by": "admin", - "publication_end_date": null, - "template": "base_two_columns.html", - "tree_id": 1, - "placeholders": [ - 329, - 330 - ], - "changed_date": "2014-01-21T15:19:56.748Z", - "limit_visibility_in_menu": 1, - "parent": 6, - "publisher_state": 0, - "soft_root": false, - "publication_date": "2014-01-21T08:37:06.415Z", - "publisher_public": 68, - "level": 1, - "changed_by": "admin", - "publisher_is_draft": false, - "published": true - } -}, -{ - "pk": 1, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2013-07-31T14:14:01.444Z", - "page": 3, - "user": null - } -}, -{ - "pk": 3, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T14:09:37.634Z", - "page": 5, - "user": null - } -}, -{ - "pk": 4, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2013-04-18T13:22:50.673Z", - "page": 3, - "user": null - } -}, -{ - "pk": 5, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T14:09:37.669Z", - "page": 11, - "user": null - } -}, -{ - "pk": 6, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2013-07-31T14:14:01.594Z", - "page": 11, - "user": null - } -}, -{ - "pk": 7, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T14:09:37.697Z", - "page": 19, - "user": null - } -}, -{ - "pk": 8, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2013-07-31T14:14:01.697Z", - "page": 18, - "user": null - } -}, -{ - "pk": 9, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2013-07-31T14:14:01.715Z", - "page": 19, - "user": null - } -}, -{ - "pk": 13, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T16:40:36.513Z", - "page": 3, - "user": null - } -}, -{ - "pk": 15, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T16:40:36.552Z", - "page": 5, - "user": null - } -}, -{ - "pk": 17, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T16:40:36.638Z", - "page": 11, - "user": null - } -}, -{ - "pk": 18, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T16:40:36.689Z", - "page": 18, - "user": null - } -}, -{ - "pk": 19, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T16:40:36.706Z", - "page": 19, - "user": null - } -}, -{ - "pk": 24, - "model": "cms.pagemoderatorstate", - "fields": { - "action": "ADD", - "message": "", - "created": "2014-01-21T16:40:36.884Z", - "page": 68, - "user": null - } -}, -{ - "pk": 3, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "/mes-e-services", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "top-page", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T14:38:00.809Z", - "page": 3, - "path": "", - "meta_description": "", - "slug": "top-page" - } -}, -{ - "pk": 4, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Mes e-services", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T14:38:21.239Z", - "page": 4, - "path": "mes-e-services", - "meta_description": "", - "slug": "mes-e-services" - } -}, -{ - "pk": 5, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Mes abonnements", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T14:38:34.760Z", - "page": 5, - "path": "mes-abonnements", - "meta_description": "", - "slug": "mes-abonnements" - } -}, -{ - "pk": 6, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "/mes-e-services", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "top-page", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T14:38:00.809Z", - "page": 6, - "path": "", - "meta_description": "", - "slug": "top-page" - } -}, -{ - "pk": 7, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Mes e-services", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T14:38:21.239Z", - "page": 7, - "path": "mes-e-services", - "meta_description": "", - "slug": "mes-e-services" - } -}, -{ - "pk": 8, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Mes abonnements", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T14:38:34.760Z", - "page": 8, - "path": "mes-abonnements", - "meta_description": "", - "slug": "mes-abonnements" - } -}, -{ - "pk": 11, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Aide", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T17:16:05.421Z", - "page": 11, - "path": "aide", - "meta_description": "", - "slug": "aide" - } -}, -{ - "pk": 14, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Aide", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-04-17T17:16:05.421Z", - "page": 14, - "path": "aide", - "meta_description": "", - "slug": "aide" - } -}, -{ - "pk": 17, - "model": "cms.title", - "fields": { - "menu_title": null, - "redirect": null, - "meta_keywords": null, - "page_title": null, - "language": "fr", - "title": "Qu'est-ce que mon compte citoyen ?", - "has_url_overwrite": false, - "application_urls": null, - "creation_date": "2013-07-30T09:10:39.788Z", - "page": 18, - "path": "aide/quest-ce-que-mon-compte-citoyen", - "meta_description": null, - "slug": "quest-ce-que-mon-compte-citoyen" - } -}, -{ - "pk": 18, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Qu'est-ce que mes e-services ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:11:13.880Z", - "page": 19, - "path": "aide/quest-ce-que-mes-e-services", - "meta_description": "", - "slug": "quest-ce-que-mes-e-services" - } -}, -{ - "pk": 19, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Qu'est-ce que mes abonnements ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:11:42.736Z", - "page": 20, - "path": "aide/quest-ce-que-mes-abonnements", - "meta_description": "", - "slug": "quest-ce-que-mes-abonnements" - } -}, -{ - "pk": 20, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Pourquoi cr\u00e9er un compte citoyen ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:12:20.429Z", - "page": 21, - "path": "aide/quest-ce-que-mon-compte-citoyen/pourquoi-creer-un-compte-citoyen", - "meta_description": "", - "slug": "pourquoi-creer-un-compte-citoyen" - } -}, -{ - "pk": 21, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Comment cr\u00e9e-t-on un compte ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:13:01.552Z", - "page": 22, - "path": "aide/quest-ce-que-mon-compte-citoyen/comment-cree-t-un-compte", - "meta_description": "", - "slug": "comment-cree-t-un-compte" - } -}, -{ - "pk": 22, - "model": "cms.title", - "fields": { - "menu_title": null, - "redirect": null, - "meta_keywords": null, - "page_title": null, - "language": "fr", - "title": "Qu'est-ce que mon compte citoyen ?", - "has_url_overwrite": false, - "application_urls": null, - "creation_date": "2013-07-30T09:10:39.788Z", - "page": 23, - "path": "aide/quest-ce-que-mon-compte-citoyen", - "meta_description": null, - "slug": "quest-ce-que-mon-compte-citoyen" - } -}, -{ - "pk": 23, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Pourquoi cr\u00e9er un compte citoyen ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:12:20.429Z", - "page": 24, - "path": "aide/quest-ce-que-mon-compte-citoyen/pourquoi-creer-un-compte-citoyen", - "meta_description": "", - "slug": "pourquoi-creer-un-compte-citoyen" - } -}, -{ - "pk": 24, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Comment cr\u00e9e-t-on un compte ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:13:01.552Z", - "page": 25, - "path": "aide/quest-ce-que-mon-compte-citoyen/comment-cree-t-un-compte", - "meta_description": "", - "slug": "comment-cree-t-un-compte" - } -}, -{ - "pk": 25, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Qu'est-ce que mes e-services ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:11:13.880Z", - "page": 26, - "path": "aide/quest-ce-que-mes-e-services", - "meta_description": "", - "slug": "quest-ce-que-mes-e-services" - } -}, -{ - "pk": 26, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Qu'est-ce que mes abonnements ?", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-07-30T09:11:42.736Z", - "page": 27, - "path": "aide/quest-ce-que-mes-abonnements", - "meta_description": "", - "slug": "quest-ce-que-mes-abonnements" - } -}, -{ - "pk": 59, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Services li\u00e9s", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-10-15T14:39:49.759Z", - "page": 60, - "path": "mediatheque", - "meta_description": "", - "slug": "mediatheque" - } -}, -{ - "pk": 60, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Services li\u00e9s", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2013-10-15T14:39:49.759Z", - "page": 61, - "path": "mediatheque", - "meta_description": "", - "slug": "mediatheque" - } -}, -{ - "pk": 67, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Mon compte", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2014-01-21T08:37:00.890Z", - "page": 68, - "path": "mon-compte", - "meta_description": "", - "slug": "mon-compte" - } -}, -{ - "pk": 68, - "model": "cms.title", - "fields": { - "menu_title": "", - "redirect": "", - "meta_keywords": "", - "page_title": "", - "language": "fr", - "title": "Mon compte", - "has_url_overwrite": false, - "application_urls": "", - "creation_date": "2014-01-21T08:37:00.890Z", - "page": 69, - "path": "mon-compte", - "meta_description": "", - "slug": "mon-compte" - } -}, -{ - "pk": 758, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Vos flux

      \"Choisir

      ", - "wrapper": "block" - } -}, -{ - "pk": 760, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Newsletters

      \n

      Vos abonnements sont marqu\u00e9s d'une \u2713 et affich\u00e9s en vert.

      \n

      \"Plugin

      ", - "wrapper": "block" - } -}, -{ - "pk": 1291, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Utilisation du compte citoyen

      Votre compte citoyen va vous permettre :

      • d'accomplir vos d\u00e9marches en ligne 24h/24 aupr\u00e8s de Montpellier Agglo dans un premier temps puis \u00e0 terme aupr\u00e8s de la m\u00e9diath\u00e8que, de l'\u00e9coloth\u00e8que, du conservatoire et de votre commune.
      • De suivre le traitement de vos d\u00e9marches apr\u00e8s avoir rempli un formulaire en ligne, qu'il s'agisse par exemple de contacter le r\u00e9seau des piscines, de demander un abonnement \u00e0 la t\u00e9l\u00e9alarme, de contacter le service des d\u00e9chets...
      • De pr\u00e9remplir vos coordonn\u00e9es directement dans les formulaires, \u00e0 partir de celles que vous aurez indiqu\u00e9es sur votre compte.
      ", - "wrapper": "block" - } -}, -{ - "pk": 1292, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Trouver de l'aide

      Pour aller plus loin dans la compr\u00e9hension du fonctionnement du compte citoyen vous pouvez consulter l'aide en ligne ou contacter le support.

      ", - "wrapper": "block" - } -}, -{ - "pk": 1586, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Annonces SMS

      \"Abonnement

      ", - "wrapper": "block" - } -}, -{ - "pk": 1588, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes flux d'infos

      S\u00e9lectionnez ici les flux d'informations que vous souhaitez suivre.

      \"Choisir

      ", - "wrapper": "block" - } -}, -{ - "pk": 1590, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Newsletters

      Cliquez sur une newsletter pour vous (d\u00e9s)abonner et sauvegardez les changements avec le bouton Valider.

      \"passerelle

      ", - "wrapper": "block" - } -}, -{ - "pk": 1667, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Utilisation du compte citoyen

      Votre compte citoyen va vous permettre :

      • d'accomplir vos d\u00e9marches en ligne 24h/24 aupr\u00e8s de Montpellier Agglo dans un premier temps puis \u00e0 terme aupr\u00e8s de la m\u00e9diath\u00e8que, de l'\u00e9coloth\u00e8que, du conservatoire et de votre commune.
      • De suivre le traitement de vos d\u00e9marches apr\u00e8s avoir rempli un formulaire en ligne, qu'il s'agisse par exemple de contacter le r\u00e9seau des piscines, de demander un abonnement \u00e0 la t\u00e9l\u00e9alarme, de contacter le service des d\u00e9chets...
      • De pr\u00e9remplir vos coordonn\u00e9es directement dans les formulaires, \u00e0 partir de celles que vous aurez indiqu\u00e9es sur votre compte.
      ", - "wrapper": "block" - } -}, -{ - "pk": 1668, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Trouver de l'aide

      Pour aller plus loin dans la compr\u00e9hension du fonctionnement du compte citoyen vous pouvez consulter l'aide en ligne ou contacter le support.

      ", - "wrapper": "block" - } -}, -{ - "pk": 2153, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Compte lecteur

      Ici bient\u00f4t les informations de votre compte lecteur

      ", - "wrapper": "block" - } -}, -{ - "pk": 2225, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Vos flux

      \"Choisir

      ", - "wrapper": "block" - } -}, -{ - "pk": 2227, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Newsletters

      \n

      Vos abonnements sont marqu\u00e9s d'une \u2713 et affich\u00e9s en vert.

      \n

      \"Plugin

      ", - "wrapper": "block" - } -}, -{ - "pk": 2229, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Annonces SMS

      ", - "wrapper": "block" - } -}, -{ - "pk": 2230, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Newsletters

      Cliquez sur une newsletter pour vous (d\u00e9s)abonner et sauvegardez les changements avec le bouton Valider.

      \"passerelle

      ", - "wrapper": "block" - } -}, -{ - "pk": 2232, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes flux d'infos

      S\u00e9lectionnez ici les flux d'informations que vous souhaitez suivre.

      \"Choisir

      ", - "wrapper": "block" - } -}, -{ - "pk": 2272, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Compte lecteur

      \"Plugin
      \n", - "wrapper": "block" - } -}, -{ - "pk": 2274, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Compte lecteur

      \n

      \"Plugin

      ", - "wrapper": "block" - } -}, -{ - "pk": 2287, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mon profil

      \"account

      ", - "wrapper": "block" - } -}, -{ - "pk": 2289, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      G\u00e9rer mon compte

      \"account

      ", - "wrapper": "block" - } -}, -{ - "pk": 2291, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes liaisons

      \"Gestion

      ", - "wrapper": "block" - } -}, -{ - "pk": 2466, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Bienvenue sur le portail Internet de Montpellier Agglom\u00e9ration

      \n\n

      Un site Internet pour et par l\u2019usager

      \n\n

      \nInnovante, Montpellier Agglom\u00e9ration lance un site in\u00e9dit, personnalisable \u00e0\nvolont\u00e9, pour que chaque internaute puisse cr\u00e9er sa propre version en fonction\nde ses centres d\u2019int\u00e9r\u00eats et de ses envies\u00a0!\n

      \n\n

      \nE-services accessibles 24h/24 et 7jrs/7 en un clic, navigation qui s\u2019adapte \u00e0\nl\u2019internaute\u2026 avec la nouvelle version de son site lanc\u00e9e en septembre 2012,\nvous avez acc\u00e8s \u00e0 un graphisme \u00e9pur\u00e9 pour plus de confort de lecture, des\npr\u00e9sentations ludiques et interactives, des photos, des vid\u00e9os\u2026 et une mine\nd\u2019informations \u00e0 d\u00e9couvrir au fil de votre parcours ou de vos recherches.\n

      Une offre de services performante

      \n\n

      \nContacter une piscine ou le service des d\u00e9chets\u00a0? R\u00e9aliser une modification de\nvotre abonnement \u00e0 la t\u00e9l\u00e9alarme\u00a0? Effectuer une demande de raccordement au\nr\u00e9seau d'assainissement\u00a0? R\u00e9pondre \u00e0 une offre d'emploi ou d\u00e9poser une\ncandidature spontan\u00e9e\u00a0?\n

      \n\n

      \nLa plate-forme de services d\u00e9mat\u00e9rialis\u00e9s \u00e9volue et vous permet d'accomplir la\nplupart de vos d\u00e9marches en ligne, 24h/24 et 7j/7, de suivre le traitement de\nvos demandes de \u00ab\u00a0e-services\u00a0\u00bb.\n

      \n\n

      \nPour cela il vous suffit de vous connecter avec votre compte citoyen de\nMontpellier Agglo pour acc\u00e9der au portail et \u00e0 ses \u00ab\u00a0e-services\u00a0\u00bb.\n

      \n\n

      \nSi vous ne disposez pas encore de compte citoyen de Montpellier Agglo ?\nN'h\u00e9sitez plus et inscrivez-vous d\u00e8s maintenant, votre compte vous donnera\n\u00e9galement acc\u00e8s \u00e0 votre compte lecteur du r\u00e9seau des M\u00e9diath\u00e8que, \u00e0 votre\ncompte famille \u00e0 l'Ecoloth\u00e8que ou le compte \u00e9l\u00e8ve au Conservatoire, et enfin\nd'acc\u00e9der directement \u00e0 vos espaces personnalis\u00e9s, sans avoir \u00e0 re-saisir vos\nidentifiants et mots de passe.\n

      ", - "wrapper": "" - } -}, -{ - "pk": 2474, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      G\u00e9rer mon compte

      \"account

      ", - "wrapper": "block" - } -}, -{ - "pk": 2476, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes liaisons

      \"Gestion

      ", - "wrapper": "block" - } -}, -{ - "pk": 2479, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mon profil

      \"account

      ", - "wrapper": "block" - } -}, -{ - "pk": 2574, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Compte lecteur

      \n

      \"Plugin

      ", - "wrapper": "block" - } -}, -{ - "pk": 2687, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes flux d'infos

      \n

      Les informations proviennent des flux s\u00e9lectionn\u00e9s dans \u00ab\u00a0Mes abonnements\u00a0\u00bb.

      \"Afficher

      ", - "wrapper": "block" - } -}, -{ - "pk": 2689, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes d\u00e9marches en cours

      Cliquez sur une de vos d\u00e9marches en cours pour en afficher le d\u00e9tail.

      \"Plugin
      ", - "wrapper": "block" - } -}, -{ - "pk": 2692, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      D\u00e9marches en ligne

      \n

      Retrouvez ici les cat\u00e9gories de d\u00e9marches en ligne disponibles.

      \n\n
      \"Plugin
      \n", - "wrapper": "block" - } -}, -{ - "pk": 2694, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Liens utiles

      Diff\u00e9rents liens en relation avec la collectivit\u00e9

      \n

      Site Web d'Issy-les-Moulineaux

      \n

      Issy sur Wikip\u00e9dia

      \n

      Carte d'Issy-les-Moulineaux

      \n", - "wrapper": "block" - } -}, -{ - "pk": 2704, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      D\u00e9marches en ligne

      \n

      Retrouvez ici les cat\u00e9gories de d\u00e9marches en ligne disponibles.

      \n\n
      \"Plugin
      \n", - "wrapper": "block" - } -}, -{ - "pk": 2706, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Liens utiles

      Diff\u00e9rents liens en relation avec la collectivit\u00e9

      \n

      Site Web d'Issy-les-Moulineaux

      \n

      Issy sur Wikip\u00e9dia

      \n

      Carte d'Issy-les-Moulineaux

      \n", - "wrapper": "block" - } -}, -{ - "pk": 2707, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes flux d'infos

      \n

      Les informations proviennent des flux s\u00e9lectionn\u00e9s dans \u00ab\u00a0Mes abonnements\u00a0\u00bb.

      \"Afficher

      ", - "wrapper": "block" - } -}, -{ - "pk": 2709, - "model": "cmsplugin_text_wrapper.textwrapper", - "fields": { - "body": "

      Mes d\u00e9marches en cours

      Cliquez sur une de vos d\u00e9marches en cours pour en afficher le d\u00e9tail.

      \"Plugin
      ", - "wrapper": "block" - } -}, -{ - "pk": 1290, - "model": "video.video", - "fields": { - "fullscreen": false, - "loadingbarcolor": "828282", - "buttonovercolor": "000000", - "auto_hide": false, - "movie": "", - "image": "cms_page_media/11/compte-citoyen.png", - "buttonoutcolor": "333333", - "seekbarcolor": "13ABEC", - "bgcolor": "000000", - "height": 371, - "width": 495, - "seekbarbgcolor": "333333", - "auto_play": false, - "buttonhighlightcolor": "FFFFFF", - "textcolor": "FFFFFF", - "loop": false, - "movie_url": "https://www.youtube.com/watch?v=4ria7AhD7ro" - } -}, -{ - "pk": 1666, - "model": "video.video", - "fields": { - "fullscreen": false, - "loadingbarcolor": "828282", - "buttonovercolor": "000000", - "auto_hide": false, - "movie": "", - "image": "cms_page_media/11/compte-citoyen.png", - "buttonoutcolor": "333333", - "seekbarcolor": "13ABEC", - "bgcolor": "000000", - "height": 371, - "width": 495, - "seekbarbgcolor": "333333", - "auto_play": false, - "buttonhighlightcolor": "FFFFFF", - "textcolor": "FFFFFF", - "loop": false, - "movie_url": "https://www.youtube.com/watch?v=4ria7AhD7ro" - } -}, -{ - "pk": 606, - "model": "login_plugin.loginplugin", - "fields": {} -}, -{ - "pk": 1289, - "model": "login_plugin.loginplugin", - "fields": {} -}, -{ - "pk": 2, - "model": "data_source_plugin.datasource", - "fields": { - "name": "Formulaires", - "url": "https://eservices.au-quotidien.com/myspace/json/forms?NameID={{federations.service_1.links.0}}&orig=portail-citoyen.au-quotidien.com", - "verify_certificate": false, - "hash_algo": "sha256", - "signature_key": "12345", - "mime_type": "text/json" - } -}, -{ - "pk": 3, - "model": "data_source_plugin.datasource", - "fields": { - "name": "Liste des formulaires e-services", - "url": "https://eservices.au-quotidien.com/json?NameID={{federations.service_1.links.0}}&orig=portail-citoyen.au-quotidien.com", - "verify_certificate": false, - "hash_algo": "sha256", - "signature_key": "12345", - "mime_type": "text/json" - } -}, -{ - "pk": 6, - "model": "data_source_plugin.datasource", - "fields": { - "name": "Flux RSS SGMAP", - "url": "http://www.modernisation.gouv.fr/rss.xml", - "verify_certificate": true, - "hash_algo": "", - "signature_key": "", - "mime_type": "application/rss+xml" - } -}, -{ - "pk": 7, - "model": "data_source_plugin.datasource", - "fields": { - "name": "Informations utilisateur", - "url": "https://eservices.au-quotidien.com/user?format=json&NameID={{federations.service_1.links.0}}&orig=portail-citoyen.au-quotidien.com", - "verify_certificate": false, - "hash_algo": "sha256", - "signature_key": "12345", - "mime_type": "text/json" - } -}, -{ - "pk": 8, - "model": "data_source_plugin.datasource", - "fields": { - "name": "Cat\u00e9gories de formulaire", - "url": "https://eservices.au-quotidien.com/categories?format=json&NameID={{federations.service_1.links.0}}&orig=portail-citoyen.au-quotidien.com", - "verify_certificate": false, - "hash_algo": "sha256", - "signature_key": "12345", - "mime_type": "text/json" - } -}, -{ - "pk": 110, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 2, - "order": 0, - "plugin": 605 - } -}, -{ - "pk": 111, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 3, - "order": 0, - "plugin": 609 - } -}, -{ - "pk": 483, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 7, - "order": 0, - "plugin": 2155 - } -}, -{ - "pk": 578, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 2, - "order": 0, - "plugin": 2690 - } -}, -{ - "pk": 579, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 7, - "order": 0, - "plugin": 2691 - } -}, -{ - "pk": 580, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 8, - "order": 0, - "plugin": 2693 - } -}, -{ - "pk": 584, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 7, - "order": 0, - "plugin": 2703 - } -}, -{ - "pk": 585, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 8, - "order": 0, - "plugin": 2705 - } -}, -{ - "pk": 586, - "model": "data_source_plugin.plugindatasource", - "fields": { - "source": 2, - "order": 0, - "plugin": 2710 - } -}, -{ - "pk": 604, - "model": "data_source_plugin.rawinlinetemplateplugin", - "fields": { - "template_source": "" - } -}, -{ - "pk": 608, - "model": "data_source_plugin.rawinlinetemplateplugin", - "fields": { - "template_source": "{% load i18n %}\r\n{% if user.is_authenticated %}\r\n
      \r\n{% url 'profile' as profile_url %}\r\n{% if profile_url %}

      {% trans \"Mon profil\" %}

      {% endif %}\r\n

      \r\nMon porte-document\r\n

      \r\n
      \r\n{% endif %}" - } -}, -{ - "pk": 603, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% if user.is_authenticated %}\r\n

      Mes abonnements aux newsletters

      \r\n
        \r\n{% for name, subscribed in data_sources.0.content.newsletters.items %}\r\n
      • {{ name }}
      • \r\n{% endfor %}\r\n
      \r\n\r\n{% endif %}", - "limit": 10, - "refresh": 30 - } -}, -{ - "pk": 605, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% if request.user.is_authenticated and data_sources.0.content %}\r\n

      Mes d\u00e9marches en cours...

      \r\n
        \r\n{% for data in data_sources.0.content %}\r\n
      • {{data.title}}
      • \r\n{% endfor %}\r\n
      \r\n{% endif %}", - "limit": 10, - "refresh": 30 - } -}, -{ - "pk": 609, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% if user.is_authenticated %}\r\n

      Les d\u00e9marches

      \r\n

      Montpellier agglom\u00e9ration

      \r\n
        \r\n{% for d in data_sources.0.content|dictsort:\"count\" %}\r\n
      • {{ d.title }}

        \r\n{% endfor %}\r\n
      \r\n{% endif %}", - "limit": 10, - "refresh": 30 - } -}, -{ - "pk": 761, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "
        \r\n{% for name, subscribed in data_sources.0.content.newsletters.items %}\r\n
      • {{ name }}
      • \r\n{% endfor %}\r\n
      \r\n", - "limit": 10, - "refresh": 30 - } -}, -{ - "pk": 2155, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "\r\n{% with user_info=data_sources.0.content %}\r\n\r\n{% endwith %}\r\n", - "limit": 10, - "refresh": 30 - } -}, -{ - "pk": 2228, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "
        \r\n{% for name, subscribed in data_sources.0.content.newsletters.items %}\r\n
      • {{ name }}
      • \r\n{% endfor %}\r\n
      \r\n", - "limit": 10, - "refresh": 30 - } -}, -{ - "pk": 2273, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% if data_sources.0.content.d.ClientAccount.ShortAccount %}\r\n

      Votre carte d'abonnement num\u00e9ro {{\u00a0data_sources.0.content.d.ClientAccount.Identity.BarCode }} est valable jusqu'au {{\u00a0data_sources.0.content.d.ClientAccount.Identity.ExpirationDate }}.

      \r\n\r\n

      Vous avez actuellement {{ data_sources.0.content.d.ClientAccount.ShortAccount.NombrePrets\u00a0}} oeuvre(s) en pr\u00eat :\r\n

        \r\n{% for loan in data_sources.0.content.d.ClientAccount.Loans\u00a0%}\r\n
      • {{\u00a0loan.DisplayName\u00a0}} - {{ loan.SearchItemAdapter.Resource.Crtr }} {% if loan.IsLate %}(en retard){% endif %}
      • \r\n{% endfor %}\r\n
      \r\n

      \r\n\r\n

      Vous avec actuellement {{ data_sources.0.content.d.ClientAccount.ShortAccount.NombreDemandeReservations }} oeuvre(s) en r\u00e9servation\r\n

      \r\n\r\n{% if data_sources.0.content.d.ClientAccount.ShortAccount.NombreMessages %}\r\n

      Vous avez {{\u00a0data_sources.0.content.d.ClientAccount.ShortAccount.NombreMessages }}

      \r\n{% else %}\r\n

      Vous n'avez pas de message

      \r\n{% endif %}\r\n\r\n{% else %}\r\n\r\n

      Vous n'avez actuellement pas de compte m\u00e9diath\u00e8que raccord\u00e9 ou votre compte n'est plus valide.

      \r\n

      Cliquer ici pour raccorder votre compte m\u00e9diath\u00e8que

      \r\n\r\n{% endif %}", - "limit": 10, - "refresh": 60 - } -}, -{ - "pk": 2275, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% if data_sources.0.content.d.ClientAccount.ShortAccount %}\r\n

      Votre carte d'abonnement num\u00e9ro {{\u00a0data_sources.0.content.d.ClientAccount.Identity.BarCode }} est valable jusqu'au {{\u00a0data_sources.0.content.d.ClientAccount.Identity.ExpirationDate }}.

      \r\n\r\n

      Vous avez actuellement {{ data_sources.0.content.d.ClientAccount.ShortAccount.NombrePrets\u00a0}} oeuvre(s) en pr\u00eat :\r\n

        \r\n{% for loan in data_sources.0.content.d.ClientAccount.Loans\u00a0%}\r\n
      • {{\u00a0loan.DisplayName\u00a0}} - {{ loan.SearchItemAdapter.Resource.Crtr }} {% if loan.IsLate %}(en retard){% endif %}
      • \r\n{% endfor %}\r\n
      \r\n

      \r\n\r\n

      Vous avec actuellement {{ data_sources.0.content.d.ClientAccount.ShortAccount.NombreDemandeReservations }} oeuvre(s) en r\u00e9servation\r\n

      \r\n\r\n{% if data_sources.0.content.d.ClientAccount.ShortAccount.NombreMessages %}\r\n

      Vous avez {{\u00a0data_sources.0.content.d.ClientAccount.ShortAccount.NombreMessages }}

      \r\n{% else %}\r\n

      Vous n'avez pas de message

      \r\n{% endif %}\r\n\r\n

      Cliquer ici pour vous connecter sur le site des m\u00e9diath\u00e8ques.

      \r\n{% else %}\r\n\r\n

      Vous n'avez actuellement pas de compte m\u00e9diath\u00e8que raccord\u00e9 ou votre compte n'est plus valide.

      \r\n\r\n

      Cliquer ici pour raccorder votre compte m\u00e9diath\u00e8que

      \r\n\r\n{% endif %}", - "limit": 10, - "refresh": 1 - } -}, -{ - "pk": 2575, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% if data_sources.0.content.d.ClientAccount.ShortAccount %}\r\n

      Votre carte d'abonnement num\u00e9ro {{\u00a0data_sources.0.content.d.ClientAccount.Identity.BarCode }} est valable jusqu'au {{\u00a0data_sources.0.content.d.ClientAccount.Identity.ExpirationDate }}.

      \r\n\r\n

      Vous avez actuellement {{ data_sources.0.content.d.ClientAccount.ShortAccount.NombrePrets\u00a0}} oeuvre(s) en pr\u00eat :\r\n

        \r\n{% for loan in data_sources.0.content.d.ClientAccount.Loans\u00a0%}\r\n
      • {{\u00a0loan.DisplayName\u00a0}} - {{ loan.SearchItemAdapter.Resource.Crtr }} {% if loan.IsLate %}(en retard){% endif %}
      • \r\n{% endfor %}\r\n
      \r\n

      \r\n\r\n

      Vous avec actuellement {{ data_sources.0.content.d.ClientAccount.ShortAccount.NombreDemandeReservations }} oeuvre(s) en r\u00e9servation\r\n

      \r\n\r\n{% if data_sources.0.content.d.ClientAccount.ShortAccount.NombreMessages %}\r\n

      Vous avez {{\u00a0data_sources.0.content.d.ClientAccount.ShortAccount.NombreMessages }}

      \r\n{% else %}\r\n

      Vous n'avez pas de message

      \r\n{% endif %}\r\n\r\n

      Cliquer ici pour vous connecter sur le site des m\u00e9diath\u00e8ques.

      \r\n{% else %}\r\n\r\n

      Vous n'avez actuellement pas de compte m\u00e9diath\u00e8que raccord\u00e9 ou votre compte n'est plus valide.

      \r\n\r\n

      Cliquer ici pour raccorder votre compte m\u00e9diath\u00e8que

      \r\n\r\n{% endif %}", - "limit": 10, - "refresh": 1 - } -}, -{ - "pk": 2690, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "
        \r\n{% for data in data_sources.0.content reversed %}\r\n
      • {{data.title}}
      • \r\n{% endfor %}\r\n
      ", - "limit": 10, - "refresh": 3 - } -}, -{ - "pk": 2691, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% with user_info=data_sources.0.content %}\r\n{% if user_info %}\r\n {% if user_info.user_admin_access %}\r\n Administration\r\n {% elif user_info.user_backoffice_access %}\r\n Back office\r\n {% endif %}\r\n{% endif %}\r\n{% endwith %}", - "limit": 10, - "refresh": 600 - } -}, -{ - "pk": 2693, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "
      \r\n
        \r\n{% for d in data_sources.0.content.data|dictsort:\"title\" %}\r\n
      • {{ d.title }}\r\n{% endfor %}\r\n
      \r\n

      Toutes les d\u00e9marches

      \r\n
      ", - "limit": 10, - "refresh": 3600 - } -}, -{ - "pk": 2703, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "{% with user_info=data_sources.0.content %}\r\n{% if user_info %}\r\n {% if user_info.user_admin_access %}\r\n Administration\r\n {% elif user_info.user_backoffice_access %}\r\n Back office\r\n {% endif %}\r\n{% endif %}\r\n{% endwith %}", - "limit": 10, - "refresh": 600 - } -}, -{ - "pk": 2705, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "
      \r\n
        \r\n{% for d in data_sources.0.content.data|dictsort:\"title\" %}\r\n
      • {{ d.title }}\r\n{% endfor %}\r\n
      \r\n

      Toutes les d\u00e9marches

      \r\n
      ", - "limit": 10, - "refresh": 3600 - } -}, -{ - "pk": 2710, - "model": "data_source_plugin.datasourceplugin", - "fields": { - "template_source": "
        \r\n{% for data in data_sources.0.content reversed %}\r\n
      • {{data.title}}
      • \r\n{% endfor %}\r\n
      ", - "limit": 10, - "refresh": 3 - } -}, -{ - "pk": 602, - "model": "a2_service_list_plugin.a2servicelistplugin", - "fields": {} -}, -{ - "pk": 2688, - "model": "feed_plugin.showuserfeed", - "fields": { - "limit": 5, - "timeout": 60 - } -}, -{ - "pk": 2708, - "model": "feed_plugin.showuserfeed", - "fields": { - "limit": 5, - "timeout": 60 - } -}, -{ - "pk": 3, - "model": "feed_plugin.feed", - "fields": { - "url": "https://www.facebook.com/feeds/page.php?format=rss20&id=132492983441286", - "name": "Facebook SGMAP", - "color_hex": "dbc82c", - "css_classes": "facebook" - } -}, -{ - "pk": 4, - "model": "feed_plugin.feed", - "fields": { - "url": "http://www.modernisation.gouv.fr/rss.xml", - "name": "Flux RSS SGMAP", - "color_hex": "dbc82c", - "css_classes": "" - } -}, -{ - "pk": 5, - "model": "feed_plugin.feed", - "fields": { - "url": "http://www.cnil.fr/rss-cnil/", - "name": "Flux RSS CNIL", - "color_hex": "", - "css_classes": "" - } -}, -{ - "pk": 1, - "model": "idp.attributepolicy", - "fields": { - "filter_source_of_filtered_attributes": false, - "name": "Default", - "ask_consent_attributes": false, - "output_namespace": "Default", - "allow_attributes_selection": false, - "enabled": true, - "output_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri", - "source_filter_for_sso_from_push_sources": [ - 1 - ], - "forward_attributes_from_push_sources": false, - "map_attributes_from_push_sources": false, - "attribute_filter_for_sso_from_push_sources": null, - "attribute_list_for_sso_from_pull_sources": 2, - "map_attributes_of_filtered_attributes": false, - "send_error_and_no_attrs_if_missing_required_attrs": false - } -}, -{ - "pk": 1, - "model": "attribute_aggregator.attributeitem", - "fields": { - "source": 1, - "required": false, - "attribute_name": "cn", - "output_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic", - "output_namespace": "Default" - } -}, -{ - "pk": 2, - "model": "attribute_aggregator.attributeitem", - "fields": { - "source": 1, - "required": false, - "attribute_name": "email", - "output_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic", - "output_namespace": "Default" - } -}, -{ - "pk": 3, - "model": "attribute_aggregator.attributeitem", - "fields": { - "source": 1, - "required": false, - "attribute_name": "role", - "output_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic", - "output_namespace": "Default" - } -}, -{ - "pk": 4, - "model": "attribute_aggregator.attributeitem", - "fields": { - "source": 1, - "required": false, - "attribute_name": "gn", - "output_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic", - "output_namespace": "Default" - } -}, -{ - "pk": 5, - "model": "attribute_aggregator.attributeitem", - "fields": { - "source": 1, - "required": false, - "attribute_name": "sn", - "output_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic", - "output_namespace": "Default" - } -}, -{ - "pk": 2, - "model": "attribute_aggregator.attributelist", - "fields": { - "attributes": [ - 1, - 2, - 3, - 4, - 5 - ], - "name": "Profile" - } -}, -{ - "pk": 1, - "model": "attribute_aggregator.attributesource", - "fields": { - "namespace": "Default", - "name": "USER_PROFILE" - } -} -] diff --git a/portail_citoyen2/forms.py b/portail_citoyen2/forms.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/locale/fr/LC_MESSAGES/django.po b/portail_citoyen2/locale/fr/LC_MESSAGES/django.po deleted file mode 100644 index 26f784e..0000000 --- a/portail_citoyen2/locale/fr/LC_MESSAGES/django.po +++ /dev/null @@ -1,72 +0,0 @@ -# Translation of portail-citoyen strings -# Copyright (C) 2013 Entr'ouvert -# This file is distributed under the same license as the portail-citoyen package. -# Benjamin Dauvergne , 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: portail_citoyen2 0.1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-03-26 15:15+0100\n" -"PO-Revision-Date: 2014-03-26 15:15+0100\n" -"Last-Translator: Benjamin Dauvergne \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: cms_plugins.py:26 -msgid "Modify" -msgstr "Modifier" - -#: dashboard.py:12 -msgid "Contents" -msgstr "Contenus" - -#: dashboard.py:21 -msgid "Announces" -msgstr "Annonces" - -#: dashboard.py:28 dashboard.py:63 -msgid "Recent Actions" -msgstr "Actions récentes" - -#: dashboard.py:32 -msgid "Support" -msgstr "" - -#: dashboard.py:35 -msgid "Project site" -msgstr "Site du projet" - -#: dashboard.py:40 -msgid "Report a bug" -msgstr "Reporter un bug" - -#: models.py:17 -#, python-format -msgid "" -"Required, %s characters or fewer. Only letters, numbers, and @, ., +, -, or " -"_ characters." -msgstr "" - -#: settings.py:45 -msgid "French" -msgstr "Français" - -#: templates/admin/base_site.html:4 templates/admin/base_site.html.py:19 -msgid "Citizen portal administration" -msgstr "Administration du portail citoyen" - -#: templates/admin/base_site.html:17 -msgid "Administration portal" -msgstr "Portail d'administration" - -#: templates/portail_citoyen/form.html:7 -msgid "Submit" -msgstr "Envoyer" - -#: templates/portail_citoyen/form.html:9 -msgid "Back" -msgstr "Retour" diff --git a/portail_citoyen2/menu.py b/portail_citoyen2/menu.py deleted file mode 100644 index 032c3a7..0000000 --- a/portail_citoyen2/menu.py +++ /dev/null @@ -1,4 +0,0 @@ -from admin_tools.menu import Menu - -class CustomMenu(Menu): - pass diff --git a/portail_citoyen2/migrations/0001_initial.py b/portail_citoyen2/migrations/0001_initial.py deleted file mode 100644 index 68011a8..0000000 --- a/portail_citoyen2/migrations/0001_initial.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from south.utils import datetime_utils as datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - pass - - def backwards(self, orm): - pass - - models = { - - } - - complete_apps = ['portail_citoyen2'] \ No newline at end of file diff --git a/portail_citoyen2/migrations/__init__.py b/portail_citoyen2/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/models.py b/portail_citoyen2/models.py deleted file mode 100644 index 7dcfad9..0000000 --- a/portail_citoyen2/models.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.core.validators import MaxLengthValidator -from django.utils.translation import ugettext as _ -from django.db.models.signals import class_prepared - -MAX_USERNAME_LENGTH = 255 - -def longer_username_signal(sender, *args, **kwargs): - if (sender.__name__ == "User" and - sender.__module__ == "django.contrib.auth.models"): - patch_user_model(sender) -class_prepared.connect(longer_username_signal) - -def patch_user_model(model): - field = model._meta.get_field("username") - - field.max_length = MAX_USERNAME_LENGTH - field.help_text = _("Required, %s characters or fewer. Only letters, " - "numbers, and @, ., +, -, or _ " - "characters." % MAX_USERNAME_LENGTH) - - # patch model field validator because validator doesn't change if we change - # max_length - for v in field.validators: - if isinstance(v, MaxLengthValidator): - v.limit_value = MAX_USERNAME_LENGTH - -from django.contrib.auth.models import User - -# https://github.com/GoodCloud/django-longer-username/issues/1 -# django 1.3.X loads User model before class_prepared signal is connected -# so we patch model after it's prepared - -# check if User model is patched -if User._meta.get_field("username").max_length != MAX_USERNAME_LENGTH: - patch_user_model(User) diff --git a/portail_citoyen2/permission_hack.py b/portail_citoyen2/permission_hack.py deleted file mode 100644 index 169ad55..0000000 --- a/portail_citoyen2/permission_hack.py +++ /dev/null @@ -1,63 +0,0 @@ -import sys - -from django.contrib.auth.management import _get_all_permissions -from django.contrib.auth.models import Permission -from django.contrib.contenttypes.management import update_contenttypes -from django.contrib.contenttypes.models import ContentType -from django.db import models - -def create_proxy_permissions(app, created_models, verbosity, **kwargs): - """ - Creates permissions for proxy models which are not created automatically - by `django.contrib.auth.management.create_permissions`. - see https://code.djangoproject.com/ticket/11154 - This method is inspired by `django.contrib.auth.managment.create_permissions`. - - Since we can't rely on `get_for_model' we must fallback to `get_by_natural_key`. - However, this method doesn't automatically create missing `ContentType` so - we must ensure all the model's `ContentType` are created before running this method. - We do so by unregistering the `update_contenttypes` `post_syncdb` signal and calling - it in here just before doing everything. - """ - update_contenttypes(app, created_models, verbosity, **kwargs) - app_models = models.get_models(app) - # This will hold the permissions we're looking for as - # (content_type, (codename, name)) - searched_perms = list() - # The codenames and ctypes that should exist. - ctypes = set() - for model in app_models: - opts = model._meta - if opts.proxy: - # We can't use `get_for_model` here since it doesn't return - # the correct `ContentType` for proxy models. - # see https://code.djangoproject.com/ticket/17648 - app_label, model = opts.app_label, opts.object_name.lower() - ctype = ContentType.objects.get_by_natural_key(app_label, model) - ctypes.add(ctype) - for perm in _get_all_permissions(opts, ctype): - searched_perms.append((ctype, perm)) - - # Find all the Permissions that have a content_type for a model we're - # looking for. We don't need to check for codenames since we already have - # a list of the ones we're going to create. - all_perms = set(Permission.objects.filter( - content_type__in=ctypes, - ).values_list( - "content_type", "codename" - )) - - objs = [ - Permission(codename=codename, name=name, content_type=ctype) - for ctype, (codename, name) in searched_perms - if (ctype.pk, codename) not in all_perms - ] - Permission.objects.bulk_create(objs) - if verbosity >= 2: - for obj in objs: - sys.stdout.write("Adding permission '%s'" % obj) - -models.signals.post_syncdb.connect(create_proxy_permissions) -# see `create_proxy_permissions` docstring to understand why we unregister -# this signal handler. -models.signals.post_syncdb.disconnect(update_contenttypes) diff --git a/portail_citoyen2/settings.py b/portail_citoyen2/settings.py deleted file mode 100644 index 4f881cd..0000000 --- a/portail_citoyen2/settings.py +++ /dev/null @@ -1,320 +0,0 @@ -from django.core.exceptions import ImproperlyConfigured - -import os -import logging.handlers - -gettext_noop = lambda s: s -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = 'portail_citoyen2.wsgi.application' -DEBUG = 'DEBUG' in os.environ -DEBUG_PROPAGATE_EXCEPTIONS = 'DEBUG_PROPAGATE_EXCEPTIONS' in os.environ -TEMPLATE_DEBUG = DEBUG - -PROJECT_PATH = os.path.join(os.path.dirname(__file__)) -PROJECT_NAME = 'portail-citoyen2' - -ADMINS = () -if 'ADMINS' in os.environ: - ADMINS = filter(None, os.environ.get('ADMINS').split(':')) - ADMINS = [ admin.split(';') for admin in ADMINS ] - for admin in ADMINS: - assert len(admin) == 2, 'ADMINS setting must be a colon separated list of name and emails separated by a semi-colon' - assert '@' in admin[1], 'ADMINS setting pairs second value must be emails' - -MANAGERS = ADMINS - -DATABASES = { - 'default': { - 'ENGINE': os.environ.get('DATABASE_ENGINE', 'django.db.backends.sqlite3'), - 'NAME': os.environ.get('DATABASE_NAME', os.path.join(PROJECT_PATH, '..', PROJECT_NAME + '.db')), - 'USER': os.environ.get('DATABASE_USER', ''), - 'PASSWORD': os.environ.get('DATABASE_PASSWORD', ''), - 'HOST': os.environ.get('DATABASE_HOST', ''), - 'PORT': os.environ.get('DATABASE_PORT', '') - } -} - -# Hey Entr'ouvert is in France !! -TIME_ZONE = 'Europe/Paris' -LANGUAGE_CODE = 'fr' -SITE_ID = 1 -USE_I18N = True -USE_TZ = True - -LANGUAGES = ( - ('fr', gettext_noop('French')), -) -USE_L10N = True - -# Static files - -STATIC_ROOT = os.environ.get('STATIC_ROOT', '/var/lib/%s/static' % PROJECT_NAME) -STATIC_URL = os.environ.get('STATIC_URL', '/static/') -MEDIA_ROOT = os.environ.get('MEDIA_ROOT', '/var/lib/%s/media' % PROJECT_NAME) -MEDIA_URL = os.environ.get('MEDIA_URL', '/media/') - -# passerelle address & apikey -PASSERELLE_URL = os.environ.get('PASSERELLE_URL', '') -PASSERELLE_APIKEY = os.environ.get('PASSERELLE_APIKEY', '') - -if 'STATICFILES_DIRS' in os.environ: - STATICFILES_DIRS = os.environ['STATICFILES_DIRS'].split(':') - -TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', -) - -TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.core.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'allauth.account.context_processors.account', - 'allauth.socialaccount.context_processors.socialaccount', - 'django.core.context_processors.debug', - 'django.core.context_processors.i18n', - 'django.core.context_processors.media', - 'django.core.context_processors.static', - 'django.core.context_processors.tz', - 'django.contrib.messages.context_processors.messages', - 'cms.context_processors.media', - 'sekizai.context_processors.sekizai', - 'portail_citoyen2.context_processors.template_vars', -) - -MIDDLEWARE_CLASSES = ( - 'django.middleware.common.CommonMiddleware', - 'django.middleware.http.ConditionalGetMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.middleware.locale.LocaleMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.transaction.TransactionMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - 'entrouvert.djommon.middleware.VersionMiddleware', -) - -ROOT_URLCONF = 'portail_citoyen2.urls' - -TEMPLATE_DIRS = ['/var/lib/%s/templates' % PROJECT_NAME, os.path.join(PROJECT_PATH, 'templates')] -if os.environ.get('TEMPLATE_DIRS'): - TEMPLATE_DIRS = os.environ['TEMPLATE_DIRS'].split(':') + TEMPLATE_DIRS - -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'admin_tools', - 'admin_tools.theming', - 'admin_tools.menu', - 'admin_tools.dashboard', - 'django.contrib.admin', - 'south', - 'mptt', - 'sekizai', - 'cms', - 'menus', - 'djangocms_text_ckeditor', - # 'cmsplugin_text_wrapper', - # 'cms_ajax_text_plugin', - 'passerelle_register_plugin', - 'feed_plugin', - 'data_source_plugin', - 'allauth', - 'allauth.account', - 'allauth.socialaccount', - # ... include the providers you want to enable: - 'portail_citoyen2.allauth_authentic2', - 'portail_citoyen2', -) - -AUTHENTICATION_BACKENDS = ( - 'django.contrib.auth.backends.ModelBackend', - 'allauth.account.auth_backends.AuthenticationBackend', -) -# auth and allauth settings -LOGIN_REDIRECT_URL = os.environ.get('LOGIN_REDIRECT_URL', '/') -LOGOUT_URL = os.environ.get('LOGOUT_URL', '/accounts/logout/') -LOGIN_URL = os.environ.get('LOGIN_URL', '/accounts/authentic2/login/?process=login') -SOCIALACCOUNT_QUERY_EMAIL = True -SOCIALACCOUNT_PROVIDERS = { - 'authentic2': { - 'URL': 'http://localhost:9000/idp/oauth2/', - 'SCOPE': ['read', 'write'], - }, -} -SOCIALACOUNT_AUTO_SIGNUP = True -ACCOUNT_LOGOUT_ON_GET = True -ACCOUNT_UNIQUE_EMAIL = False - -MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' - -# sessions -SESSION_EXPIRE_AT_BROWSER_CLOSE = True -SESSION_COOKIE_NAME = 'portail-citoyen' -SESSION_COOKIE_PATH = os.environ.get('SESSION_COOKIE_PATH', '/') -SESSION_COOKIE_SECURE = 'SESSION_COOKIE_SECURE' in os.environ - -# email settings -EMAIL_HOST = os.environ.get('EMAIL_HOST', 'localhost') -EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER', '') -EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD', '') -EMAIL_PORT = int(os.environ.get('EMAIL_PORT', 25)) -EMAIL_SUBJECT_PREFIX = os.environ.get('EMAIL_SUBJECT_PREFIX', '[Portail citoyen]') -EMAIL_USE_TLS = 'EMAIL_USE_TLS' in os.environ -SERVER_EMAIL = os.environ.get('SERVER_EMAIL', 'root@localhost') -DEFAULT_FROM_EMAIL = os.environ.get('DEFAULT_FROM_EMAIL', 'ne-pas-repondre@portail-citoyen.fr') - -# web & network settings -if 'ALLOWED_HOSTS' in os.environ: - ALLOWED_HOSTS = os.environ['ALLOWED_HOSTS'].split(':') -else: - ALLOWED_HOSTS = ('127.0.0.1', 'localhost') -USE_X_FORWARDED_HOST = 'USE_X_FORWARDED_HOST' in os.environ - -if 'INTERNAL_IPS' in os.environ: - INTERNAL_IPS = os.environ['INTERNAL_IPS'].split(':') -else: - INTERNAL_IPS = ('127.0.0.1') - -SECRET_KEY = os.environ.get('SECRET_KEY', '0!=(1kc6kri-ui+tmj@mr+*0bvj!(p*r0duu2n=)7@!p=pvf9n') - - -SAML_METADATA_ROOT = 'metadata' - -LOGGING = { - 'version': 1, - 'disable_existing_loggers': True, - 'formatters': { - 'syslog': { - 'format': 'portail-citoyen(pid=%(process)d) %(levelname)s %(name)s: %(message)s', - }, - 'syslog_debug': { - 'format': 'portail-citoyen(pid=%(process)d) %(levelname)s %(asctime)s t_%(thread)s %(name)s: %(message)s', - }, - }, - 'handlers': { - 'syslog': { - 'level': 'DEBUG', - 'class': 'entrouvert.logging.handlers.SysLogHandler', - 'formatter': 'syslog_debug' if DEBUG else 'syslog', - 'facility': logging.handlers.SysLogHandler.LOG_LOCAL0, - 'address': '/dev/log', - 'max_length': 999, - }, - 'mail_admins': { - 'level': 'ERROR', - 'class': 'django.utils.log.AdminEmailHandler', - 'filters': [], - }, - 'console': { - 'class': 'logging.StreamHandler', - 'formatter': 'syslog_debug', - 'level': 'DEBUG', - }, - }, - 'loggers': { - 'requests': { - 'handlers': ['mail_admins','syslog'], - 'level': 'ERROR', - 'propagate': False, - }, - 'portail_citoyen2': { - 'handlers': ['mail_admins','syslog'], - 'level': 'DEBUG' if DEBUG else 'INFO', - 'propagate': False, - }, - 'django': { - 'handlers': ['mail_admins','syslog'], - 'level': 'DEBUG' if DEBUG else 'INFO', - 'propagate': False, - }, - 'django.db': { - 'handlers': ['mail_admins','syslog'], - 'level': 'INFO', - 'propagate': False, - }, - '': { - 'handlers': ['mail_admins','syslog'], - 'level': 'DEBUG' if DEBUG else 'INFO', - 'propagate': True, - }, - } -} -SOUTH_TESTS_MIGRATE = False - -# Admin tools -ADMIN_TOOLS_INDEX_DASHBOARD = 'portail_citoyen2.dashboard.CustomIndexDashboard' -ADMIN_TOOLS_APP_INDEX_DASHBOARD = 'portail_citoyen2.dashboard.CustomAppIndexDashboard' -ADMIN_TOOLS_MENU = 'portail_citoyen2.menu.CustomMenu' -ADMIN_TOOLS_THEMING_CSS = 'portail_citoyen/css/admin.css' - - -# cms settings -CMS_TEMPLATES = ( - ('portail_citoyen/base_two_columns.html', 'Canevas sur deux colonnes'), - ('portail_citoyen/base_one_column.html', 'Canevas sur une colonne'), - ('portail_citoyen/base_help.html', 'Canevas de l\'aide'), -) -if 'CMS_TEMPLATES' in os.environ: - CMS_TEMPLATES = map(lambda x: x.split(';'), - os.environ('CMS_TEMPLATES').split(':')) -CMS_REDIRECTS = True -CMS_TEXT_WRAPPERS = ( - ('block', { - 'render_template': 'portail_citoyen/block.html', - 'extra_context': {}, - }), -) -CMS_TEXT_WRAPPER_CLASSES = [] -# necessary for plugin displaying a form to have a fresh csrftoken -CMS_PLACEHOLDER_CACHE = False -CMS_PAGE_CACHE = False - -# Do we use memcached ? -if 'USE_MEMCACHED' in os.environ: - CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', - 'LOCATION': '127.0.0.1:11211', - 'KEY_PREFIX': 'portail-citoyen', - } - } - SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' - - -if 'USE_DEBUG_TOOLBAR' in os.environ: - try: - import debug_toolbar - MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) - INSTALLED_APPS += ('debug_toolbar',) - DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False} - except ImportError: - print "Debug toolbar missing, not loaded" - -# extract any key starting with setting -for key in os.environ: - if key.startswith('SETTING_'): - setting_key = key[len('SETTING_'):] - value = os.environ[key] - try: - value = int(value) - except ValueError: - pass - globals()[setting_key] = value - -# try to import local_settings.py (useless, in theory) -try: - from local_settings import * -except ImportError, e: - if 'local_settings' in e.args[0]: - pass - -if not CMS_TEMPLATES: - raise ImproperlyConfigured('You must define CMS_TEMPLATES') diff --git a/portail_citoyen2/static/portail_citoyen/css/Museo500-Regular.otf b/portail_citoyen2/static/portail_citoyen/css/Museo500-Regular.otf deleted file mode 100644 index da52e9c..0000000 Binary files a/portail_citoyen2/static/portail_citoyen/css/Museo500-Regular.otf and /dev/null differ diff --git a/portail_citoyen2/static/portail_citoyen/css/Museo_Slab.otf b/portail_citoyen2/static/portail_citoyen/css/Museo_Slab.otf deleted file mode 100644 index 84ceaca..0000000 Binary files a/portail_citoyen2/static/portail_citoyen/css/Museo_Slab.otf and /dev/null differ diff --git a/portail_citoyen2/static/portail_citoyen/css/admin.css b/portail_citoyen2/static/portail_citoyen/css/admin.css deleted file mode 100644 index ff0b12f..0000000 --- a/portail_citoyen2/static/portail_citoyen/css/admin.css +++ /dev/null @@ -1,46 +0,0 @@ -/** - * theming styles - * - */ - -#header { - background: url(/static/admin_tools/images/admin-tools.png) 0 0 repeat-x; -} - -#header #branding h1 { - margin: 0; - padding: 5px 10px; -/* text-indent: -9999px; - background: transparent url(../images/logo-portail-citoyen.png) 10px 5px no-repeat; - height: 31px; - width: 93px; */ -} - -div.breadcrumbs { - display: block; - padding: 10px 15px; - border: 0; - background-position: 0 -8px; - border-bottom: 1px solid #ededed; -} - -div.breadcrumbs a { - display: inline; -} - -.selector { - width: 980px; - float: left; -} - -.selector select { - width: 470px; - height: 17.2em; -} - -.selector-available, .selector-chosen { - float: left; - width: 470px; - text-align: center; - margin-bottom: 5px; -} diff --git a/portail_citoyen2/static/portail_citoyen/css/button_connexion.gif b/portail_citoyen2/static/portail_citoyen/css/button_connexion.gif deleted file mode 100644 index 0c563f4..0000000 Binary files a/portail_citoyen2/static/portail_citoyen/css/button_connexion.gif and /dev/null differ diff --git a/portail_citoyen2/static/portail_citoyen/css/e54.png b/portail_citoyen2/static/portail_citoyen/css/e54.png deleted file mode 100644 index 504e266..0000000 Binary files a/portail_citoyen2/static/portail_citoyen/css/e54.png and /dev/null differ diff --git a/portail_citoyen2/static/portail_citoyen/css/style.css b/portail_citoyen2/static/portail_citoyen/css/style.css deleted file mode 100644 index 340459a..0000000 --- a/portail_citoyen2/static/portail_citoyen/css/style.css +++ /dev/null @@ -1,994 +0,0 @@ -@font-face { - font-family: 'Museo500'; - src: url(Museo500-Regular.otf); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'MuseoSlab'; - src: url(Museo_Slab.otf); - font-weight: normal; - font-style: normal; -} - -html, body { margin: 0; font-family: arial, sans-serif; font-size: 13px;} -a { text-decoration: none; } -a:hover { text-decoration: underline; } -h1, h2, h3 { margin-top: 0; } - -div#single-title, #nav, -#top, h2 { - font-family: MuseoSlab, sans-serif; - font-weight: normal; -} - -h3, h4 { - font-family: Museo500, sans-serif; - font-weight: normal; -} - - - -a { - -webkit-transition: color 200ms ease-out; -} - -/* layout */ - -body { - overflow-x: hidden; - background: white; -} - -div#page { - width: 100%; -} - -div#header { - background-color: #ffffff; - width: 100%; - margin: 0 0 0 0; - position: absolute; - top: 0px; - margin-left: -500px; - z-index: 0; - -} - -div#top { - height: 456px; - width: 1500px; - margin: 0 auto 0 auto; - margin-left: 50%; -} - -div#top h1 { - width: 10em; - text-align: center; - padding-top: 3em; - padding-left: 2em; - margin-left: 20px; - font-size: 120%; - font-weight: bold; -} - -div#top h1 a { - color: white; - text-shadow: #6374AB 0px 0px 3px; -} - -div#top a img { - border: 0; -} - -div#main-content-wrapper { - position: relative; - z-index: 100; - width: 1000px; - margin: 200px auto 0px auto; -} - -div#main-content { - margin: 0; - min-height: 300px; -} - -div#footer { - clear: both; - background: white; - padding: 0px; - width: 1000px; - margin: 10px auto 0 auto; - position: relative; -} - -p#legal { - font-size: small; - color: #666; - margin: 0; - margin-top: 5em; - font-size: 70%; - display: inline-block; - padding-top: 5px; - border-top: 1px solid #666; -} - -#content { - position: relative; - margin:0; - color: rgb(58, 58, 58); -} - -div#content a { - color: #37a7da; -} - -div#content a:hover { - text-decoration: underline; -} - -#menu { - font-size: 130%; - margin-top: -1px; -} - -#menu ul { - list-style: none; - margin: 0; - padding: 10px 0 32px 0; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topright: 5px; - border-top-right-radius: 5px; -} - -#menu li { - display: inline; - margin: 0px 10px 0 0; - padding: 5px; - background: #37a7da; - border: 5px solid transparent; - border-width: 2px 5px; - -webkit-transition: all .2s ease-in-out; - -moz-transition: all .2s ease-in-out; -} - -#menu li a { - color: white; - text-transform: uppercase; - white-space: pre; -} - -#menu li:hover { - background-color: #f4bc03; - border-color: #f4bc03; -} - -#menu li:hover a { - text-decoration: none; -} - -#menu li.selected, #menu li.ancestor { - background: #515151; - border-color: #515151; -} - -#menu li.selected a { - color: white; -} - -#left { - float: left; - width: 49.5%; -} - -#right { - float: right; - width: 49.5%; -} - -br.clear { - clear: both; -} - -#error-404, #error-500, #content .block, #password-changed { - background: white; - font-size: 110%; - margin-bottom: 1em; -} - -#content .block h2 { - background: transparent; - font-weight: normal; - color: white; - text-transform: uppercase; - padding: 6px 10px 6px 10px; - color: #333; - font-size: 130%; - cursor: default; /* someday, perhaps, cursor: move */ - border-bottom: 1px solid #ddd; -} - -#content .block h2.feeds { - background-image: url(Picto-Bulle.png); -} - -#content .block h2.newsletters { - background-image: url(Picto-coeur.png); -} - -#content .block h3, -#content .block p { - margin: 1ex 10px; - padding-bottom: 1px; -} - -#content .demarches ul, -#content ul.mes-demarches { - list-style: none; - padding-left: 0px; - margin: 0px; -} - -#content .demarches ul { - -webkit-column-count: 2; - -moz-column-count: 2; - column-count: 2; -} - -#content ul.mes-demarches li, -#content .demarches ul li { - margin: 1ex 0 10px 1ex; - padding-left: 10px; - -webkit-column-break-inside: avoid; - -moz-column-break-inside: avoid; - column-break-inside: avoid; -} - -#content .demarches .toutes-les-demarches { - padding: 10px 0 10px 0; - margin-left: 20px; -} - -#content .toutes-les-demarches a { - font-size: 130%; -} - -#content .toutes-les-demarches a:before { - content: "▹ "; -} - -#commune-selector { - margin-left: 5px; - margin-bottom: 10px; -} - -#content #futurs-demarches { - overflow-y: hidden; - margin: 5px; - padding-bottom: 15px; -} - -#content #futurs-demarches.selected { - display: block; -} - -div#single-title { - border: 1px solid #a5a7aa; - border-width: 1px 0px; - font-size: 110%; - text-align: center; - padding: 10px 0; -} - -body.narrow-page #main-content { - background: white; - margin-top: 0; - padding: 10px 10px 0 10px; -} - -body.narrow-page #main-content form div input { - display: block; - margin-left: 10px; - margin-bottom: 2ex; -} - -div#welcome { - text-align: justify; - margin: 0 1em; -} - -div#welcome h2 { - margin: 1ex 0; - font-size: 300%; - background: transparent url(e54.png) left center no-repeat; - padding-left: 70px; - text-align: left; - width: 150%; -} - -div#welcome { - float: left; - width: 60%; -} - -span.helptext { - color: #666; -} - -body.narrow-page div.right { - width: 30%; - float: right; - margin: 1ex auto; -} - -body.narrow-page div.right form { - text-align: left; - background: white; - margin: 10px 10px; - padding: 10px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: 1px solid #ccc; - box-shadow: 0px 2px 3px rgba(0, 0, 0, .4); - -moz-box-shadow: 0px 2px 3px rgba(0, 0, 0, .4); - -webkit-box-shadow: 0px 2px 3px rgba(0, 0, 0, .4); - -} - -body.narrow-page div.right form div label { - width: 14em; - display: block; - padding-top: 3px; - color: #777; -} - -body.narrow-page div.right form div input { - width: 16em; -} - -body.narrow-page div.right form div.form-field-required label:after { - content: ""; -} - -body.narrow-page div.right form > input { - display: block; - margin: 1em auto 0 auto; - background: #37a7da; - color: white; - border: none; - padding: 3px 1em; -} - -div.login-actions { - text-align: center; -} - - -.region-header { - width: 1000px; - position: absolute; - top: 0px; -} - -#toplinks { - background: #ffffff; - position: relative; - float: right; - width: 250px; - padding: 5px 5px 5px 5px; -} - -#toplinks span { - width: 100%; - display: block; - margin: 0; - padding: 0; - color: #888; - background: url(button_connexion.gif) left center no-repeat; - border: 1px solid #e9e9e9; - line-height: 20px; - height: 22px; -} - -#toplinks a { - color: #888; - border: 1px solid transparent; -} - -#toplinks a.logout { - padding-left: 30px; -} - -#toplinks a:hover { - text-decoration: none; - color: #222; -} - -#toplinks a.restricted { - color: white; - float: right; - padding: 0 1ex; - border: 1px outset #888; - background: #37a7da; -} - -div#username { - float: right; - padding: 5px 5px 5px 5px; - background: white; - line-height: 20px; - height: 22px; - border: 1px solid white; -} - -ul.newsList { - list-style: none; -} - -ul.newsList li.abonne { - margin: 0; - padding: 0; -} - -.abonne { - padding-left: 20px; - background: transparent url(Validation.png) center left no-repeat; -} - -.nonAbonne { - padding-left: 20px; - background: transparent url(Annulation.png) center left no-repeat; -} - -/* page de profil */ -#my-informations { - margin-bottom: 15px; - padding: 0px; -} - -#my-informations p { - padding: 0 5px; -} - -#my-informations select, -#my-informations input { - margin-left: 10px; - display: block; -} - -/* forms error reporting */ - -.errorlist { - list-style: none; - padding-left: 0; - margin-left: 0; -} - -ul.errorlist li { - display: block; - color: #f44; -} - -.form-field-required label:after { - content: '*'; - color: #D90024; -} - -ul.errorlist + p { - margin-top: 0px; -} - - - -.passerelle-register-plugin input + label { - background: transparent url(Annulation.png) center left no-repeat; -} - -.passerelle-register-plugin input:checked + label { - background: transparent url(Validation.png) center left no-repeat; -} - -.passerelle-register-plugin td input { - display: none -} -.passerelle-register-plugin td label { - padding-left: 2em; -} - -div.block form { - padding: 0 1ex; -} - -table.announces { - width: 100%; - margin-bottom: 1em; -} - -table.announces thead td { - font-weight: bold; -} - -table.announces thead th { - width: 30%; -} - -table.announces tbody td { - text-align: center; -} - -table.announces tbody th { - width: 35%; - text-align: left; - font-weight: normal; -} - -#agglolinks { - position: absolute; - right: 0; - top: -140px; -} - -#agglolinks > a, #agglolinks > span > a { - width: 130px; -} - -#agglolinks a, #agglolinks span { - display: inline-block; - margin-left: 10px; - color: white; - text-transform: uppercase; - text-align: center; - padding: 5px 5px; - font-size: 16px; -} - -#agglolinks a.agglo-mon-agglo, #agglolinks a.agglo-mes-e-services { - background: #37a7da; -} - -#agglolinks a.agglo-connaitre { - background: #d90024; -} - -#agglolinks a.agglo-vivre { - background: #1f4791; -} - -#agglolinks a.agglo-entreprendre { - background: #a3d117; -} - -#agglolinks span.agglo-mes-e-services > a { - background: #37a7da; - width: 150px; -} - -ul.agglo-autres-services-menu { - display: none; - position: relative; - padding: 0px; - margin: 10px; - margin-top: 0px; - width: 160px; - z-index: 10; - background: rgba(246, 132, 35, 0.5); - border-bottom: 5px solid #37a7da; -} - -ul.agglo-autres-services-menu li { - list-style: none; - background: #FFA824; - opacity: 0.9; - -webkit-transition: all .2s ease-in-out; - -moz-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - border-left: 5px solid #37a7da; - border-right: 5px solid #37a7da; -} - -ul.agglo-autres-services-menu li:hover { - background: #f4bc03; - opacity: 1.0; -} - -#agglolinks ul.agglo-autres-services-menu li a { - display: block; - margin-left: 0; - -webkit-transition: all .2s ease-in-out; - -moz-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - overflow: hidden; - white-space: nowrap; -} - -#agglolinks ul.agglo-autres-services-menu li a:hover { - letter-spacing: 1px; - font-weight: bold; -} - -#agglolinks span.agglo-mes-e-services:hover ul.agglo-autres-services-menu { - float: right; - position: absolute; - display: block; -} - -.chapeau { - font-style: italic; - font-size: 110%; -} - -/* mon compte */ -#my-informations-form { - width: 90%; - padding-bottom: 1em; -} - -#my-informations-form input[type~=text] { - width: 100%; -} - -#id_edit-profile-email_wrap, #id_edit-profile-address_wrap { - clear: both; -} - -#id_edit-profile-first_name_wrap, #id_edit-profile-phone_wrap, #id_edit-profile-postal_code_wrap { - width: 45%; - float: left; -} - -#id_edit-profile-last_name_wrap, #id_edit-profile-mobile_wrap, #id_edit-profile-city_wrap { - width: 45%; - float: right; -} - -/* pied de page */ -#footer-menu { - position: absolute; - display: block; - top: 20px; - left: 20px; - width: 435px; - list-style: none; - margin: 0; - padding: 0; - text-align: left; -} - -.footer-menu-leaf { - display: inline; - margin: 0; - padding: 0; - padding-right: 20px; - padding-bottom: 20px; - float: left; -} - -.footer-menu-leaf-link, .footer-menu-leaf-link:hover { - display: block; - width: 125px; - height: 26px; - line-height: 26px; - background: #ffffff; - text-align: center; - text-transform: uppercase; - color: #515151; - text-decoration: none; - font-size: 14px; -} - -.clear { - clear: both; -} - -#my-password { - padding-bottom: 1ex; -} - -#my-password p { - font-weight: bold; -} - -#my-password p a { - color: inherit; - padding: 1ex; -} - -ul.show-user-feeds { - padding-left: 2em; -} - -ul.show-user-feeds li { - list-style: disc; - background: url(mediathk.png) left center no-repeat; - min-height: 30px; - padding-bottom: 4px; -} - -ul.show-user-feeds li.aquarium { background-image: url(aquarium.png); } -ul.show-user-feeds li.conservatoire { background-image: url(conservatoire.png); } -ul.show-user-feeds li.ecolothk { background-image: url(ecolothk.png); } -ul.show-user-feeds li.facebook { background-image: url(facebook.png); } -ul.show-user-feeds li.lattara { background-image: url(lattara.png); } -ul.show-user-feeds li.mediathk { background-image: url(mediathk.png); } -ul.show-user-feeds li.opendata { background-image: url(opendata.png); } -ul.show-user-feeds li.planet { background-image: url(planet.png); } - -#id_new_password1_help_text, #id_password1_help_text { - font-style: italic; - font-size: 90%; - color: red; -} - -/* saml post page */ -.post-redirect { - background: white; -} - -#messages { - margin-left: 210px; -} - -#messages ul { - padding: 0; - margin: 0; - color: #333; - list-style: none; -} - -#messages li.warning { -} - -#messages li.error { -} - -#messages li.info { -} - -/* registration form */ -img.captcha { - float: left; -} - -#id_captcha_1 { - width: 13em; -} - - -/* pimping up */ -h1#logo img { - -webkit-transition: all .2s ease-in-out; - -moz-transition: all .2s ease-in-out; -} - -h1#logo img:hover { - /* - -webkit-transform: scale(1.05); - -moz-transform: scale(1.05); - */ -} - - -#nav { - margin: 0 auto; - padding: 0px 0; - width: 180px; - margin: 17px auto; - font-size: 110%; - float: left; - position: relative; - z-index: 1000; -} - -#nav ul { - margin: 0; - padding: 0; - list-style: none; -} - -#nav li { - margin: 1ex 0; - padding: 1ex; - border: 1px solid #a5a7aa; - border-width: 1px 0px; - text-align: center; -} - -#nav a { - color: #404041; - text-decoration: none; -} - -#nav li.selected:after, -#nav li.ancestor:after, -#nav li a:hover, -#nav li.selected a, -#nav li.ancestor a { - color: #e0007a; -} - - -div.block { - text-align: left; - background: white; - margin: 10px 10px; - padding: 10px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: 1px solid #ccc; - box-shadow: 0px 2px 3px rgba(0, 0, 0, .4); - -moz-box-shadow: 0px 2px 3px rgba(0, 0, 0, .4); - -webkit-box-shadow: 0px 2px 3px rgba(0, 0, 0, .4); -} - -h2#welcome-title { - margin-top: 2em; - margin-bottom: 1em; -} - -select, -input[type="text"], -input[type="password"] { - border: 1px solid #aaa; - background: white url(field-shade.png) top left repeat-x; - padding: 1px; - border-radius: 2px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - color: black; - -webkit-transition: background 200ms ease-out; - display: block; -} - -input[type="text"]:focus, -input[type="password"]:focus { - border: 1px solid #888; - background: white; -} - -div#registration { - width: 40em; - text-align: justify; - margin: 2em auto; -} - -div#registration form { - margin: 2em 0; -} - -div#registration label { - display: block; - width: 15em; - float: left; - text-align: right; - padding-right: 1em; - color: #777; - padding-top: 0; -} - -div#registration ul.errorlist { - margin: 0; - padding-left: 16em; -} - -div#registration input[type="submit"] { - margin-left: 17em; -} - - - -#toplinks { - background: #ffffff; - position: absolute; - top: 3em; - right: 0; - width: 40%; - padding: 5px 5px 5px 5px; -} - -#toplinks span { - width: 100%; - display: block; - margin: 0; - padding: 0; - color: #888; - background: url(button_connexion.gif) left center no-repeat; - border: 1px solid #e9e9e9; - line-height: 20px; - height: 22px; -} - -#toplinks span.logged-in { - background: none; - border: none; - text-align: right; -} - -#toplinks a { - color: #888; - border: 1px solid transparent; -} - -#toplinks a:hover { - text-decoration: none; - color: #222; -} - -#toplinks a.restricted { - color: white; - float: right; - padding: 0.5ex 1ex; - border: 1px outset #888; - background: #672290; - position: absolute; - top: -3em; - right: 3px; -} - - -#toplinks a.logout { - background: url(button_connexion.gif) left center no-repeat; - display: inline-block; - padding: 1px; - padding-left: 30px; - border: 1px solid #e9e9e9; - padding-right: 1em; - margin-right: -2px; -} - -#real-content { - padding-left: 200px; - text-align: justify; - margin-top: 1em; -} - -#help-content { - padding-top: 10px; -} - -#help-menu-content li.selected > a { - color: #000; - font-weight: bold; -} - -ul.account-management-plugin { - padding-left: 1em; - margin: 0; -} - -ul.account-management-plugin li { - list-style-type: none; -} - -.block form label { - color: #777; - padding-top: 1ex; - display: block; -} - -.block form select, -.block form input[type="text"], -.block form input[type="password"] { - margin-left: 10px; -} - -.block ul.feed-list { - padding: 0; - padding-left: 1em; -} - -.block li.feed-list-item { - list-style: none; - padding: 0; -} - -.block li.feed-list-item label { - display: inline; -} - -p.fullname { - display: inline; - margin-right: 1.5em; -} diff --git a/portail_citoyen2/static/portail_citoyen/img/logo.png b/portail_citoyen2/static/portail_citoyen/img/logo.png deleted file mode 100644 index fb954dd..0000000 Binary files a/portail_citoyen2/static/portail_citoyen/img/logo.png and /dev/null differ diff --git a/portail_citoyen2/templates/admin/base_site.html b/portail_citoyen2/templates/admin/base_site.html deleted file mode 100644 index 5cd5f8b..0000000 --- a/portail_citoyen2/templates/admin/base_site.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "admin/base.html" %} -{% load i18n admin_tools_menu_tags %} - -{% block title %}{{ title }} | {% trans 'Citizen portal administration' %}{% endblock %} - -{% block extrastyle %} -{{ block.super }} -{% if user.is_active and user.is_staff %} -{% if not is_popup %} -{% admin_tools_render_menu_css %} -{% endif %} -{% endif %} -{% endblock %} - -{% block branding %} -{% if PORTAIL_ADMIN_URL %} -

      {% trans 'Administration portal' %}

      -{% else %} -

      {% trans 'Citizen portal administration' %}

      -{% endif %} -{% endblock %} - -{% block nav-global %} -{% if user.is_active and user.is_staff %} -{% if not is_popup %} -{% admin_tools_render_menu %} -{% endif %} -{% endif %} -{% endblock %} diff --git a/portail_citoyen2/templates/base.html b/portail_citoyen2/templates/base.html deleted file mode 100644 index 4e447a1..0000000 --- a/portail_citoyen2/templates/base.html +++ /dev/null @@ -1,80 +0,0 @@ - -{% load menu_tags cms_tags sekizai_tags i18n portail_citoyen_tags staticfiles %} - - - - - Compte Citoyen :: Démo :: {% page_attribute "page_title" %} - - {% render_block "css" %} - {% block extra_scripts %} - {% endblock %} - - - {% cms_toolbar %} -
      - -
      - -
      Portail citoyen
      - - {% block menu %} - - {% endblock %} - - {% block messages %} - {% if messages %} -
      -
        - {% for message in messages %} - {{ message }} - {% endfor %} -
      -
      - {% endif %} - {% endblock %} - -
      -
      - {% block content %} - {% endblock %} -
      -
      -
      - -
      - {% render_block "js" %} - {% if messages %} - - {% endif %} - - diff --git a/portail_citoyen2/templates/portail_citoyen/base_help.html b/portail_citoyen2/templates/portail_citoyen/base_help.html deleted file mode 100644 index 038b33b..0000000 --- a/portail_citoyen2/templates/portail_citoyen/base_help.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "base.html" %} -{% load cms_tags %} -{% load menu_tags %} - -{% block content %} -
      -
      -

      Utilisation du compte citoyen

      -
      -

      Sommaire

      -
        - {% show_menu 2 3 0 1 %} -
      -
      -
      -

      {% page_attribute "page_title" %}

      - {% block center %} - {% placeholder "center" %} - {% endblock %} -
      -
      -
      -
      -{% endblock %} diff --git a/portail_citoyen2/templates/portail_citoyen/base_one_column.html b/portail_citoyen2/templates/portail_citoyen/base_one_column.html deleted file mode 100644 index 6b7d654..0000000 --- a/portail_citoyen2/templates/portail_citoyen/base_one_column.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "base.html" %} -{% load cms_tags %} - -{% block content %} -
      -
      - {% block center %} - {% placeholder "center" %} - {% endblock %} -
      -
      -{% endblock %} diff --git a/portail_citoyen2/templates/portail_citoyen/base_two_columns.html b/portail_citoyen2/templates/portail_citoyen/base_two_columns.html deleted file mode 100644 index 24a99e0..0000000 --- a/portail_citoyen2/templates/portail_citoyen/base_two_columns.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "base.html" %} -{% load cms_tags %} - -{% block content %} -
      -
      - {% block left %} - {% placeholder "left" %} - {% endblock %} -
      - -
      -
      -{% endblock %} diff --git a/portail_citoyen2/templates/portail_citoyen/block.html b/portail_citoyen2/templates/portail_citoyen/block.html deleted file mode 100644 index 68ade7f..0000000 --- a/portail_citoyen2/templates/portail_citoyen/block.html +++ /dev/null @@ -1,3 +0,0 @@ -
      - {{ body|safe }} -
      diff --git a/portail_citoyen2/templates/portail_citoyen/form.html b/portail_citoyen2/templates/portail_citoyen/form.html deleted file mode 100644 index 40b0632..0000000 --- a/portail_citoyen2/templates/portail_citoyen/form.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load i18n %} -
      - {% csrf_token %} - {% include "portail_citoyen/form_fields.html" with form=form %} - - - {% if not no_cancel_button %} - - {% endif %} -
      diff --git a/portail_citoyen2/templates/portail_citoyen/form_fields.html b/portail_citoyen2/templates/portail_citoyen/form_fields.html deleted file mode 100644 index 76b3a2d..0000000 --- a/portail_citoyen2/templates/portail_citoyen/form_fields.html +++ /dev/null @@ -1,11 +0,0 @@ - {{ form.non_field_errors }} - {% for field in form %} -
      - {{ field.errors }} - - {{ field }} - {% if field.help_text %} -

      {{ field.help_text }}

      - {% endif %} -
      - {% endfor %} diff --git a/portail_citoyen2/templates/portail_citoyen/top-menu.html b/portail_citoyen2/templates/portail_citoyen/top-menu.html deleted file mode 100644 index baf1ddf..0000000 --- a/portail_citoyen2/templates/portail_citoyen/top-menu.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load menu_tags %} -{% for child in children %} -
    • - {{ child.get_menu_title }} - {% if child.children %} -
        - {% show_menu from_level to_level extra_inactive extra_active template "" "" child %} -
      - {% endif %} -
    • -{% endfor %} diff --git a/portail_citoyen2/templatetags/__init__.py b/portail_citoyen2/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portail_citoyen2/templatetags/portail_citoyen_tags.py b/portail_citoyen2/templatetags/portail_citoyen_tags.py deleted file mode 100644 index f2e5931..0000000 --- a/portail_citoyen2/templatetags/portail_citoyen_tags.py +++ /dev/null @@ -1,14 +0,0 @@ -from django import template - -register = template.Library() - -@register.assignment_tag(takes_context=True) -def user_in_group(context, group): - user = context['user'] - return user.groups.filter(name=group).exists() - - -@register.assignment_tag(takes_context=True) -def user_in_group_prefix(context, group): - user = context['user'] - return user.groups.filter(name__startswith=group).exists() diff --git a/portail_citoyen2/urls.py b/portail_citoyen2/urls.py deleted file mode 100644 index 0c33087..0000000 --- a/portail_citoyen2/urls.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.conf.urls import patterns, include, url -from django.contrib import admin -from django.conf import settings - - -admin.autodiscover() - - -urlpatterns = patterns('portail_citoyen2.views', - url(r'^admin/', include(admin.site.urls)), - url(r'^admin_tools/', include('admin_tools.urls')), - url(r'^accounts/logout/$', 'logout', name='account_logout'), - (r'^accounts/', include('allauth.urls')), - url(r'^stats/$', 'stats'), -) - -# urlpatterns = patterns('', -# url(r'^authsaml2/$', include('authentic2.authsaml2.urls')), -# ) - -if settings.DEBUG: - urlpatterns += patterns('', - url(r'^media/(?P.*)$', 'django.views.static.serve', - {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), - ) - -if 'cms_ajax_text_plugin' in settings.INSTALLED_APPS: - urlpatterns += patterns('', - url('^plugin/cms_ajax_text/', include('cms_ajax_text_plugin.urls')), - ) - -urlpatterns += patterns('', - url(r'^', include('cms.urls')), -) - diff --git a/portail_citoyen2/utils.py b/portail_citoyen2/utils.py deleted file mode 100644 index 6510447..0000000 --- a/portail_citoyen2/utils.py +++ /dev/null @@ -1,11 +0,0 @@ -def callable_has_arg(method, arg): - if hasattr(method, 'need_'+arg): - return getattr(method, 'need_'+arg) - if hasattr(method, 'im_func'): - varnames = method.im_func.func_code.co_varnames - argcount = method.im_func.func_code.co_argcount - return arg in varnames[1:argcount] - else: - varnames = method.func_code.co_varnames - argcount = method.func_code.co_argcount - return arg in varnames[:argcount] diff --git a/portail_citoyen2/views.py b/portail_citoyen2/views.py deleted file mode 100644 index dcde2b9..0000000 --- a/portail_citoyen2/views.py +++ /dev/null @@ -1,28 +0,0 @@ -import json -from datetime import timedelta - -from django.http import HttpResponse -from django.utils.timezone import now - -from django.contrib.auth import get_user_model -from allauth.account.views import LogoutView -from allauth.account.adapter import get_adapter - -class PCLogoutView(LogoutView): - def get_redirect_url(self): - return (self.request.REQUEST.get(self.redirect_field_name) or - get_adapter().get_logout_redirect_url(self.request)) - -logout = PCLogoutView.as_view() - -def stats(request): - User = get_user_model() - last_day = now() - timedelta(days=1) - last_hour = now() - timedelta(hours=1) - qs = User.objects.all() - what = { - 'users_count': qs.count(), - 'users_last_connection_less_than_one_day_ago': qs.filter(last_login__gte=last_day).count(), - 'user_last_connection_less_than_one_hour_ago': qs.filter(last_login__gte=last_hour).count(), - } - return HttpResponse(json.dumps(what), mimetype='application/json') diff --git a/portail_citoyen2/wsgi.py b/portail_citoyen2/wsgi.py deleted file mode 100644 index 80d4c65..0000000 --- a/portail_citoyen2/wsgi.py +++ /dev/null @@ -1,28 +0,0 @@ -""" -WSGI config for portail_citoyen project. - -This module contains the WSGI application used by Django's development server -and any production WSGI deployments. It should expose a module-level variable -named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover -this application via the ``WSGI_APPLICATION`` setting. - -Usually you will have the standard Django WSGI application here, but it also -might make sense to replace the whole Django WSGI application with a custom one -that later delegates to the Django one. For example, you could introduce WSGI -middleware here, or combine a Django application with an application of another -framework. - -""" -import os - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "portail_citoyen2.settings") - -# This application object is used by any WSGI server configured to use this -# file. This includes Django's development server, if the WSGI_APPLICATION -# setting points here. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() - -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 77f07f9..0000000 --- a/requirements.txt +++ /dev/null @@ -1,14 +0,0 @@ ---allow-all-external ---allow-unverified django-admin-tools -https://github.com/divio/django-cms/archive/16f667a5f818dd116e752d9cb7eeb37d4b0e3a1f.zip#egg=django-cms-3.0b4.dev10 --f https://repos.entrouvert.org/python-entrouvert.git/ -python-entrouvert -requests>=1.0.0 -cmsplugin-text-wrapper>=0.5 -django-cms-ajax-text-plugin -feedparser -django>=1.5.1,<1.6 -south>=0.8.4 -Pillow -djangocms-text-ckeditor -django-allauth diff --git a/run.sh b/run.sh deleted file mode 100755 index 8700df1..0000000 --- a/run.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -BASE=`dirname $0` -PROJECT=portail-citoyen2 -CTL=$BASE/${PROJECT} -VENV=$BASE/${PROJECT}-venv - -if [ ! -n "$VIRTUAL_ENV" ]; then - if [ ! -d $VENV ]; then - $BASE/start.sh norun - fi - . $VENV/bin/activate -fi -export DEBUG=1 -$CTL "${@:-runserver}" - diff --git a/setup.py b/setup.py deleted file mode 100755 index ed00a13..0000000 --- a/setup.py +++ /dev/null @@ -1,139 +0,0 @@ -#! /usr/bin/env python - -''' Setup script for Polynum -''' - -import glob -import re -import sys -import os - -from setuptools import setup, find_packages -from setuptools.command.install_lib import install_lib as _install_lib -from distutils.command.build import build as _build -from distutils.command.sdist import sdist -from distutils.cmd import Command - -class compile_translations(Command): - description = 'compile message catalogs to MO files via django compilemessages' - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - try: - from django.core.management.commands.compilemessages import \ - compile_messages - for path in ['portail_citoyen2'] + glob.glob('portail_citoyen2/apps/*'): - if path.endswith('.py'): - continue - if not os.path.isdir(os.path.join(path, 'locale')): - continue - curdir = os.getcwd() - os.chdir(os.path.realpath(path)) - compile_messages(sys.stderr) - os.chdir(curdir) - except ImportError: - print - sys.stderr.write('!!! Please install Django >= 1.4 to build translations') - print - print - -class build(_build): - sub_commands = [('compile_translations', None)] + _build.sub_commands - -class install_lib(_install_lib): - def run(self): - self.run_command('compile_translations') - _install_lib.run(self) - -class eo_sdist(sdist): - - def run(self): - print "creating VERSION file" - if os.path.exists('VERSION'): - os.remove('VERSION') - version = get_version() - version_file = open('VERSION', 'w') - version_file.write(version) - version_file.close() - sdist.run(self) - print "removing VERSION file" - if os.path.exists('VERSION'): - os.remove('VERSION') - -def get_version(): - - version = None - if os.path.exists('VERSION'): - version_file = open('VERSION', 'r') - version = version_file.read() - version_file.close() - return version - for d in glob.glob('*'): - if not os.path.isdir(d): - continue - module_file = os.path.join(d, '__init__.py') - if not os.path.exists(module_file): - continue - for v in re.findall("""__version__ *= *['"](.*)['"]""", - open(module_file).read()): - assert version is None - version = v - if version: - break - assert version is not None - if os.path.exists('.git'): - import subprocess - p = subprocess.Popen(['git','describe','--dirty','--match=v*'], - stdout=subprocess.PIPE) - result = p.communicate()[0] - assert p.returncode == 0, 'git returned non-zero' - new_version = result.split()[0][1:] - assert new_version.split('-')[0] == version, '__version__ must match the last git annotated tag' - version = new_version.replace('-', '.') - return version - - -setup(name="portail-citoyen2", - version=get_version(), - license="AGPLv3 or later", - description="Portail citoyen", - url="http://dev.entrouvert.org/projects/portail-citoyen/", - author="Entr'ouvert", - author_email="info@entrouvert.org", - maintainer="Benjamin Dauvergne", - maintainer_email="info@entrouvert.com", - include_package_data=True, - packages=find_packages(), - scripts=('manage.py',), - setup_requires=[ - 'django>=1.5.1', - ], - install_requires=[ - 'requests>=2.1', - 'feedparser', - 'django>=1.5.1,<1.6', - 'cmsplugin-text-wrapper>=0.5', - 'django-cms>=3', - 'django-cms-ajax-text-plugin', - 'python-entrouvert', - 'south>=0.8.4', - 'Pillow', - 'djangocms-text-ckeditor', - 'django-allauth', - ], - dependency_links = [ - 'git+git://repos.entrouvert.org/python-entrouvert.git/#egg=python-entrouvert-9999.0', - ], - cmdclass={ - 'build': build, - 'install_lib': install_lib, - 'compile_translations': compile_translations, - 'sdist': eo_sdist - }, -) diff --git a/start.sh b/start.sh deleted file mode 100755 index fcbe45c..0000000 --- a/start.sh +++ /dev/null @@ -1,36 +0,0 @@ -PROJECT=portail-citoyen2 -CTL=${PROJECT} -VENV=${PROJECT}-venv - -if [ -f /etc/debian_release ]; then - if ! dpkg -l build-essential python-dev >/dev/null 2>&1; then - aptitude install python-dev build-essential - fi -fi - -if [ "$VIRTUAL_ENV" = "" ]; then - if which mkvirtualenv >/dev/null 2>&1; then - workon $PROJECT || (mkvirtualenv $PROJECT; workon $PROJECT) - else - if [ ! -d $VENV ]; then - virtualenv --system-site-packages $VENV 2>/dev/null || virtualenv $VENV - fi - . ./$VENV/bin/activate - fi -fi -pip install --upgrade setuptools -pip install --upgrade pip -pip install --upgrade pyOpenSSL==0.13 ndg-httpsclient requests pyasn1 -sed -i 's/^MAX = 64/MAX = 200/' $VENV/lib/python*/site-packages/ndg/httpsclient/subj_alt_name.py -pip install --upgrade --process-dependency-links -r requirements.txt -if [ ! -f $PROJECT.db ]; then - ./$CTL syncdb --all --noinput - ./$CTL migrate --fake - if [ -f load-base-data.sh ]; then - ./load-base-data.sh - fi -fi -if [ "$1" != "norun" ]; then - export DEBUG=1 - ./$CTL runserver -fi diff --git a/tools/export_data.sh b/tools/export_data.sh deleted file mode 100755 index 88d28df..0000000 --- a/tools/export_data.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -portail-citoyen-manage dumpdata --indent=2 sites cms cms.cmsplugin cmsplugin_text_wrapper \ - file googlemap link picture snippet teaser video login_plugin data_source_plugin \ - a2_service_list_plugin feed_plugin idp attribute_aggregator > demo.json diff --git a/tools/flush_memcache.py b/tools/flush_memcache.py deleted file mode 100755 index 51af925..0000000 --- a/tools/flush_memcache.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/python -import memcache - -mc = memcache.Client(['127.0.0.1:11211']) -mc.flush_all()