INTRODUCCIÓN A CMS MERENGUE

download INTRODUCCIÓN A CMS MERENGUE

of 45

Transcript of INTRODUCCIÓN A CMS MERENGUE

Tutorial de MerengueComo obtener Merengue CMSEl merengue es un proyecto de cdigo abierto disponible bajo la licencia LGPL. Se requiere la versin de Python 2.4 o superior, y la versin de Django 1.1 o superior. Hay varias maneras de conseguirlo.

Opcin 1. Obtenga la ltima versin establePuede obtener la ltima versin oficial de PyPItar xzvf merengue-0.7.0.tar.gz cd merengue-0.7.0 sudo python setup.py install

O lo instalas con el easy_install:sudo easy_install merengue

Opcin 2. Obtener la ltima versin de desarrolloLa ltima y mejor versin de Merengue es el que est en nuestro repositorio Subversion (nuestro sistema de control de revisin). Obtener usando este comando shell, lo que requiere Subversion:svn checkout http://svn.merengueproject.org/trunk/merengueproj/

Despus de conseguirlo, consulte la gua de instalacin para obtener instrucciones adicionales. Tenemos la lista de correo merengue-desarrolladores, donde los dems usuarios y los desarrolladores Merengue todos ellos pasan el tiempo para ayudar a los dems.

Como instalar Merengue.Este documento le pondr en marcha con el merengue.

ConvencionesTenemos que asumir un sistema operativo con el fin de describir la instalacin de los paquetes del sistema necesarios para el merengue. Para estas instrucciones, vamos a suponer el uso de Ubuntu del sistema operativo. Si usted no est usando Ubuntu del sistema operativo, tendr que adaptar el siguiente apt-get comandos a su sistema operativo especfico.

Dependencias anteriores. Python: El lenguaje de programacin Python. Apoyado 2.5, 2.6 y versiones 2.7. Python 3 no es compatible.$ sudo apt-get install python

Python-setuptools: Necesario para la instalacin de paquetes de Python$ sudo apt-get install python-setuptools

ffmpeg: ffmpeg es una completa solucin multiplataforma para grabar, convertir y transmitir audio y vdeo. Incluye libavcodec - el principal de audio / vdeo de la biblioteca cdec.$ sudo apt-get install ffmpeg libavcodec-unstripped-52 unstripped-52 libavformat-unstripped-5 libavdevice-

gettext: Una herramienta para la gestin de catlogos de traducciones.$ sudo apt-get install gettext

Instalacin PIL.El Python Imaging Library (PIL) es generalmente una de las ms componentes que se instalarn en un ambiente Python de los paquetes de Python, ya que requiere varios paquetes del sistema para compilar correctamente todas las bibliotecas de manipulacin de imgenes. Para instalar correctamente PIL (para un entorno de Ubuntu / Debian), instalar el siguiente paquete:$ sudo apt-get install python-imaging

Por cierto, usted puede intentar instalar las dependencias por separado e instalar PIL del paquete de eggs:$ $ $ $ $ sudo sudo sudo sudo sudo apt-get apt-get apt-get apt-get apt-get install install install install install libfreetype6-dev python-tk tcl8.5-dev tk8.5-dev liblcms1-dev liblcms-utils

Otras Dependencias Recomendadasipython: una terminal de Python con autocomplete, help, etc$ apt-get install ipython

Instalacin con easy_installLa forma ms fcil de instalar Merengue es usar easy_install. Todas las dependencias se instalarn automticamente. Utilice el siguiente comando:$ sudo easy_install merengue

Vaya a la seccin de creacin de proyectos para continuar.

Desarrollo de instalacin.En Merengue el desarrollo de la instalacin ser instalado desde el repositorio de subversin. En este caso, su proyecto se ver afectado por las actualizaciones de cdigo en el repositorio Merengue (incluyendo nuevas caractersticas y correcciones que se han implementado, as como los nuevos errores o cambios que pueden causar problemas de compatibilidad con el cdigo).

Instalacin de DjangoMerengue utiliza Django 1.3. Se puede instalar con estas instrucciones: $ wget trust-server-names http://www.djangoproject.com/download/1.3/tarball/$ tar xzvf Django-1.3.tar.gz $ cd Django-1.3 $ sudo python setup.py install

Prueba para ver si tiene la versin correcta de Django:$ python -c "import django; print django.VERSION" (1, 3, 0, 'final', 0)

Descargando Merengue.Descargar el cdigo fuente Merengue desde un paquete o en el repositorio:$ svn checkout https://svn.merengueproject.org/trunk/merengueproj $ cd merengueproj

La instalacin de las dependencias de PythonEl archivo requirements.txt listas de los paquetes de Python requeridos por Merengue. Tendr que instalar estas dependencias a travs de los huevos de Python. Usted puede usar easy_install para instalar cada huevo por separado, o utilizar la funcin PiP para instalar todos los paquetes necesarios a travs del siguiente comando:$ sudo pip install-r requirements.txt

Instalacin de MerengueEjecutar setup.py para completar el proceso de instalacin manual:$ sudo python setup.py develop

Nota desarrollar comando en setup.py crear enlaces simblicos en el directorio site-packages. A continuacin, usted puede actualizar su repositorio Subversion Merengue y el paquete de instalacin se actualizar tambin.

Proyecto de Crear Merengue.Al iniciar un proyecto de Merengue, usted puede comenzar su desarrollo en uno de dos modos: el modo de produccin o el modo de desarrollo. Por defecto, el proyecto contendr enlaces simblicos en el cdigo Merengue. En este caso el proyecto se ver afectado por las actualizaciones de cdigo para el paquete de Merengue (decir, haciendo un easy_install -U Merengue).$ merengue-admin.py startproject myproject

Si desea congelar Merengue en su proyecto, puede utilizar la opcin - copy y el cdigo de Merengue se copiarn en vez de vinculados. Por lo tanto, cualquier nueva (es decir, despus) las actualizaciones de cdigo no afectar a su proyecto.

Configuracin de Idioma.En Merengue, cambio de idioma debe hacerse antes de la creacin de bases de datos, porque los modelos de datos se crean con los campos traducibles (el nmero de columnas creadas es igual al

nmero de idiomas configurados). Los parmetros LANGUAGE_CODE e IDIOMAS deben ser definidos en el fichero de configuracinmyproject/settings.py: LANGUAGE_CODE = 'es' LANGUAGES = ( ('es', ugettext('Espaol')), ('en', ugettext('English')), ('fr', ugettext('Franais')), )

Ms Informacin Ver la aplicacin django-Transmeta para obtener ms informacin acerca de los modelos traducibles.

Instalacin y configuracin de bases de datosLa conexin de base de datos se debe definir en el fichero de configuracin mediante el establecimiento de la configuracin de BASE DE DATOS. Puede utilizar todos los motores de base de datos con el apoyo de Django. Vamos a incluir en este ejemplo la documentacin de la configuracin de dos bases de datos SQLite y PostgreSQL.

SQLiteUsted puede configurar una base de datos SQLite, simplemente utilizando los siguientes parmetros en el archivo settings.py:DATABASE = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'database.db', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }

donde el NOMBRE es el camino de la base de datos. Nota SQLite no es una base de datos recomendado para poner tu sitio en la produccin, pero slo es til en el proceso de desarrollo.

PostgreSQLSupongamos que usted configurar una base de datos PostgreSQL con los siguientes parmetros:DATABASE = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'myproject', 'USER': 'myprojectuser',

'PASSWORD': 'password', 'HOST': '', 'PORT': '', } }

Instalar la base de datos y el correspondiente dependencias python: postgresql, python-psycopg2. PostgreSQL: el sistema de base de datos objeto-relacional que vamos a utilizar.$ apt-get install postgresql

python-psycopg: la interfaz de Python para la base de datos PostgreSQL.$ apt-get install python-psycopg2

Ahora tienes que crear la base de datos del proyecto Nota Suponemos que el usuario tiene permisos superadmin en PostgreSQL. La base de datos PostgreSQL y el usuario se crea con estas instrucciones:$ createuser myprojectuser $ createdb --owner=myprojectuser myproject

Tenemos que permitir conexiones a la base de datos desde el equipo local. Editar / etc / postgresql / XX / pg_hba.conf principal / y aadir la siguiente lnea (no al final):local myproject myprojectuser trust local test_myproject myprojectuser trust # necessary for tests

Actualizar pg_hba.conf en el servidor PostgreSQL con el siguiente comando:$ /etc/init.d/postgresql-X.X reload

Reiniciar PostgreSQL y verificar el acceso de usuarios con este comando:$ psql myproject -U myprojectuser

Generacin de modelos iniciales MerengueUsted tendr que construir los modelos Merengue inicial base de datos con los siguientes comandos:$ python manage.py syncdb $ python manage.py migrate

Puede pasar por alto la creacin de superusuario debido a que un usuario llamado admin con la contrasea admin se crear automticamente.

Recoger de los medios de comunicacin de Aplicaciones instaladas DjangoAlgunas aplicaciones de Django utiliza los archivos de los medios de comunicacin que necesita el merengue. Para incluir estos archivos en su proyecto, ejecutar el comando:$ python manage.py sync_apps_media link

Nota Se puede quitar la opcin link si desea Merengue para copiar los archivos de los medios de comunicacin en lugar de vincular a ellos.

Ver el sitioIr al directorio de su proyecto y probar el servidor de desarrollo de Django para asegurarse de que se inicia sin problemas:$ python manage.py runserver

Abra el navegador web e introduzca la siguiente URL: http://localhost:8000/admin/ para ver si la interfaz web de administracin se est ejecutando correctamente. Utilizar el nombre de usuario y contrasea para acceder a la interfaz de administracin:user: admin password: admin

Para ver el sitio pblico, entrar en la URL: http://localhost:8000/

Instalacin con GISPor defecto, las caractersticas de los GIS son deshabilitadas en Merengue. Para aadir soporte GIS para su proyecto merengue, tendr que realizar alguna instalacin adicional e instrucciones de configuracin. En esta seccin se puede omitir si el proyecto no requiere caractersticas de los GIS.

Cambio de los ajustesPara uso de los GIS, cambiar una lnea en el archivo settings.py proyecto:USE_GIS = True

Dependencias postGISNota Una vez ms, se supone que usted est usando PostgreSQL como su base de datos, as como para las extensiones de PostGIS SIG. Si est utilizando otra base de datos, usted tiene que adaptar las instrucciones siguientes. GeoDjango instrucciones de instalacin estn en lnea en http://geodjango.org/docs/install.html Adems de las dependencias mencionadas anteriormente, usted debe instalar el siguiente paquete: geopy: hace que sea fcil para los desarrolladores para localizar las coordenadas de las direcciones, ciudades, pases y lugares de inters en todo el mundo.$ easy_install geopy

Instalacin de ExtensionesGISCon Ubuntu 10.04, todas las extensiones de los SIG para postgresql-8.4 puede ser instalado con los siguientes comandos:$ sudo apt-get install binutils libgdal1-1.6.0 postgresql-8.4-postgis pythonpsycopg2 python-setuptools $ export PG_CONFIG='/usr/lib/postgresql/8.4/bin/pg_config'

Si ests usando Ubuntu con una versin ms reciente de 8,04 y ms de 10,04, a continuacin, instalar todas las extensiones de los GIS para postgresql-8.3 con los siguientes comandos:$ sudo apt-get install binutils libgdal1-1.5.0 postgresql-8.3-postgis pythonpsycopg2 python-setuptools $ export PG_CONFIG='/usr/lib/postgresql/8.3/bin/pg_config'

Nota Si est utilizando postgresql-8.4 con una versin de Ubuntu antes de 10.04 y no existe ningn paquete postgresql-8.4-postgis, a continuacin, utilizar los paquetes de postgresql-8.3, junto con las siguientes opciones. Utilice la opcin-p 5433 con psql, createuser y createdb. Configure su proyecto Merengue para utilizar ese puerto (5433) con la base de datos. Si su distribucin no tiene el paquete postGIS ser necesario para compilarlo: 1. Instalacin de las cabeceras de la fuente de PostgreSQL:$ sudo apt-get install postgresql-server-dev-X.X $ export PG_CONFIG='/usr/lib/postgresql/X.X/bin/pg_config'

2. Compilar la librera GEOS:$ $ $ $ $ cd resources tar xjf geos-x.x.x.tar.bz2 cd geos-x.x.x ./configure && make sudo make install

3. Compile la biblioteca PROJ.4:$ $ $ $ $ $ $ $ $ cd resources tar xzf proj-x.x.x.tar.gz cd proj-x.x.x/nad tar xzf ../../proj-datumgrid-x.x.tar.gz cd .. ./configure make sudo make install cd ..

4. Compilar PostGIS:$ $ $ $ $ $ tar xzf postgis-x.x.x.tar.gz cd postgis-x.x.x ./configure --with-pgsql=$PG_CONFIG --datadir=`$PG_CONFIG --sharedir` make sudo make install cd ..

5. Compilar la librera GDAL:$ tar xzf gdal-x.x.x.tar.gz $ cd gdal-x.x.x

$ $ $ $

./configure make # Go get some coffee, this takes a while. sudo make install cd ..

6. Actualizar todas las bibliotecas dinmicas:$ sudo ldconfig -v

Nota Asegrese de que la lnea / usr / local / lib est incluido en el ld.so.conf archivo / etc /

Los cambios en la configuracin de base de datosCrear la plantilla de base de datos postgis:$ createdb -E UTF8 template_postgis $ createlang -d template_postgis plpgsql

En Ubuntu (la versin 10.04 o superior):$ $ $ $ $ PG_GIS_TEMPLATES=/usr/share/postgresql/8.4/contrib/ psql -d template_postgis -f $PG_GIS_TEMPLATES/postgis.sql psql -d template_postgis -f $PG_GIS_TEMPLATES/spatial_ref_sys.sql psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;" psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"

En Ubuntu (versiones superiores a 8.04 y menos de 10.04 - los que utilizan el paquete postgres-8.3postgis):$ $ $ $ $ PG_GIS_TEMPLATES=/usr/share/postgresql-8.3-postgis/ psql -d template_postgis -f $PG_GIS_TEMPLATES/lwpostgis.sql psql -d template_postgis -f $PG_GIS_TEMPLATES/spatial_ref_sys.sql psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;" psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"

Nota Recuerde que si usted tiene postgresql-8.3 y 8.4 corriendo al mismo tiempo es necesario aadir la opcin-p 5433 al psql, createdb, y los comandos createlang. En cualquier otro caso:$ $ $ $ psql psql psql psql -d -d -d -d template_postgis template_postgis template_postgis template_postgis -f -f -c -c `$PG_CONFIG --sharedir`/lwpostgis.sql `$PG_CONFIG --sharedir`/spatial_ref_sys.sql "GRANT ALL ON geometry_columns TO PUBLIC;" "GRANT ALL ON spatial_ref_sys TO PUBLIC;"

La creacin de la base de datos del proyectoNota Si usted utiliza las instrucciones de instalacin anterior (no GIS), tendr que volver a crear la base de datos del proyecto, debido a que la base de datos no va a funcionar con el SIG habilitado. Antes de continuar, tendr que borrar la base de datos anterior.

Base de datos cambia un poco debido a la creacin de la base de datos del proyecto tiene que usar template_postgis como la plantilla de base de datos (con todas las extensiones de postgis incluido).$ createuser myproject $ createdb -T template_postgis --owner=myproject myproject

Actualizacin de MerenguePara actualizar sus modelos despus de una actualizacin de Merengue, puede utilizar el comando south migrate de la siguiente manera:$ python manage.py migrate

Este comando no afecta a la migracin de los plugins instalados en el proyecto. Con el fin de realizar las migraciones de bases de datos de plugins, tendr que ejecutar el comando migrate_plugins:$ python manage.py migrate_plugins

A veces las nuevas versiones Merengue pueden incluir nuevas aplicaciones que tenga que instalar. La mejor manera de asegurar que su sistema tiene todos los archivos multimedia que se puede ejecutar el siguiente comando:$ python manage.py sync_apps_media --link

Adems, se recomienda despus de los cambios en el proyecto Merengue skel. Esta documentacin puede ser til en la incorporacin de estos cambios en su propio proyecto.

El despliegue de MerengueDesde el Merengue est basado en Django, recomendamos la lectura de la documentacin de implementacin antes de implementar Django Merengue. La configuracin de implementacin recomendada para Merengue es el uso de nginx con WSGI. Sin embargo, otras configuraciones de implementacin de Django se puede utilizar. Esta seccin incluye algunos puntos a considerar al planear una implementacin de sitio Merengue.

Servicio a los archivos multimedia con el servidor WebPara ayudar a mantener plugins Merengue y aplicaciones porttiles y reutilizables, plugins Merengue (y algunas aplicaciones Merengue) puede contener archivos multimedia ubicados en un directorio de los medios de comunicacin dentro de cada directorio de plugins. Merengue ha puesto en marcha el punto de vista merengue.views.static.serve que virtualiza el directorio de los medios de comunicacin especifica como MEDIA_ROOT. De este modo, el servidor de desarrollo de Django funciona correctamente. Sin embargo, si desea establecer la configuracin para los archivos de los medios de comunicacin son atendidas por el servidor web, debe recopilar todos los archivos multimedia y guardarlos debajo de MEDIA_ROOT. Esto se hace con:$ python manage.py sync_plugins_media --link --all

La opcin link se puede quitar si prefiere copiar los archivos multimedia (en oposicin a los enlaces simblicos). Adems, algunas aplicaciones Django incluir sus archivos de medios propios. Estos archivos de los medios de comunicacin deben ser recogidos a travs del comando:

$ python manage.py sync_apps_media --link

Ms Informacin Ver archivos multimedia en los plugins para ms informacin al respecto.

Ejemplo: Una configuracin de Merengue con nginx y WSGIEn esta seccin vamos a mostrar la configuracin demo.merengueproject.org. Esta configuracin utiliza el servidor nginx con el mdulo de uWSGI. Consulte Ejecucin de uWSGI detrs de Nginx para ms informacin. Este es un ejemplo de archivo de configuracin de nginx (vlido para nginx-1.0.X compilado desde el cdigo fuente):server { listen server_name access_log 80; yoursite.yourdomain.org; logs/yoursite.yourdomain.access.log;

location /media/ { alias /home/user/yoursite/media/; } location /admin_media/ { alias /home/user/yoursite/media/admin/; } location / { include uwsgi_params; uwsgi_pass unix:///home/user/uwsgi.sock; uwsgi_param UWSGI_SCRIPT wsgi; }

}

SupuestosSuponiendo que / home / user / yoursite es un proyecto de Merengue de costumbre, creada con el merengue-admin.py comando startproject, despus de la instalacin docs. Tambin se supone que hemos utilizado para instalar el paquete virtualenv Merengue, y el virtualenv se encuentra en / home / user / venvs / merengue Por ltimo, para iniciar el servidor uWSGI, es necesario un guin similar a esta:#!/bin/bash PROJECTDIR="/home/user" PIDFILE="$PROJECTDIR/demomerengue.pid" VIRTUALENV=$PROJECTDIR/venvs/merengue SOCKET="$PROJECTDIR/uwsgi.sock" PROJECTNAME="yoursite" LOGFILE="$PROJECTDIR/demomerengue.uwsgi.log" export LC_ALL=es_ES.UTF-8 function start { echo "Starting Merengue website..."

uwsgi -p 4 -C -M 4 -A 4 -m --no-orphans -s $SOCKET -H $VIRTUALENV --pythonpath $PROJECTDIR \ --pythonpath $PROJECTDIR/$PROJECTNAME --pidfile $PIDFILE -d $LOGFILE } function stop { echo "Stopping Merengue website..." kill -9 `cat $PIDFILE` } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: yoursitectl {start|stop|restart}" exit 1 ;; esac exit 0

Nota Las instrucciones anteriores lanzar cuatro procesos de trabajo uwsgi en paralelo (-p 4 argumento). El nmero de trabajadores depende de la carga del sitio. Por cierto, si usted tiene ms de un proceso de trabajo, tendr que Memcache utilizar como backend cach para obtener la invalidacin de cach funciona correctamente en todos los procesos. Ver la configuracin de almacenamiento en cach para ms informacin. Por ltimo, usted tiene que crear un archivo en el directorio de wsgi.py proyecto Merengue con el siguiente contenido:import os import sys import django.core.handlers.wsgi os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings' proj_dir = os.path.abspath(os.path.dirname(__file__)) sys.path.append(os.path.join(proj_dir, 'apps')) sys.path.append(os.path.join(proj_dir, 'merengue', 'apps')) application = django.core.handlers.wsgi.WSGIHandler()

Optimizacin de MerengueMerengue es bastante flexible y optimizable y le permite mejorar mucho el rendimiento de su sitio. Ver la optimizacin de una instalacin de Merengue para ms informacin.

La optimizacin de una instalacin de MerengueMerengue cuenta con varias opciones de optimizacin que puede aumentar considerablemente el rendimiento de su sitio.

Deshabilitar el modo de depuracinLo primero que debe hacer en un centro de produccin es desactivar el modo de depuracin mediante el establecimiento de la configuracin de DEBUG en false. Esto acelerar tres veces el desempeo Merengue, debido principalmente a la barra de depuracin de Django, que por defecto est activado en modo de depuracin.

La compresin de archivos Javascript y CSSPor motivos de rendimiento, Merengue pondr la mayora de los archivos Javascript cerca de la etiqueta HTML . Activos CSS se encuentra en la seccin . Nota Por defecto la configuracin de compresin es configurado para no DEBUG. Si se establece debug en false cuando se despliega la pgina web (prctica recomendada), no tiene que cambiar de forma explcita la compresa a false.

Configuracin del cachMerengue utiliza el almacenamiento en cach de las siguientes optimizaciones: Memoria cach de las sentencias SQL, utilizando cach Johnny. Esta fantstica aplicacin que te ofrece el almacenamiento en cach transparente para todos los modelos de datos. Cuando un usuario actualiza cualquier contenido del modelo, la memoria cach para este modelo es invalidado de forma transparente. Bloquear el almacenamiento en cach. Todos los bloques se pueden almacenar en cach si se ha configurado en la interfaz administrativa. Vase el bloque de cach en la Gua del usuario para obtener ms informacin. Cach annimo para todo el sitio. Todo el sitio pueden almacenar en cach para los usuarios annimos. Vea el sitio de almacenamiento en cach para los usuarios annimos. Almacenamiento en cach de la plantilla, incluidos en Django 1.2. Ver cache de las plantillas.

La memoria local se utiliza, por defecto, para el almacenamiento en cach Merengue. Sin embargo, el problema surge cuando el backend de la memoria local se utiliza en entornos multi hilo con la configuracin:CACHES = { 'default': { 'BACKEND': 'johnny.backends.locmem.LocMemCache', 'KEY_PREFIX': SECRET_KEY, } }

En los entornos de multiproceso, esta configuracin puede provocar errores al azar donde las opiniones no se actualizan correctamente despus de la modificacin de contenido, ya que la accin de nulidad slo se producir en la memoria de un hilo y no en los otros hilos. La "solucin" para este

problema es cambiar el backend cach a algo as como memcached:CACHES = { 'default': { 'BACKEND': 'johnny.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', 'JOHNNY_CACHE': True, } }

Plantillas de Almacenamiento en CachDjango 1.3 permite el almacenamiento en cach de las plantillas compiladas (ver cargador django.template.loaders.cached.Loader). Esto podra acelerar enormemente de un sitio Merengue, porque los diseos de pgina se representan con muchas plantillas que muestran las partes especficas de cada pgina. Con el fin de activar el almacenamiento en cach de las plantillas, tendr que cambiar la configuracin de TEMPLATE_LOADERS en la configuracin del proyecto de la siguiente manera:TEMPLATE_LOADERS = ( ('django.template.loaders.cached.Loader', TEMPLATE_LOADERS), )

La variable TEMPLATE_LOADERS se define en el archivo de merengue / settings.py. En esencia, hemos envuelto los cargadores de plantillas Merengue con el cargador django.template.loaders.cached.Loader. Ver ms informacin sobre el almacenamiento en cach de plantilla en la optimizacin de una instalacin de Merengue.

Sitio de Almacenamiento en Cach para Usuarios AnnimosMerengue se aprovecha de las caractersticas del sitio integrado en el almacenamiento annimo en cach de Django. Puede activar esta funcin en la configuracin del proyecto:CACHE_SITE_FOR_ANONYMOUS = True

Esta configuracin se guardar en cach todas las peticiones de los usuarios annimos para que la vista que genera la plantilla de respuesta slo se ejecuta una vez. Tenga en cuenta que a diferencia de comportamiento por omisin de Django, todas las peticiones de Merengue cach, incluso si tienen parmetros GET.

La invalidacin de cachHay ciertas situaciones donde un administrador del sitio que desea invalidar el cach de una URL determinada. Por ejemplo, considere la noticia publicada con un error que debe corregirse de inmediato. Los usuarios annimos se mantendr en la lectura de la versin en cach hasta que expire (que generalmente toma un da entero). Es en el mejor inters de los administradores del sitio para forzar la anulacin de la versin en cach una vez que la noticia ha sido corregido. Cuando la cach est activo y un gestor se registra en un nuevo botn llamado cach invalida se aade a la barra de herramientas de Merengue. Al hacer clic en este botn, se invalida la cach de la pgina actual. Tenga en cuenta que la anulacin tiene efecto para todos los idiomas instalados en el sitio.

La cach de sesinPor las sesiones de merengue por defecto son ejecutados por Django. Sesiones de Django por defecto se almacenan en la base de datos del proyecto. Por lo tanto, todas las solicitudes se ejecutar al menos una expresin SQL para recuperar la sesin actual. Usted puede evitar esta actividad mediante el uso de SQL sesiones en cach (por ejemplo, en Memcached). Consulte la documentacin de Django sesiones en cach para ms informacin.

MERENGUE PLUGINS Informacin generalLos plugins de merengue son los componentes instalables que le permiten aadir nuevas funcionalidades de su sitio. Con plugins que se pueden aadir: Nuevos tipos de contenido. Los nuevos bloques. Las nuevas acciones de contenido especfico o todo el sitio. Los nuevos permisos. Nuevos puntos de vista (listados, vistas detalle el contenido, etc.) Aplicaciones Django vs Plugins Merengue Hay dos diferencias principales entre aplicaciones Django y plugins Merengue: Plugins merengue se puede instalar desde el sitio de administracin Merengue, sin necesidad de programacin. Aplicaciones de Django por lo general requieren (como mnimo) la edicin del archivo de configuracin, copia todos los archivos de medios a la ruta del archivo de Django medios de comunicacin, la edicin del espacio de nombres URL para aadir direcciones URL, etc Plugins merengue estn muy integrados con la aplicacin Merengue CMS debido a los conceptos especficos de la CMS y las convenciones utilizadas en el Merengue, incluidos los tacos, las acciones, viewlets, diseos de plantilla, etc Portable aplicaciones de Django estn normalmente diseados para un uso ms amplio con una variedad de Django basado en aplicaciones web.

Instalacin de plugins de tercerosSlo tres pasos son necesarios para instalar un nuevo plugin: 1. Coloque el plugin descomprime en el directorio de plugins (normalmente se encuentra dentro del proyecto de Merengue). 2. Registrar en el Merengue. Esto se puede hacer: Manualmente, si hace clic en el enlace de detectar nuevos plugins en el punto de vista de administracin de plugins. Automticamente, si se ha configurado la DETECT_BROKEN_PLUGINS establecer en True (por defecto), y si tiene acceso a la pgina de administracin de plugins. 3. Activarla desde la pgina plugins admin. Consulte la documentacin de los plugins en la gua del usuario Merengue

Archivos multimedia en Plugins((Para ser completado. Hable acerca de las convenciones adoptadas en los medios de comunicacin Merengue, ver merengue.views.static.serve y comando sync_plugins_media.))

Plugins rotosMerengue detecta plugins rotos en el directorio de plugins. Plugins rotos se muestran en la vista admin plugins:

Merengue detecta plugins rotos para evitar la "ruptura" del sistema (o sitio) cuando se instala un plugin de terceros. El punto de vista admin plugins no se permitir la instalacin de plugins rotos. Sin embargo, si usted tiene un plugin roto que est activado, recibir una excepcin - que su sitio est "roto". Los plugins pueden "romper" por las siguientes razones: Eliminado del sistema de archivos: en algn momento el plugin se encuentra en el sistema de archivos, y registrada por el merengue. Sin embargo, ms tarde, se ha eliminado. Problemas del modelo: modelos del plugin no completar la validacin. Error de sintaxis (s): El cdigo del plug-in tiene uno o ms errores de sintaxis. Merengue trat de registrar el plugin y una excepcin SyntaxError resucit por ellos. Para detectar plugins rotos, ejecute el comando mark_broken_plugins o DETECT_BROKEN_PLUGINS establecer la configuracin en True (por defecto) y visitar el punto de vista de administracin de plugins. Para depurar plugins rotos, lo que necesita para acceder a los plug-in roto de forma admin el cambio de edicin. En este punto de vista, el merengue se muestran las trazas de error:

Personalizacin del PluginAlgunos plugins tienen parmetros de personalizacin que aparecen en la vista admin plugin. Ver la

configuracin del registro tema params para ms detalles.

Plugin para el DesarrolloEscribir un complemento personalizado Para escribir un plugin haciendo que el merengue, es necesario crear una aplicacin Django que: Tienen una estructura de directorios especfica. Tener un archivo de configuracin. Ampliar algunos de los componentes. Ampliar algunos modelos base.

Plugin de rbolesTodos los plugins se colocan en el directorio de plugins ubicado en el directorio del proyecto. Un plugin Merengue tpico estructura de directorios:/plugins/ |-- fooplugin/ | |-- __init__.py | |-- actions.py | |-- blocks.py | |-- config.py | |-- models.py | |-- views.py | |-- viewlets.py | |-- urls.py | `-- templates/ | `-- fooplugin/ | `-- media/ | `-- fooplugin/ | ...

Note Only the __init__.py and config.py files are mandatory. Vamos a explicar parte del rbol de directorios mencionados anteriormente: __init__.py is a required file (usually empty) which designates the plugin

como un mdulo de python. models.py es una aplicacin normal de Django archivo del modelo. Consulte la documentacin de base de modelos para obtener ms informacin sobre los modelos de base de merengue que se puede extender en su propio plugin (s). config.py es el archivo de configuracin para el plugin. Ver la configuracin del plugin documentacin de referencia. blocks.py es un archivo de bloques de Merengue, que contiene el cdigo de los nuevos bloques, una orientacin visual se define en el plugin. actions.py es un archivo de acciones de Merengue.

views.py es normal Django archivo de vista. urls.py es un archivo normal de urls Django. Se puede utilizar para controlar un espacio de nombres URL (es decir, todos / fooplugin / .* urls). templates / fooplugin / es un directorio de recursos de plantilla fooplugin. media / fooplugin / es un directorio de recursos de los medios de comunicacin (por ejemplo, iconos, css, etc)

Plugin de configuracinUn plugin de la configuracin se define en la clase PluginConfig encuentra en el mdulo config.py dentro de su directorio de plugins. Esta clase es ledo por Merengue cuando el complemento se carga inicialmente Un fragmento de cdigo de un ejemplo config.py:from merengue.pluggable import Plugin class PluginConfig(Plugin): name = "Foo plugin" url_prefixes = ( ('fooplugin', 'plugins.fooplugin.urls'), ) def get_actions(self): return [...] def get_blocks(self): return [...] def section_models(self): return [...] # ... etcetera

Configuracin de parmetros de referenciaPlugin Metadatos El parmetro de nombre se utiliza para dar el complemento de un nombre (visible en el centro de control de Merengue plugin). Es un parmetro necesario y por lo general consta de una sola palabra (o dos). El parmetro de la descripcin aade informacin adicional para el plugin. Puede ser una frase completa, que describe el complemento, dndole as al administrador Merengue una idea del propsito del plugin y su funcionalidad. Finalmente, el parmetro de versin es una cadena con informacin sobre la versin del plugin. Este parmetro no es necesario, sin embargo, su uso es muy recomendable. Un ejemplo:

class PluginConfig(Plugin): name = "Foo" description = "Demo plugin to explain how to create Merengue plugins" version = "1.0.0"

Plugin URL. El parmetro url_prefixes contiene el prefijo de URL para todos los URLs plugin.class PluginConfig(Plugin): url_prefixes = ( ('fooplugin', 'plugins.fooplugin.urls'), ... )

En este ejemplo, si el complemento se activa, todas las URL fooplugin de abajo sern manejadas por el mdulo plugins.fooplugin.urls. Internamente, el sistema de plugins Merengue llevar a cabo una operacin como sta:urlpatterns += patterns('', (r'^fooplugin/', include('plugins.fooplugin.urls')), )

Tambin se puede internacionalizar tu plugin URL. Vea este ejemplo:class PluginConfig(Plugin): # ... stuff url_prefixes = ( ({'en': 'event', 'es': 'eventos'}, 'plugins.event.urls'), )

El prefijo URL final a utilizar depender de la configuracin URL_DEFAULT_LANG (por defecto se establecer el mismo que LANGUAGE_CODE). Nota Su sitio tendr un nico prefijo para todos los prefijos de URL que ha internazionalized. Por lo tanto, si su URL_DEFAULT_LANG es "es", slo / eventos sern tratados por el plugin y / evento se genera un error 404.

Posibilidades PluginUn desarrollador puede hacer muchas cosas en el desarrollo de un nuevo plugin: Definir nuevos bloques: Implementar el get_blocks (self) mtodo de la clase PluginConfig. Vea la referencia de los bloques para ms informacin. Un ejemplo:from plugins.fooplugin.blocks import FooBlock class PluginConfig(Plugin): # stuff ... def get_blocks(self): return [FooBlock, ]

Definir nuevas acciones: Implementar el get_actions (self) mtodo de la clase PluginConfig. Vea la referencia de las acciones para obtener ms informacin. Un ejemplofrom plugins.fooplugin.actions import FooAction class PluginConfig(Plugin): # stuff ... def get_actions(self): return [FooAction, ]

Crear nuevos modelos: Implementar nuevos modelos en el archivo de models.py plugin. Un ejemplofrom merengue.base.models import BaseContent class FooContent(BaseContent): new_field = models.CharField(max_length=100) # stuff ...

Definir un sitio de administracin del plugin personalizado: Implementar el get_model_admins (self) mtodo de la clase PluginConfig. Un ejemplofrom plugins.fooplugin.admin import FooContentAdmin, FooCategoryAdmin from plugins.fooplugin.models import FooContent, FooCategory class PluginConfig(Plugin): # stuff ... def get_model_admins(self): return [(FooContent, FooContentAdmin), (FooCategory, FooCategoryAdmin)]

Definir nuevos permisos: Implementar el get_perms (self) mtodo de la clase PluginConfig. Vea la referencia de los permisos para ms informacin. Un ejemplo:from plugins.forum.models import FooContent class PluginConfig(Plugin): # stuff ... def get_perms(self): return [('Vote foo', 'vote_foo', [FooContent]), ), ]

Definir nuevas vistas permite: Implementar el get_viewlets (self) mtodo de la clase PluginConfig. Ver la referencia viewlets para ms informacin. Un ejemplo:

from plugins.fooplugin.viewlets import FooViewlet1, FooViewlet2 class PluginConfig(Plugin): # stuff ... def get_viewlets(self): return [FooViewlet1, FooViewlet2]

Definir nuevos middleware: Implementar el get_middlewares (self) mtodo de la clase PluginConfig. Vea la referencia de middleware de Django para ms informacin. Un ejemplo:class PluginConfig(Plugin): # stuff ... def get_middlewares(self): return ['plugins.fooplugin.middleware.FooMiddleware', ]

Ejecutar cdigo despus de la activacin plugin: Aplicacin de la hook_post_register (auto) mtodo de la clase PluginConfig. Un ejemplo:from django.core.mail import send_mail class PluginConfig(Plugin): # stuff ... def hook_post_register(self): send_mail('Foo plugin enabled', 'The foo plugin has been enabled.', '[email protected]', '[email protected]', fail_silently=True)

Ejemplos PluginEcha un vistazo al directorio de plugins para ver Merengue varias implementaciones plugin (por ejemplo, el plugin de noticias).

Dependencias Plugin en un Proyecto.A veces, su proyecto depende de un plugin (o mltiples plugins) que se activa por defecto y desea evitar que el usuario (o ellos) desactiven. Por ejemplo, la lgica de su proyecto pueden confiar en la existencia de ciertos modelos que se define en un plugin especfico. Usted puede definir qu plugins de su proyecto depende de la inclusin de la siguiente configuracin de su proyecto:REQUIRED_PLUGINS = ('core', 'fooplugin', )

Default: ('core', ) (the core plugin) Sobre la base de plugin: El plug-in de base debe ser incluido en el REQUIRED_PLUGINS escenario de todas las

caractersticas estndar de Merengue de estar presente en su sitio. Despus de cambiar la REQUIRED_PLUGINS, tendr que registrar el plugin con el siguiente comando para obtener nuevos plugins activados (y tambin para sus modelos creados si es que existe):python manage.py migrate

Las migraciones hacia el sur en PluginsSi los modelos de su plugin de cambio, y desea una migracin modelo limpio para su sitio(s), usted puede necesitar para poner en prctica las migraciones del Sur de la misma. Con el fin de crear las migraciones del Sur, usted tiene que usar los comandos schemamigration y datamigration (ver la documentacin del Sur para obtener ms informacin). Slo tiene que acordarse de aadir temporalmente el nombre del plugin para el ajuste de INSTALLED_APPS antes de ejecutar thesecommands, porque el sur no es capaz de encontrar plugins Merengue por su propia cuenta. Cuando un plugin con una configuracin de la migracin del Sur se ha instalado, el merengue se ejecutar automticamente las migraciones Sur del plugin. Para ejecutar una ya existente (es decir, instalado) plugin basado en la migracin del Sur, debe desinstalar y volver a instalar el plug-in usando el sitio de administracin de Merengue. Adems, puede utilizar el comando migrate_plugins muy til que se desplaza todos los instalados, los plugins habilitados en su sitio. Las lneas siguientes muestran cmo utilizar el comando migrateplugins:$ python manage.py $ python manage.py plugins $ python manage.py $ python manage.py forum plugin $ python manage.py for forum plugin migrate_plugins # migrate all enabled plugins migrate_plugins --list # show migration list of enabled migrate_plugins forum # migrate only forum plugin, if enabled migrate_plugins forum 0002 # migrate only 0002* step for migrate_plugins forum 0001_initial # fakes 0001_initial step

Trabajar con temasInformacin general Merengue apoya el uso de los temas que le permiten crear un "look & feel" completamente diferente de su sitio. Ya que la lgica de su sitio web est separada de su presentacin (es decir, su tema), todas las funciones de Merengue se mantiene a partir de un tema a otro. rbol de directorios Los temas se componen de plantillas (HTML, TXT, etc) y los archivos multimedia (imgenes, CSS, Javascript, etc). Built-in del merengue temas se distribuyen junto con el Merengue, y ubicado dentro del directorio de temas. Temas de un proyecto se dividen en dos directorios: los medios de comunicacin / themes / y / themes /. Por ejemplo, un tema llamado violeta se encuentra en:

merengue_project/templates/themes/violet/ merengue_project/media/themes/violet/

La ruta del directorio primero contiene todos los archivos de plantillas de Django para: Cambiar el diseo del sitio. Cualquier cdigo HTML cambios. El directorio de los medios de comunicacin cuenta con todos los recursos estticos necesarios para las plantillas de tema, como por ejemplo el cdigo CSS y archivos de imagen o Javascript. Plantilla mecanismo sobre el tema Nota Por favor revise la documentacin del lenguaje Django plantilla para obtener ms informacin acerca de la sintaxis de las plantillas de Django. Imagnate un plugin de eventos que muestra todos los eventos publicados en un sitio. Vamos a usar la plantilla siguiente como ejemplo, que podran ser incluidos en el directorio de un plugin de plantillas:{% extends "base.html" %} {% block content %}

  • {% for event in event_list %}
  • {{ event.name }}

{% endfor %} {% endblock %}

Esta plantilla se extiende desde una plantilla base para la representacin de diseo. Por defecto, Django buscar base.html en estos directorios: En primer lugar, comprueba los directorios del proyecto de plantilla (por ejemplo, merengueproj / templates /). En segundo lugar, Django comprueba el directorio de la aplicacin instalada la plantilla (por ejemplo, merengueproj / apps / foo / templates /).

Merengue reemplaza este comportamiento, en primer lugar comprobar el directorio del tema activo de la plantilla Cuando el cdigo intenta cargar una plantilla (por ejemplo, en una llamada render_to_response o en una etiqueta se extiende o se incluyen) la orden de bsqueda de esa plantilla ser la siguiente: 1. El tema activo del directorio de plantillas. 2. El proyecto de directorios de plantillas. 3. La aplicacin de plantillas de directorio. Por lo tanto, para nuestro ejemplo el tema violeta, si se configura el violeta como el tema activo, y la plantilla de ejemplo se represente, el merengue buscar un archivo base.html por primera vez en este directorio:

merengueproj/templates/themes/violet/

As, mediante la colocacin de un archivo en la plantilla de su tema en el directorio base.html, su diseo de pgina va a cambiar, sin embargo, la funcionalidad plug-in de eventos seguir siendo el mismo. Anulacin de diseo de plantilla Diseo HTML en Merengue est diseado para ser lo ms flexible y extensible como sea posible. Para conseguir una estrecha integracin con temas de merengue y plugins, los siguientes convenios a continuacin deben ser respetados: 1. Todos los plugins y plantillas de Merengue, ampliar la plantilla base.html (que se encuentra en el tema - si est configurado como el tema que est activo en su sitio). 2. Por lo general el tema base.html ser ampliar la base / template layout.html, ubicado en merengueproj / apps / base / templates /. Esta es la plantilla principal merengue para la definicin de diseo de pgina y la ubicacin de todos los bloques de funciones. 3. base / layout.html se dividir la pgina en pequeos fragmentos, incluido en la etiqueta de plantilla incluyen. Todos los fragmentos son archivos de plantilla llamada inc.foofragment.html. Si pones un archivo de plantilla fragmento con el mismo nombre en su directorio de temas, Merengue va a usar a la prestacin de ese pedazo de la pgina. He aqu un ejemplo. En primer lugar, podemos encontrar un fragmento de base / layout.html, ubicado en merengueproj / apps / base / templates / (se puede ver el diseo de la plantilla total): ... {% block pagetitle %}{% endblock %} {% block sitetitle %}Merengue powered site{% endblock %} {% block cssstyles %} {% include "inc.cssstyles.html" %} {% block extrastyles %}{% endblock %} {% endblock %} ...

Como puedes ver, esta plantilla de diseo de base contiene varios bloques que se pueden reemplazar en la plantilla base.html de su tema. Adems, algunos bloques incluyen otras plantillas que sirve para hacer un fragmento de pgina. Por ejemplo, la base / layout.html incluye inc.cssstyles.html para hacer que los ficheros CSS. Por lo tanto, si se coloca un inc.csstyles.html en el directorio de la plantilla de su tema, el merengue se encuentra su plantilla (suponiendo que el violeta''tema''se activa). Entonces, por ejemplo, si usted desea utilizar su propio archivo CSS, en lugar de la opcin por defecto, puede utilizar una de dos opciones: 1. Sin hacer caso omiso base.html, un lugar en el directorio de plantillas inc.cssstyles.html de su tema.

2. Reemplazar el archivo base.html y cambiar el bloque de CSS, de esta manera:{% extends "base/layout.html" %} {% block cssstyles %} {{ block.super }} {# if you want to load default css file #} {% endblock %}

Nota THEME_MEDIA_URL es una variable de contexto disponible en todas las plantillas que cree. Esta variable se utiliza para vincular a los recursos de los medios de comunicacin, puesto en el directorio de su tema de los medios de comunicacin (que, en este caso, se merengueproj / media / themes / violeta /). Si coloca un archivo violet.css en ese directorio, el cdigo CSS se cargar automticamente. Como ilustra el siguiente esquema, las plantillas utilizan principalmente en el desarrollo del tema se encuentran en los siguientes lugares:merengueproj/ |-- templates/ | |-- themes/ | | |-- violet/ | | | |-- base.html # The main template, used for page layout rendering in Merengue (and in all plugins when your theme is active). | | | `-- inc.cssstyles.html # An example page fragment which overrides the default Merengue file. |-- merengue/ | |-- base/ | | |-- templates/ | | | |-- base/ | | | | |-- layout.html # The default Merengue page layout. Usually, your theme's base.html will extend this file. | | | | `-- ... | | | |-- inc.cssstyles.html # In our ``violet`` theme example, this page fragment will never be used because it is overridden by the ``violet`` theme. | | | |-- inc.footer.html # This page fragment will be used because the ``violet`` theme does not override it. | | | |-- base.html # The default base.html to be used when no theme is active. Only extends base/layout.html without overriding. | | | `-- ... | | `-- ... | `-- ... |-- media/ | |-- themes/ | | |-- violet/ | | | |-- violet.css | | | `-- ... | | `-- ... | `-- ... `-- ...

Sustitucin de un Plugin CSS. Algunos plugins vienen con sus propios archivos CSS y Javascript incrustado en fragmentos de cdigo HTML situado en bloques, acciones, etc

Por ejemplo, el plugin aade una retroalimentacin (feedback) styles.css en un bloque despus de la vista del contenido de este fragmento en el interior:#feedback #firstcomment .commentinfo { font-size: 8pt; padding: 5px; color: gray; }

Si desea anular CSS del plugin, y se agrega una retroalimentacin (#feedback # firstcomment .commentinfo) Selector en el tema del archivo CSS, el navegador utilizar el cdigo del plugin CSS y hacer caso omiso de su CSS porque el archivo del plug-in CSS se encuentra despus del tema de archivo CSS en el orden de bsqueda por defecto del tema. Para resolver este problema, agregue este fragmento de CSS en el archivo CSS:.theme-violet #feedback #firstcomment .commentinfo { font-size: 8pt; padding: 5px; color: gray; }

Esto funciona porque en el archivo de base / layout.html aadimos una clase CSS para el #container.div con el tema activo. Paso a paso para la Creacin de un tema. Por favor, lea el tutorial Merengue para aprender a crear un tema desde cero Internos Merengue antepone el gestor de plantilla merengue.theming.loader.load_template_source para cambiar el orden por defecto Django de bsqueda para localizar las plantillas. Este cargador de plantilla se ve en la base de datos del proyecto para encontrar el tema activo. Entonces la bsqueda de la primera plantilla en las plantillas / themes / the-active-theme y: Si la plantilla se encuentra, se le devolver. De lo contrario, va a delegar el tema de carga de los cargadores de la plantilla habitual de Django.

El gestor de la plantilla merengue afecta a todos y se extiende a incluir las etiquetas, y todas las llamadas render_to_response, render_to_string y loader.get_template.

Trabajando con PermisosInformacin General. Permiso de merengue se basan fuertemente en maravillosa django-permissions de la aplicacin. El cambio ms importante (pero importante) no est usando GenericForeignKey para conceder permisos a los objetos. Nosotros preferimos utilizar un ForeignKey a BaseContent por razones de rendimiento. Adems, en el merengue todo el contenido se logr casos BaseContent. Qu es un permiso?

Los permisos se conceden a los papeles (y slo a los papeles) con el fin de permitir que algo que los usuarios o grupos que tienen estos papeles. Qu es un papel? Las funciones se utilizan para conceder permisos. Roles tpicos son Reader, Director o Editor. Qu es una funcin local? Papeles locales son los roles que se asignan a los usuarios y grupos de objetos para un contenido especfico Los usuarios Grupos Grupos de usuarios se combina juntos. Los grupos pueden tener roles (estos son considerados como global). Los grupos pueden tener roles locales, es decir las funciones de un objeto especfico. Grupos tiene todos los permisos de sus funciones - los globales y locales. Los usuarios de un grupo tienen un papel del grupo y los permisos. Los usuarios son los actores que pueden necesitar un permiso para hacer algo dentro del sistema. Los usuarios pueden ser miembros de varios grupos. El usuario puede tener varias funciones, directamente a travs de una membresa a un grupo (estos son considerados como global). El usuario puede tener roles locales, directamente a travs de una membresa a un grupo. Que es funcin de un objeto especfico. Los usuarios tienen todos los papeles de sus grupos - los globales y locales. Los usuarios tienen todos los permisos de sus funciones - los globales y locales

Permisos incorporados en merengue. Un permiso incorporado se aparece en la vista el permiso de administrar todos los contenidos. Los permisos incorporado en el merengue son los siguientes: Vista (view) Un contenido no publicados sern visibles por el anonimato si este permiso es activado para este contenido. Edicin (edit) Si un usuario es miembro de una funcin con este permiso o de un contenido que se ha activado el permiso para que un rol de usuario, el usuario puede editar el contenido. Borrar (delete) Si el usuario tiene este permiso en un contenido, el usuario ser capaz de eliminarlo. Puede establecer como proyecto (can_draft) Si el usuario tiene este permiso en un contenido, el usuario puede cambiar el estado del contenido en el proyecto. Puede establecer como pendiente (can_pending) Si el usuario tiene este permiso en un contenido, el usuario puede cambiar el estado del contenido de

la espera. Puede establecer que se publica (can_published) Si el usuario tiene este permiso en un contenido, el usuario puede cambiar el estado del contenido publicado. Permisos Globales en merengue. Gestionar la seccin (manage_section) Si el usuario tiene este permiso, el usuario podr editar, borrar y aadir secciones. Vnculo Administrar portal (manage_link) Si el usuario tiene este permiso, el usuario podr editar, borrar y aadir enlaces portal. Administrar men del portal (manage_menu) Si el usuario tiene este permiso, el usuario podr editar, borrar y aadir mens del portal. Gestionar multimedia (manage_multimedia) Si el usuario tiene este permiso, el usuario ser capaz de editar, eliminar y agregar contenido multimedia. Gestionar el contenido plugin (manage_plugin_content) Si el usuario tiene este permiso, el usuario ser capaz de gestionar todo el contenido de los plugins instalados. Gestionar categora (manage_category) Si el usuario tiene este permiso, el usuario podr editar, borrar y aadir categoras. Gestionar bloque (manage_block) Si el usuario tiene este permiso, el usuario ser capaz de mover o aadir bloques en las vistas pblicas. Gestiona el portal (manage_site) Si el usuario tiene este permiso, el usuario es igual que el webmaster, y ser capaz de administrar los plugins, temas, los envos certificados y guardar / restaurar la configuracin. Administrar cuentas de usuario (manage_user) Si el usuario tiene este permiso, el usuario ser capaz de gestionar grupos, usuarios, roles y permisos.

Interfaz de Administracin (Admin)Puede acceder a la configuracin de permisos de grupos haciendo clic en usuarios, roles y permisos en la pgina de administracin principal en el portlet "Gestin de usuarios". Creacin de un papel y la funcin de asignacin de usuario. Para crear una funcin, primero debe hacer clic en "Funciones" en la pgina de administracin principal o ir a la url http://localhost:8000/admin/perms/role/, entonces haga clic en "Agregar". Llenar el formulario con un nombre y la marca de los permisos para este papel.

Por ltimo, hay que ir una pgina de administracin de usuarios haciendo clic en "Usuarios" en la pgina de administracin principal o ir a la url http://localhost:8000/admin/auth/user/, elija un usuario, agregar papel previamente creado y guarde el formulario .

Asignar el papel de grupo. Este paso es igual al anterior, excepto que el usuario se le asigna en la vista del grupo de administracin. Usted debe ir una pgina de administracin de grupos haciendo clic en "Grupos" en la pgina de administracin principal o ir a la url http://localhost:8000/admin/auth/group/, elegir un grupo, agregar papel previamente creado y guarde el formulario.

La concesin de un permiso de todos los contenidos Para garantizar un permiso a todos los contenidos, debe asignar un permiso a un papel. Por ejemplo, si desea dar permiso para editar todo el contenido de "editor" de funciones, debe ser asignar el "Editar" en la pgina de permisos funcin de administrador.

La concesin de un permiso para un contenido Para ver los permisos en un contenido, tienes que ir a la pgina de contenido de administracin y haga clic en el botn "Permisos". Tenga en cuenta este botn slo se muestra si el tipo de contenido es contenido de la base. El permiso contenido de la pgina de administracin aparece una tabla con los permisos y roles disponibles. La mejor manera de cambiar el permiso de un objeto es cambiar los permisos para el contenido acadmico del estado, en el sistema de flujo de trabajo (ver los permisos y flujos de trabajo), ya que si el estado cambia de contenido, los permisos se definen de esta forma se borran y se pone a la permisos definidos para el nuevo estado.

Papeles Locales Para crear una funcin local de un contenido, tienes que ir a la pgina de contenido de administracin y haga clic en el botn "Permisos". Con la forma mostrada en la imagen, se puede asignar una funcin local de un usuario o un grupo de contenido actual. Por ejemplo, si desea que un usuario o un grupo tiene "editor" nico papel de "bienvenida" de la pgina. Slo tienes que rellenar el usuario o grupo y el papel de los campos y haga clic en el botn "Crear". El usuario y el grupo de campos se auto completar.

Cuando haya creado los papeles locales, puede modificar la asignacin de nuevas funciones.

Gestionar todos los permisos. Hay un punto de vista de administracin para editar todos los permisos incorporado y global para cada funcin. Para acceder a esta vista, usted tiene que hacer clic en "Permisos" en la pgina de administracin principal o ir a la url http://localhost:8000/admin/perms/objectpermission/

Permiso de herencia Permisos de Merengue se puede heredar si el ajuste ACQUIRE_SECTION_ROLES se define como verdadera. Si es as, cada usuario que est accediendo a un objeto adquiere los papeles de la seccin de contenido. Por lo tanto, si se establece la funcin de revisor local a un usuario en una seccin, ser tambin revisor de todos los contenidos de la seccin (noticias, documentos, eventos, etc.) Por supuesto que va a adquirir tambin todos los permisos de la funcin de revisor. Permisos y flujos de trabajo (workflow) Por lo general, los permisos en el contenido se define por su flujo de trabajo. Por lo tanto, un contenido en el estado de proyecto con el flujo de trabajo de flujo de trabajo bsico se dispone de los permisos definidos en el proyecto de estatuto dentro de la vista de administracin de flujo de trabajo. Este es un hecho importante porque hay que pensar en el flujo de trabajo y los estados y no pensar en el contenido mismo. As que si por ejemplo usted quiere cambiar el permiso contenido sea visible slo para la funcin de revisor, la mejor tarea que hacer es crear un nuevo visible por el estado crtico, definir el permiso para que esta situacin y crear las transiciones para asegurarse de que puede pasar el contenido de esta transicin. Por lo tanto, haciendo que usted ganar de que si tienen la misma necesidad de otro contenido, slo tienes que poner el contenido en este estado.

Utilizando el API de PythonLa creacin de un permiso personalizado>>> from merengue.perms.utils import register_permission >>> register_permission('Vote', 'vote')

>>> from merengue.perms.utils import register_permission >>> register_permission('Vote', 'vote')

Puede crear un permiso personalizado disponible slo para algunos modelos (heredado de BaseContent):>>> from merengue.section.models import Document >>> from plugins.news.models import NewsItem >>> register_permission('My permission', 'myperm', for_models=[Document, NewsItem])

Creacin de un papel y la funcin de la asignacin de usuario.>>> >>> >>> >>> >>> staff_user = User.objects.create(username='roque') plain_user = User.objects.create(username='other') from merengue.perms.utils import register_role editor = register_role('Editor') editor.add_principal(staff_user) # add user to role 'Editor'

La concesin de un permiso para un contenido>>> >>> >>> >>> from merengue.base.models import BaseContent content = BaseContent.objects.create(slug='mycontent', name_en='My content') from merengue.perms.utils import grant_permission grant_permission(editor, 'vote', content)

La concesin de un permiso de todos los contenidos>>> grant_permission(editor, 'vote')

Comprobacin de los permisos>>> from merengue.perms.utils import has_permission >>> has_permission(content, staff_user, 'vote') True

Eliminacin de un permiso para un contenido>>> from merengue.perms.utils import remove_permission >>> remove_permission(editor, 'vote', content)

Eliminacin de un permiso de todos los contenidos>>> remove_permission(editor, 'vote')

Papeles Locales. Puede asignar una funcin a un usuario o un grupo, globalmente (para todos los contenidos) o localmente (con un contenido).>>> othercontent = BaseContent.objects.create(slug='othercontent', name_en='Other content') >>> grant_permission(editor, 'vote', othercontent) # like "content" >>> from merengue.perms.utils import add_local_role >>> add_local_role(othercontent, plain_user, editor) # plain_user will be editor only in othercontent

>>> has_permission(content, plain_user, 'vote') False >>> has_permission(othercontent, plain_user, 'vote') True # because is local editor for that content >>> has_permission(othercontent, staff_user, 'vote') True # because is a global editor (for all contents)

Permisos en los pluginsPuede crear permisos para la definicin de la funcin del plugin get_perms funcin en el archivo config.py. Estos permisos pueden ser globales o relacionados con los modelos y tipos de contenido. Para definir permisos especficos, por ejemplo, para editar las noticias:from merengue.pluggable import Plugin from plugins.news.models import NewsItem class PluginConfig(Plugin): def get_perms(self): return ( ('edit_newsitem', _('Edit news items'), [NewsItem, ]),)

Para definir los permisos globales a votar este contenido:from merengue.pluggable import Plugin class PluginConfig(Plugin): def get_perms(self): return ( ('vote', _('Vote content')),)

Registros Merengue. Introduccin.En cualquier navegador moderno cms por lo general tienen varios componentes que sern registradas y / o configurada en cada sitio instalado. Este registro y los parmetros de configuracin se define por el superusuario en la interfaz de administracin merengue. Todos se almacenan en la base de datos. Ejemplo del uso de los casos: El registro de plugins, con opciones del plugin (plugin de ver el desarrollo de documentos). El registro de las acciones con los parmetros de configuracin (consulte la documentacin de las acciones). Almacenando las preferencias del usuario. Configuracin del tema (colores bsicos, etc.).

Uso del Registro.Ejemplo de Caso de Uso. Caso de uso es el siguiente: imagine que quiere implementar un sistema de plugins de registrarse, con plugins configurados por los desarrolladores. Este es el mdulo conectable Merengue actual.

La definicin de un componente registrable y configurable. El primer paso es la definicin de un componente registrable. Esta es una clase Python que debe hereda de la clase merengue.registry.items.RegistrableItem:from merengue.registry.items import RegistrableItem class Plugin(RegistrableItem): @classmethod def get_category(cls): return 'plugin'

El mtodo get_category se necesita, y decir a Merengue qu tipo de objetos que se registrar. Con este ejemplo, se ha creado una clase base para todos los plugins. Un desarrollador de plugin puede declarar su plugin con este fragmento:from merengue.pluggable import Plugin class PluginConfig(Plugin): name = 'fooplugin'

Esto es todo lo que necesita para implementar un componente registrable. Ahora vamos a considerar que han puesto en marcha todo el sistema de acoplamiento activo. Ahora vamos a aprender a utilizar el registro para registrar y anular el registro de los objetos. Para la prueba de fragmento de cdigo anterior, cree un directorio en el directorio de plugins fooplugin, con un archivo __init__.py en su interior y un archivo config.py. En el ltimo fragmento de cdigo de archivos, copiar y pegar anterior. Cmo puedo hacer el registro de plugin? Con estas frases:>>> from merengue.registry import register, is_registered, have_registered_items >>> from plugins.fooplugin.config import PluginConfig >>> have_registered_items(PluginConfig) False >>> reg_item = register(PluginConfig) >>> have_registered_items(PluginConfig) True >>> item = reg_item.get_registry_item() >>> is_registered(item) True

Plugin de auto registro Nota de la primera llamada True, se devuelve is_registered, esto se debe a Merengue tiene plugin de auto registro activado y que ha accedido para ver plugins admin. Esta pena se registrar plugins por defecto en un modelo RegisteredItem en la base de datos. La definicin del modelo RegisteredItem est en el mdulo merengue.registry.models. Nota No confundir RegisteredItem con RegistrableItem. Este ltimo no es un modelo de Django, pero un

objeto registrable. El primero es un modelo que almacenar todos los RegistrableItem se han registrado con funcin merengue.registry.register. Puede acceder al objeto registrado con estas frases:>>> from merengue.registry.models import RegisteredItem >>> RegisteredItem.objects.all().values() [{'class_name': u'PluginConfig', 'category': u'plugin', 'config': u'', 'id': 5, 'module': u'plugins.fooplugin.config'}] >>> RegisteredItem.objects.by_item_class(PluginConfig) []

Configuracin de los componentes registrables Echemos un vistazo a este ejemplofrom django.utils.translation import ugettext_lazy as _ from merengue.pluggable import Plugin from merengue.registry import params class PluginConfig(Plugin): name = 'fooplugin' config_params = [ params.Single(name='username', label=_('username'), default='pepe'), params.List(name='friends', label=_('friends'), default=['antonio', 'juan'], choices=[('antonio', 'Antonio'), ('paco', 'Paco'), ('rosa', 'Rosa'), ('juan', 'Juan')]), params.Single(name='season', label=_('season'), choices=[('spring', _('Spring')), ('summer', _('Summer')), ('autumn', _('Autumn')), ('winter', _('Winter'))]), ]

Automticamente, con esta configuracin, se puede acceder a envo certificado en administracin y van a ver y configurar todos los parmetros de este componente:

Si desarrollador plugins desea acceder a esta configuracin (recuerde que la configuracin se personaliza en el admin, no la config_params por defecto para plug-in), que utilizara estas frases:>>> from merengue.registry import get_item >>> plugin = get_item('plugins.fooplugin.config.PluginConfig') >>> config = plugin.get_config() >>> print config['friends'].get_value() ['paco', 'juan'] >>> print config['friends'].choices [('antonio', 'Antonio'), ('paco', 'Paco'), ('rosa', 'Rosa'), ('juan', 'Juan')] >>> print config['friends'].default ['antonio', 'juan'] >>> config['friends'].get_type() 'List'

Si se registra un item registrable, tambin guardar esta configuracin en la base de datos. Vea este ejemplo:class PersonItem(RegistrableItem): config_params = [ params.Bool(name='is_human', default=True), params.Integer(name='age'), params.List(name='friends', choices=('Juan', 'Luis', 'Pepe')) ]

Y ahora un ejemplo para el uso>>> reg_item = register(PersonItem) >>> item = reg_item.get_registry_item() >>> item.get_config() {'is_human': , 'age': , 'friends': } >>> reg_item.config {u'is_human': True} >>> reg_item.config['age'] = 30 >>> reg_item.save() >>> item.get_config()

{'is_human': , 'age': , 'friends': }

Los artculos que no activa por defecto Puede definir un envo certificado no est activado por defecto:class PersonItem(RegistrableItem): active_by_default = False

Cuando se registre un elemento con el atributo active_by_default en False se incluirn en la base de datos, pero no afectar en la pgina web hasta el gestor de activos en la interfaz de administracin (admin). Items Singleton A veces es necesario definir un lmite a registrar slo un punto por cada clase de elemento. Esto se llama un producto nico. En un plugin Merengue, sus acciones, paneles y viewlets son nicos, pero no bloquea (porque se puede aadir dos bloques del mismo en su web). Para definir un producto nico que tienes que aadir un singleton = true en la definicin de clase registrable. Vea este ejemplo explicativo:class NonSingletonItem(RegistrableItem): pass class SingletonItem(RegistrableItem): singleton = True

Ver lo que pasar si no hago un registro de tareas: Ver lo que pasar si no hago un registro de tareas:>>> register(NonSingletonItem) >>> register(NonSingletonItem) >>> register(SingletonItem) >>> register(SingletonItem) ... AlreadyRegistered: item class "" is already registered >>> from merengue.registry import get_items, get_item >>> get_item(SingletonItem) >>> list(get_items(NonSingletonItem)) [, ] >>> get_item(NonSingletonItem) ... MultipleObjectsReturned: get() returned more than one RegisteredItem -- it returned 2! Lookup parameters were {}

Trabajando con accionesQue es una accin? Una accin es una tarea que el usuario puede ver con el sitio del portal, o con algn contenido. Ejemplos: Exportacin a PDF de un contenido. Enviar ver URL real a alguien. adir URL real de Facebook. Categoras de la Acciones Las acciones se suelen colocar en lugares diferentes en un diseo de sitio. Las categoras disponibles son: Acciones del sitio: acciones habilitadas en todos los portales. Acciones de contenido: acciones habilitadas en una pgina de vista de contenido. Las acciones del usuario: por lo general las herramientas de usuario, slo para usuarios registrados.

Acciones de representacin Esta sera una representacin de ejemplo:...

  • {% get_actions "site" as site_actions %} {% for action in site_actions %}
  • {% trans action.verbose_name %}

{% endfor %} ...

  • {% get_actions "content" for content as content_actions %} {% for action in content_actions %}
  • {% trans action.verbose_name %}

{% endfor %} ...

  • {% get_actions "user" as user_actions %} {% for action in user_actions %}
  • {% trans action.verbose_name %}

{% endfor %}

...

  • {% for user in all_users %} {% get_actions "user" for user as user_actions %} {% for action in user_actions %}
  • {% trans action.verbose_name %}

{% endfor %} {% endfor %}

Acciones de Direcciones URL. Por defecto, todas las acciones se dirigen a despachador action.urls, para realizar una accin. La URL es: de todas las acciones del sitio: / acciones / site / $ action_name / de todas las acciones de contenido / acciones / content / $ content_type_id / $ content_id / $ action_name / para todos los nuevos usuarios / acciones / user / $ username / $ action_name /

Todo esto se llama URL de vistas definidas en actions.views. Estos puntos de vista se llama el mtodo para llevar a cabo en el distribuidor de la accin, que es una definicin de clase para esta accin. Vase el punto siguiente para ms informacin.

Programacin de las accionesDefinicin las medidas adoptadas Accin realizan por lo general se presenta en algunos puntos de vista plugin. Por esta razn, una accin por lo general le redireccionar a un punto de vista, con los parmetros correctos. Este fragmento podra ser un ejemplo para las definiciones de la accin: Nota Por qu no realizar la accin en la clase de accin propia definicin? Debido a que menos de acoplamiento principio: usted puede tener algunos puntos de vista de servicios pblicos que hacen algn tipo de proceso (tal vez en otras aplicaciones) ... Esto es independiente de las acciones de los enlaces. Piense en una vista de tercera aplicacin reutilizables como esto: Si usted encuentra un punto de vista como el anterior, se puede utilizar como de costumbre. Acciones de registro y configuracin Acciones de registro y ajustes de configuracin se implementan mediante la aplicacin de registro (ms informacin en la documentacin de registro). Vea este ejemplo:from django.conf import settings from django.utils.translation import ugettext as _ from registry import params

class PDFExport(ContentAction): # ... more stuff config_params = [ params.Single(_('HTML to PDF binary'), default='/usr/bin/pdftotext'), ] class SendPage(SiteAction): # ... more stuff config_params = [ params.Single(name='from_email', verbose_name=_('From email address'), default=settings.DEFAULT_FROM_EMAIL), params.List(name='cc_emails', verbose_name=_('CC email addresses')) ]

Estos parmetros de configuracin se pueden personalizar en la interfaz de administracin merengue. Para acceder a la configuracin dentro de una aplicacin, puedes hacer lo siguiente:>>> from merengue.registry import get_item >>> plugins.myplugin.actions import SendPage >>> sendpage_action = get_item(SendPage) >>> sendpage_action.get_config()['cc_emails'].get_value() ['[email protected]',] >>> sendpage_action.get_config()['cc_emails'].label 'CC email addresses'

Entonces, usted puede tener una accin disociada de una visin reutilizables con este cdigo:class SendPage(SiteAction): # ... more stuff def get_url(self, request): return HttpResponseRedirect( reverse("sendpage", args=[request.get_full_path()], kwargs={'from_email': self.get_config() ['from_email'].get_value(), 'cc_emails': self.get_config() ['cc_emails'].get_value(),}), )

O dentro de la vista:from merengue.registry import get_item from plugins.myplugin.actions import SendPage def sendpage(request, request_path): sendpage_action = get_item(SendPage) from_email = sendpage_action.get_config()['from_email'].get_value() # ... do stuff

Otra manera es usando la funcin actions.get_action:from merengue.action import get_action def sendpage(request, path_to_send): reg_action = get_action('sendpage')

from_email = reg_action.config['from_email'] cc_emails = reg_action.config['cc_emails'] # do your staff ...

Partidas en MerengueLos accesorios son la mejor manera de proporcionar los datos iniciales a un sitio, o guardar los datos despus de rellenar su base de datos. Nota Ver partidos en Django para ms informacin.

Accesorios de sitioDjango carga por defecto todos los archivos initial_data.* accesorios colocados en todos los accesorios de aplicacin lo encontramos. Adems, el merengue tiene una forma de definir partidos explcito archivo a cargar, con el ajuste SITE_FIXTURES, como este ejemplo:SITE_FIXTURES = { 'section': ('initial_content.xml', ), 'fooapp': ('fooapp_content.xml', ), }

El formato de este dict es "application_name: (' fixture1.format ',' fixture2.format '). La carga de datos en su nuevo sitio se hace cada vez que ejecute python manage.py migrar de comandos. El comando migrate (implementado en la aplicacin del Sur) migrarn todas las aplicaciones instaladas y el merengue se carga todos los partidos que se definen para esa aplicacin. Los accesorios se encuentran en su entorno FIXTURES_DIRS (por defecto en un directorio de accesorios dentro de su proyecto de merengue).

internos de la serializacinMerengue hace la carga inicial de datos en su sitio web utilizando framework Django serialization. Por defecto Merengue utiliza el formato XML para cargar los datos, ignorando por defecto Django serializer XML, la adicin de estas mejoras: Traducciones campos de apoyo. Opcin para no sobrescribir los objetos previamente cargada en su sitio.

Campos de apoyo a la traduccin Usted puede entender la primera mejora que buscan en este fragmento de fijacin: welcome Bienvenido a Merengue Welcome to Merengue Merengue is a full-featured CMS useful for creating websites without writing

a single line of code or customizing and extending with any of the plethora of existing Django applications. Merengue is a full-featured CMS useful for creating websites without writing a single line of code or customizing and extending with any of the plethora of existing Django applications. ...

Como se ve, el contenido tiene nombre y descripcin de datos tanto para los idiomas Espaol e Ingls. Pero, qu pasa si usted tiene configurado su sitio en Ingls y Francs? El serializador por defecto Django XML fallar. Merengue por defecto se ha traducido en datos de las instalaciones y es ms resistente a ser independiente de los idiomas de su sitio. Accesorios no reemplazables. La segunda mejora es causada por este caso de uso: El desarrollador crea un proyecto nuevo merengue. El desarrollador crea el esquema de base de datos y cargar los datos iniciales Merengue (incluyendo una pgina de demostracin). El gerente de modificar tu pgina de inicio, y otros contenidos. La actualizacin del webmaster de la nueva versin merengue, el comando de ejecutar la migracin. Con omisin de Django serializadores XML, todos los cambios de gerente se perdern. El serializador XML Merengue se omiten los datos de los campos de traducir en lenguas no est configurado en su sitio. Si desea permitir a editar en un gestor de datos de dispositivos, puede hacerlo aadiendo un overwrite = "no" en cada elemento XML, de esta manera: welcome ...

Con esta marca, el merengue no va a tocar este objeto al cargar dispositivos si el objeto ya existe.

Pruebas de Merengue.Hay dos tipos de pruebas utilizadas en Merengue: Las pruebas unitarias, vea las pruebas en Django para ms informacin. El selenio pruebas, utilizando la web selenio aplicacin del sistema de prueba.

Pruebas Unitarias.

Las pruebas unitarias se ejecutan con la utilidad manage.py Django encuentra dentro de cada proyecto merengue, as:$ python manage.py testmerengue

Esto se trata de ejecutar todas las pruebas en todas las aplicaciones definidas en el APPS_TO_TEST ajuste. Tambin puede iniciar la prueba de una sola aplicacin aadiendo la solicitud a la final de la lnea de comandos, como sigue:$ python manage.py test perms

Pruebas de selenioPruebas de selenio son muy tiles porque ponen a prueba todas las capas de aplicacin (a partir de la base de datos a la interfaz de usuario). Viene con un IDE para poner en marcha y registrar las pruebas funcionales:

Estos son los pasos para instalar y ejecutar las pruebas de Merengue Selenium suites: 1. Instale el selenio IDE plugin de Firefox desde la pgina de descarga. 2. Asegrese de que el Ingls es seleccionado como el primer idioma usado para mostrar las pginas en las preferencias de Firefox. 3. Inicie el IDE de selenio en el men Opciones. 4. Cargue la necesaria extensin de selenio bsicos para carga de variables globales, que se encuentra en merengueproj / tests / selenio / extensions / extensions.js por el usuario. Esto se hace en el men de opciones en el IDE de selenio. 5. Cambiar el merengueproj / tests / selenio / archivo genrico / variables.html, estableciendo la variable de TEST_DATA_DIR para apuntar a la ruta absoluta a la merengueproj / tests /

selenio / directorio de prueba de datos. 6. Abra cualquier conjunto de pruebas (suite.html archivo), ubicado en el subdirectorio de la merengueproj / tests / selenio / generic. 7. Ejecutarlo. Cmo ejecutar todas las pruebas de selenio a la vez Hay un script para ejecutar todas las suites de pruebas de selenio ubicado en el merengueproj/tests/selenium/generic subdirectories. Este script se llama run_suites.py y se utiliza de la siguiente manera:$ python run_suites.py basic_url

basic_url es la url base del dominio de la prueba (es decir, http://localhost:8000/). Todas las URL relativa dependen de esta direccin URL. Es necesario ejecutar el script con los archivos de selenio server.jar en el mismo directorio o para dar la ruta completa con la opcin - el selenio y el servidor. Para evitar el lanzamiento de todas las ventanas del navegador cuando se prueba en el equipo y tambin para permitir a ejecutar las pruebas en un servidor, es posible utilizar framebuffer. Uso de este dispositivo permite la asignacin de las pantallas sin cabeza. Para instalarlo ejecute:$ sudo apt-get install xvfb

y luego, para el lanzamiento:$ sudo Xvfb :NUMBER

Finalmente ejecutar el conjunto de pruebas con un nmero de la pantalla no por defecto con la opcin--display NUMBER.

notaselenium-server.jar es

un archivo incluido en la solicitud de selenio.

Nota para los Navegadores que no estn en ingls. Si su navegador est configurado para utilizar un idioma distinto del Ingls, Merengue utilizar ese idioma por defecto y las pruebas de un error. Se puede crear un perfil de Firefox Ingls en un directorio y ejecutar el script run_suites.py con la opcin-f:$ python run_suite.py http://localhost:8000/ -f ~/.mozilla/firefox/selenium

Adems, si usted no desea utilizar el perfil de otro, una solucin rpida es desactivar el "django.middleware.locale.LocaleMiddleware desde middlewares su proyecto. La configuracin PRE_MERENGUE_MIDDLEWARE_CLASSES se encuentra en el archivo de merengue / settings.py.

Perfiles de Merengue

La barra de herramientas de depuracin de DjangoMerengue tiene una versin personalizada de la barra de herramientas de depuracin de Django desactivado por defecto. Para activar esta barra de herramientas, establecer la configuracin de DEBUG_TOOLBAR en True. Puede activar paneles especficos de la barra de herramientas de depuracin mediante la variable de DEBUG_TOOLBAR_PANELS.

Perfiles de MiddlewareMerengue ha desactivado por defecto ProfilingMiddleware. Para usarlo, usted tiene que instalar python-profiler. Para activarlo, quitar los comentarios de merengue / settings.py para activar el middleware:PRE_MERENGUE_MIDDLEWARE_CLASSES = ( # ... stuff 'cmsutils.middleware.ProfileMiddleware', # ... stuff

Cuando el middleware se activa con el conjunto de debug en true, slo acceder a la pgina que desea perfil, agregar un perfil de parmetros HTTP GET. Por ejemplo, si su servidor se est ejecutando en localhost: 8000, dirija su navegador a:http://localhost:8000/?profile

Merengue y mostrar una pgina como esta:119364 function calls (110393 primitive calls) in 0.842 CPU seconds Ordered by: internal time, call count ncalls tottime percall cumtime percall filename:lineno(function) 4796 0.076 0.000 0.076 0.000 /tmp/venv2.6/lib/python2.6/posixpath.py:307(normpath) 11 0.075 0.007 0.076 0.007 /tmp/django_src_1.3.X/django/db/models/fields/related.py:759(db_type) 2398 0.042 0.000 0.191 0.000 /tmp/django_src_1.3.X/django/utils/_os.py:24(safe_join) 88 0.035 0.000 0.055 0.001 /tmp/django_src_1.3.X/django/template/debug.py:10(tokenize) 79 0.032 0.000 0.191 0.002 /tmp/django_src_1.3.X/django/template/loaders/app_directories.py:48(load_template _source) ... # more stuff