* Installation et mise à jour::
- easy_install -f easy_install -f http://pypi.auf.org/simple/auf.skeleton.django/ -U auf.skeleton.django
+ pip install -f http://pypi.auf.org/simple/auf.skeleton.django/ -U auf.skeleton.django
.. note::
import os
from paste.script import templates
-from paste.script.templates import var
-RENOMMAGES = {'gitignore' : '.gitignore'}
-
-class DjangoTemplate(templates.Template):
- """
- Modèle de projet Django pour l'AUF reposant sur `Buildout <http://www.buildout.org/>`_.
-
- Il permet de construire un projet avec les briques de base importantes pour la maintenance
- et l'homogénéité entre les applications, avec notamment:
+RENOMMAGES = {'gitignore': '.gitignore'}
- * Un framework de migration (South)
- * La charte graphique de l'AUF
-
- * La Recette AUF pour préparer le projet Django
+class DjangoTemplate(templates.Template):
+ """
+ Modèle de projet Django pour l'AUF reposant sur
+ `Buildout <http://www.buildout.org/>`_.
+ Il permet de construire un projet avec les briques de base
+ importantes pour la maintenance et l'homogénéité entre les applications.
**Utilisation**::
*buildout.cfg*
- .. literalinclude:: ../auf/skeleton/django/templates/django/buildout.cfg_tmpl
+ .. literalinclude:: ../auf/skeleton/django/templates/django/\
+ buildout.cfg_tmpl
*devel.cfg*
- .. literalinclude:: ../auf/skeleton/django/templates/django/devel.cfg_tmpl
+ .. literalinclude:: ../auf/skeleton/django/templates/django/\
+ devel.cfg_tmpl
+
+ *versions.cfg*
+
+ .. literalinclude:: ../auf/skeleton/django/templates/django/\
+ versions.cfg_tmpl
"""
egg_plugins = ['auf.skeleton.django']
summary = 'Démarrer un nouveau projet Django avec Buildout'
- _template_dir = 'templates/django'
use_cheetah = True
vars = [
+ templates.var('module_name', u'nom du module projet?',
+ default='project'),
]
def post(self, command, output_dir, vars):
for avant, apres in RENOMMAGES.items():
avant = os.path.join(output_dir, avant)
apres = os.path.join(output_dir, apres)
- os.rename(avant, apres)
- print "----------------------------------------------------------------"
- print "Génération du projet terminée."
+ os.rename(avant, apres)
print ""
- print "################### AVERTISSEMENTS #############################"
- print "* Paquets requis : "
- print " - python-virtualenv (environement Python de DEV)"
- print " - python-mysqldb (connecteur Python SQL)"
- print " - git-core (Gestionnaire de sources)"
+ print "Génération du projet terminée."
print ""
- print "* Assurez-vous d'avoir chargé votre environement virtuel (DEV)"
- print "################################################################"
+ print "* Paquets requis"
+ print "- python-virtualenv"
+ print "- python-mysqldb"
+ print "- git-core"
print ""
- print "* : cd %s (aller dans le nouveau projet)" % output_dir
- print "* : python bootstrap.py (pour récupérer buildout et setuptools)"
- print "* : bin/buildout -c devel.cfg (pour boostraper le projet Django)"
- print "* : Configurer les accès MySQL dans conf.py"
- print "* : bin/django syncdb (créer les tables)"
- print "* : bin/django migrate (initialiser les incréments de migration)"
- print "* : 'Pusher' le projet dans le reposoire git centralisé"
print ""
- print "----------------------------------------------------------------"
+ print "* : cd %s" % output_dir
+ print "* : python bootstrap.py"
+ print "* : bin/buildout -c devel.cfg"
+ print "* : Configurer conf.py"
+ print "* : bin/django syncdb"
+ print "* : bin/django migrate"
+ print "* : git push origin <depot>"
+
+
+class Django13Template(DjangoTemplate):
+ _template_dir = 'templates/django_1_3'
+++ /dev/null
-##############################################################################
-#
-# Copyright (c) 2006 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Bootstrap a buildout-based project
-
-Simply run this script in a directory containing a buildout.cfg.
-The script accepts buildout command-line options, so you can
-use the -c option to specify an alternate configuration file.
-
-$Id$
-"""
-
-import os, shutil, sys, tempfile, urllib2
-
-tmpeggs = tempfile.mkdtemp()
-
-is_jython = sys.platform.startswith('java')
-
-try:
- import pkg_resources
-except ImportError:
- ez = {}
- exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
- ).read() in ez
- ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
-
- import pkg_resources
-
-if sys.platform == 'win32':
- def quote(c):
- if ' ' in c:
- return '"%s"' % c # work around spawn lamosity on windows
- else:
- return c
-else:
- def quote (c):
- return c
-
-cmd = 'from setuptools.command.easy_install import main; main()'
-ws = pkg_resources.working_set
-
-if is_jython:
- import subprocess
-
- assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd',
- quote(tmpeggs), 'zc.buildout'],
- env=dict(os.environ,
- PYTHONPATH=
- ws.find(pkg_resources.Requirement.parse('setuptools')).location
- ),
- ).wait() == 0
-
-else:
- assert os.spawnle(
- os.P_WAIT, sys.executable, quote (sys.executable),
- '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout',
- dict(os.environ,
- PYTHONPATH=
- ws.find(pkg_resources.Requirement.parse('setuptools')).location
- ),
- ) == 0
-
-ws.add_entry(tmpeggs)
-ws.require('zc.buildout')
-import zc.buildout.buildout
-zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
-shutil.rmtree(tmpeggs)
+++ /dev/null
-#encoding UTF-8
-
-[buildout]
-newest = false
-parts = django
-versions = versions
-
-find-links = http://pypi.auf.org/simple/auf.recipe.django
- http://pypi.auf.org/simple/auf.django.skin
-
-eggs =
- auf.recipe.django
- django
- south
- django-admin-tools
- auf.django.skin
-
-[versions]
-django = 1.3.1
-south = 0.7.3
-django-admin-tools = 0.4.1
-
-[django]
-recipe = auf.recipe.django
-wsgi=true
-settings=production
-extra-paths = project
-eggs = \${buildout:eggs}
+++ /dev/null
-[buildout]
-extends=buildout.cfg
-
-[django]
-wsgi=false
-settings=development
-eggs = \${buildout:eggs}
- django-debug-toolbar
-
+++ /dev/null
-# binaires
-*.pyc
-*.pyo
-
-# Fichier temporaires:
-.*.swp
-*~
-\#*#
-src/*
-
-# DB de dev
-*.db
-
-# restants de merge
-*.orig
-*.rej
-
-# Configuration du projet - par environnement
-conf.py
-django.wsgi
-
-# buildout
-.installed.cfg
-bin
-develop-eggs
-downloads
-eggs
-log
-parts
-tmp
-sitestatic
--- /dev/null
+# -*- encoding: utf-8 -*
+
+DATABASES = {
+ 'default': {
+ #'ENGINE': 'django.db.backends.mysql',
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': 'db.sqlite',
+ 'USER': '',
+ 'PASSWORD': '',
+ 'HOST': '',
+ 'PORT': '',
+ }
+}
--- /dev/null
+# -*- encoding: utf-8 -*
+
+DATABASES = {
+ 'default': {
+ #'ENGINE': 'django.db.backends.mysql',
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': 'db.sqlite',
+ 'USER': '',
+ 'PASSWORD': '',
+ 'HOST': '',
+ 'PORT': '',
+ }
+}
--- /dev/null
+# -*- encoding: utf-8 -*
+
+from django.utils.translation import ugettext_lazy as _
+from admin_tools.dashboard import modules, Dashboard
+
+
+class CustomIndexDashboard(Dashboard):
+ """
+ Custom index dashboard
+ """
+
+ def init_with_context(self, context):
+
+ # append an app list module for "Applications"
+ self.children.append(modules.AppList(
+ _('Applications'),
+ exclude=('django.contrib.*',),
+ ))
+
+ # append an app list module for "Administration"
+ self.children.append(modules.AppList(
+ _('Administration'),
+ models=('django.contrib.*',),
+ ))
+
+ # append a recent actions module
+ self.children.append(modules.RecentActions(_('Recent Actions'), 5))
--- /dev/null
+# -*- encoding: utf-8 -*-
+
+from $(module_name).settings import *
+DEBUG=True
+TEMPLATE_DEBUG=DEBUG
+
+# Décommentez ces lignes pour activer la debugtoolbar
+#INTERNAL_IPS = ('127.0.0.1',)
+#INSTALLED_APPS += ('debug_toolbar',)
+#MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
+
+AUTH_PASSWORD_REQUIRED = False
+
--- /dev/null
+# -*- encoding: utf-8 -*-
+
+# En production, rediriger la sortie terminal on disponible en WSGI
+# vers la sortie fichier errorlog.
+import sys
+sys.stdout = sys.stderr
+
+from $(module_name).settings import *
+
--- /dev/null
+# -*- encoding: utf-8 -*-
+
+import os
+import socket
+from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as \
+ DEFAULT_TEMPLATE_CONTEXT_PROCESSORS
+
+# Rapports d'erreurs
+SERVER_EMAIL = 'ne-pas-repondre@auf.org'
+EMAIL_SUBJECT_PREFIX = '[$(project) - %s] ' % socket.gethostname()
+ADMINS = (
+ ('Équipe ARI-SI', 'developpeurs@ca.auf.org'),
+)
+
+MANAGERS = ADMINS
+
+TIME_ZONE = 'America/Montreal'
+
+LANGUAGE_CODE = 'fr-ca'
+
+PROJECT_ROOT = os.path.dirname(__file__)
+SITE_ROOT = os.path.dirname(PROJECT_ROOT)
+
+MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
+MEDIA_URL = '/media/'
+
+STATIC_ROOT = os.path.join(SITE_ROOT, 'sitestatic')
+STATIC_URL = '/static/'
+STATICFILES_DIRS = (
+ os.path.join(PROJECT_ROOT, 'static'),
+)
+
+ROOT_URLCONF = '$(module_name).urls'
+
+INSTALLED_APPS = (
+ 'admin_tools',
+ 'admin_tools.theming',
+ 'admin_tools.menu',
+ 'admin_tools.dashboard',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.admin',
+ 'django.contrib.staticfiles',
+ 'south',
+)
+
+TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_TEMPLATE_CONTEXT_PROCESSORS + (
+ 'django.core.context_processors.static',
+ 'django.core.context_processors.request',
+)
+
+
+TEMPLATE_DIRS = (
+ os.path.join(os.path.dirname(__file__), "templates"),
+)
+
+SOUTH_TESTS_MIGRATE = False
+
+ADMIN_TOOLS_INDEX_DASHBOARD = 'project.dashboard.CustomIndexDashboard'
+
+from conf import *
--- /dev/null
+# -*- encoding: utf-8 -*
+
+from django.conf.urls.defaults import patterns, include, \
+ handler500, handler404, url
+from django.conf import settings
+from django.contrib import admin
+from django.contrib.staticfiles.urls import staticfiles_urlpatterns
+
+admin.autodiscover()
+
+handler404
+handler500 # Pyflakes
+
+urlpatterns = patterns(
+ '',
+ # admin
+ url(r'^admin_tools/', include('admin_tools.urls')),
+ (r'^admin/', include(admin.site.urls)),
+)
+
+if settings.DEBUG:
+ urlpatterns += staticfiles_urlpatterns()
+ urlpatterns += patterns('',
+ url(r'^media/(?P<path>.*)$',
+ 'django.views.static.serve', {
+ 'document_root': settings.MEDIA_ROOT, }),
+ )
--- /dev/null
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id$
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+is_jython = sys.platform.startswith('java')
+
+try:
+ import pkg_resources
+except ImportError:
+ ez = {}
+ exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+ ).read() in ez
+ ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+ import pkg_resources
+
+if sys.platform == 'win32':
+ def quote(c):
+ if ' ' in c:
+ return '"%s"' % c # work around spawn lamosity on windows
+ else:
+ return c
+else:
+ def quote (c):
+ return c
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+ws = pkg_resources.working_set
+
+if is_jython:
+ import subprocess
+
+ assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd',
+ quote(tmpeggs), 'zc.buildout'],
+ env=dict(os.environ,
+ PYTHONPATH=
+ ws.find(pkg_resources.Requirement.parse('setuptools')).location
+ ),
+ ).wait() == 0
+
+else:
+ assert os.spawnle(
+ os.P_WAIT, sys.executable, quote (sys.executable),
+ '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout',
+ dict(os.environ,
+ PYTHONPATH=
+ ws.find(pkg_resources.Requirement.parse('setuptools')).location
+ ),
+ ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)
--- /dev/null
+#encoding UTF-8
+
+[buildout]
+extends = versions.cfg
+extensions = buildout-versions
+buildout_versions_file = versions.cfg
+versions = versions
+unzip = true
+parts = django
+versions = versions
+
+find-links = http://pypi.auf.org/simple/auf.recipe.django
+
+eggs =
+ auf.recipe.django
+ django
+ south
+ django-admin-tools
+
+[django]
+recipe = auf.recipe.django
+wsgi=true
+settings=production
+project = ${module_name}
+extra-paths = ${module_name}
+eggs = \${buildout:eggs}
--- /dev/null
+[buildout]
+extends=buildout.cfg
+
+[django]
+wsgi=false
+settings=development
+eggs = \${buildout:eggs}
+ django-debug-toolbar
+
--- /dev/null
+# binaires
+*.pyc
+*.pyo
+
+# Fichier temporaires:
+.*.swp
+*~
+\#*#
+src/*
+
+# DB de dev
+*.db
+
+# restants de merge
+*.orig
+*.rej
+
+# Configuration du projet - par environnement
+conf.py
+django.wsgi
+
+# buildout
+.installed.cfg
+bin
+develop-eggs
+downloads
+eggs
+log
+parts
+tmp
+sitestatic
--- /dev/null
+[versions]
+Django = 1.3.1
+django-admin-tools = 0.4.1
from setuptools import setup, find_packages
-import sys, os
name = 'auf.skeleton.django'
-version = '1.2'
+version = '2.0'
setup(name=name,
version=version,
description="Bootstrap projet AUF en Django",
long_description="""\
""",
- classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ classifiers=[],
keywords='AUF Skeleton Django',
author='Olivier Larchev\xc3\xaaque',
author_email='olivier.larchev\xc3\xaaque@auf.org',
url='http://pypi.auf.org/%s' % name,
license='GPL',
- namespace_packages = ['auf', 'auf.skeleton', ],
+ namespace_packages=['auf', 'auf.skeleton', ],
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
include_package_data=True,
zip_safe=False,
entry_points="""
# -*- Entry points: -*-
[paste.paster_create_template]
- auf_django=auf.skeleton.django.templates:DjangoTemplate
+ auf_django_1_3=auf.skeleton.django.templates:Django13Template
""",
)