Ajout exemple
authorcyril robert <Cyril Robert crobert@inverse.ca>
Fri, 29 Jan 2010 16:15:25 +0000 (11:15 -0500)
committercyril robert <Cyril Robert crobert@inverse.ca>
Fri, 29 Jan 2010 16:15:25 +0000 (11:15 -0500)
.gitignore
__init__.py [new file with mode: 0644]
django_historique/models.py
exemple/__init__.py [new file with mode: 0644]
exemple/manage.py [new file with mode: 0755]
exemple/settings.py [new file with mode: 0644]
exemple/urls.py [new file with mode: 0644]
exemple/voiture/__init__.py [new file with mode: 0644]
exemple/voiture/admin.py [new file with mode: 0644]
exemple/voiture/models.py [new file with mode: 0644]
exemple/voiture/views.py [new file with mode: 0644]

index 0d20b64..085c4fe 100644 (file)
@@ -1 +1,2 @@
 *.pyc
+*.db
diff --git a/__init__.py b/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index 7475e4c..744382f 100644 (file)
@@ -37,9 +37,6 @@ class History (models.Model):
         log_instance (self, "S")
         self.save ()
 
-#    def save (self):
-#        pass
-
     class Meta:
         abstract = True
 
diff --git a/exemple/__init__.py b/exemple/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/exemple/manage.py b/exemple/manage.py
new file mode 100755 (executable)
index 0000000..bcdd55e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/python
+from django.core.management import execute_manager
+try:
+    import settings # Assumed to be in the same directory.
+except ImportError:
+    import sys
+    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
+    sys.exit(1)
+
+if __name__ == "__main__":
+    execute_manager(settings)
diff --git a/exemple/settings.py b/exemple/settings.py
new file mode 100644 (file)
index 0000000..74977a8
--- /dev/null
@@ -0,0 +1,82 @@
+# Django settings for exemple project.
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+    # ('Your Name', 'your_email@domain.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+DATABASE_NAME = 'exemple.db'             # Or path to database file if using sqlite3.
+DATABASE_USER = ''             # Not used with sqlite3.
+DATABASE_PASSWORD = ''         # Not used with sqlite3.
+DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
+DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/Montreal'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-ca'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# Absolute path to the directory that holds media.
+# Example: "/home/media/media.lawrence.com/"
+MEDIA_ROOT = ''
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash if there is a path component (optional in other cases).
+# Examples: "http://media.lawrence.com", "http://example.com/media/"
+MEDIA_URL = ''
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/media/'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = 'tu^e8nrlwboca%_rn6#!!g_yvqo1xgv1vboa^v3m436uza&ni@'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.load_template_source',
+    'django.template.loaders.app_directories.load_template_source',
+#     'django.template.loaders.eggs.load_template_source',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+)
+
+ROOT_URLCONF = 'exemple.urls'
+
+TEMPLATE_DIRS = (
+    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+    # Always use forward slashes, even on Windows.
+    # Don't forget to use absolute paths, not relative paths.
+)
+
+INSTALLED_APPS = (
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django.contrib.admin',
+    'django_historique',
+    'voiture',
+)
diff --git a/exemple/urls.py b/exemple/urls.py
new file mode 100644 (file)
index 0000000..64de019
--- /dev/null
@@ -0,0 +1,17 @@
+from django.conf.urls.defaults import *
+
+# Uncomment the next two lines to enable the admin:
+from django.contrib import admin
+admin.autodiscover()
+
+urlpatterns = patterns('',
+    # Example:
+    # (r'^exemple/', include('exemple.foo.urls')),
+
+    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
+    # to INSTALLED_APPS to enable admin documentation:
+    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
+
+    # Uncomment the next line to enable the admin:
+    (r'^admin/(.*)', admin.site.root),
+)
diff --git a/exemple/voiture/__init__.py b/exemple/voiture/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/exemple/voiture/admin.py b/exemple/voiture/admin.py
new file mode 100644 (file)
index 0000000..16eed16
--- /dev/null
@@ -0,0 +1,6 @@
+from models import Marque, Voiture, VoitureHistory
+from django.contrib import admin
+
+admin.site.register (Marque)
+admin.site.register (Voiture)
+admin.site.register (VoitureHistory)
diff --git a/exemple/voiture/models.py b/exemple/voiture/models.py
new file mode 100644 (file)
index 0000000..baec030
--- /dev/null
@@ -0,0 +1,32 @@
+from django.db import models
+from django_historique import History
+from django.db.models.signals import pre_save, pre_delete
+
+class Marque (models.Model):
+    nom = models.CharField (max_length = 32)
+
+    def __unicode__ (self):
+        return "<Marque %s>" % self.nom
+
+class VoitureBase (models.Model):
+    marque = models.ForeignKey (Marque)
+    couleur = models.CharField (max_length = 32)
+
+    class Meta:
+        abstract = True
+
+class VoitureHistory (History, VoitureBase):
+    def __unicode__ (self):
+        return "<VoitureH %s, rev. %s>" \
+                % (self.history_objectid, self.history_revision)
+
+class Voiture (VoitureBase):
+    id = models.AutoField (primary_key = True)
+    def __unicode__ (self):
+        return "<Voiture %s>" % self.id
+
+def voiturehistory_save (sender, instance, signal, *args, **kwargs):
+    history = VoitureHistory ()
+    history.save_log (instance)
+pre_save.connect(voiturehistory_save, sender=Voiture)
+pre_delete.connect(voiturehistory_save, sender=Voiture)
diff --git a/exemple/voiture/views.py b/exemple/voiture/views.py
new file mode 100644 (file)
index 0000000..60f00ef
--- /dev/null
@@ -0,0 +1 @@
+# Create your views here.