[#2534] Tests pour l'utilisation du formulaire ailleurs que dans l'admin
authorEric Mc Sween <eric.mcsween@auf.org>
Thu, 2 Feb 2012 19:15:17 +0000 (14:15 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Thu, 2 Feb 2012 19:15:17 +0000 (14:15 -0500)
doc/etablissements.rst
tests/settings.py
tests/templates/index.html [new file with mode: 0644]
tests/universite/admin.py
tests/universite/forms.py [new file with mode: 0644]
tests/universite/models.py
tests/universite/templates/universite/universite_form.html [new file with mode: 0644]
tests/universite/templates/universite/universite_list.html [new file with mode: 0644]
tests/universite/urls.py [new file with mode: 0644]
tests/urls.py

index 4f080b7..bbad712 100644 (file)
@@ -92,3 +92,21 @@ dans la configuration de l'admin::
         form = UniversiteForm
 
     admin.register(Universite, UniversiteForm)
+
+On peut aussi utiliser le formulaire ailleurs. Dans ce cas, il faudra penser à
+inclure les "media" associés pour que le javascript fonctionne. Par exemple:
+
+.. code-block:: html+django
+
+    <html>
+      <head>
+        {{ form.media }}
+      </head>
+      <body>
+        <form action="" method="post">
+          <table>
+            {{ form }}
+          </table>
+        </form>
+      </body>
+    </html>
index e5cbdd2..baecb0f 100644 (file)
@@ -1,3 +1,5 @@
+import os
+
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
@@ -20,3 +22,5 @@ INSTALLED_APPS = (
 ROOT_URLCONF = 'tests.urls'
 DEBUG = True
 STATIC_URL = '/static/'
+
+TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), 'templates'),)
diff --git a/tests/templates/index.html b/tests/templates/index.html
new file mode 100644 (file)
index 0000000..7c47cea
--- /dev/null
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <ul>
+      <li><a href="{% url admin:index %}">Admin</a></li>
+      <li><a href="{% url universite_list %}">Universités</a></li>
+    </ul>
+  </body>
+</html>
index 242f4dd..f8313a5 100644 (file)
@@ -1,15 +1,8 @@
-from auf.django.references.forms import EtablissementForm
-from django import forms
 from django.contrib import admin
 
+from tests.universite.forms import UniversiteForm
 from tests.universite.models import Universite
 
-class UniversiteForm(EtablissementForm):
-
-    class Meta(EtablissementForm.Meta):
-        model = Universite
-        fields = ('nom', 'pays', 'region', 'ville', 'membre', 'membre_adhesion_date', 'recteur', 'ref')
-
 class UniversiteAdmin(admin.ModelAdmin):
     form = UniversiteForm
 
diff --git a/tests/universite/forms.py b/tests/universite/forms.py
new file mode 100644 (file)
index 0000000..8b8a3de
--- /dev/null
@@ -0,0 +1,11 @@
+from auf.django.references.forms import EtablissementForm
+
+from tests.universite.models import Universite
+
+class UniversiteForm(EtablissementForm):
+
+    class Meta(EtablissementForm.Meta):
+        model = Universite
+        fields = ('nom', 'pays', 'region', 'ville', 'membre', 'membre_adhesion_date', 'recteur', 'ref')
+
+
index 7e682e0..2711174 100644 (file)
@@ -1,6 +1,10 @@
+from django.core.urlresolvers import reverse
 from django.db import models
 
 from auf.django.references import models as ref
 
 class Universite(ref.EtablissementBase):
     recteur = models.CharField(max_length=100)
+
+    def get_absolute_url(self):
+        return reverse('universite_update', kwargs={'pk': self.pk})
diff --git a/tests/universite/templates/universite/universite_form.html b/tests/universite/templates/universite/universite_form.html
new file mode 100644 (file)
index 0000000..b2928e6
--- /dev/null
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    {{ form.media }}
+  </head>
+  <body>
+    <form action="" method="post">
+      {% csrf_token %}
+      <table>
+        {{ form }}
+        <tr>
+          <td></td>
+          <td><input type="submit" value="Enregistrer" /></td>
+        </tr>
+      </table>
+    </form>
+  </body>
+</html>
diff --git a/tests/universite/templates/universite/universite_list.html b/tests/universite/templates/universite/universite_list.html
new file mode 100644 (file)
index 0000000..29e24de
--- /dev/null
@@ -0,0 +1,7 @@
+<h1>Universités</h1>
+
+<ul>
+  {% for universite in universite_list %}
+  <li><a href="{% url universite_update pk=universite.pk %}">{{ universite }}</a></li>
+  {% endfor %}
+</ul>
diff --git a/tests/universite/urls.py b/tests/universite/urls.py
new file mode 100644 (file)
index 0000000..7a70df9
--- /dev/null
@@ -0,0 +1,13 @@
+from django.conf.urls.defaults import patterns, url
+from django.views.generic import ListView, UpdateView
+
+from tests.universite.models import Universite
+from tests.universite.forms import UniversiteForm
+
+urlpatterns = patterns(
+    '',
+    url(r'^$', ListView.as_view(model=Universite), name='universite_list'),
+    url(r'^(?P<pk>\d+)$',
+        UpdateView.as_view(model=Universite, form_class=UniversiteForm),
+        name='universite_update'),
+)
index 57e802e..7bbb81f 100644 (file)
@@ -1,10 +1,13 @@
 from django.conf.urls.defaults import patterns, include, url
 from django.contrib import admin
+from django.views.generic import TemplateView
 
 admin.autodiscover()
 
 urlpatterns = patterns(
     '',
-    (r'^references/', include('auf.django.references.urls')),
-    (r'^', include(admin.site.urls)),
+    url(r'^$', TemplateView.as_view(template_name='index.html')),
+    url(r'^references/', include('auf.django.references.urls')),
+    url(r'^admin/', include(admin.site.urls)),
+    url(r'^universites/', include('tests.universite.urls')),
 )