]> git.parisson.com Git - timeside.git/commitdiff
upgrade django model: Collection, Item, Experience, Processsor, Result, Task (thanks...
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 3 Apr 2014 23:26:06 +0000 (01:26 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 3 Apr 2014 23:26:06 +0000 (01:26 +0200)
timeside/admin.py
timeside/migrations/0001_initial.py
timeside/migrations/0002_auto__chg_field_result_output_mime_type.py [new file with mode: 0644]
timeside/models.py
timeside/views.py

index 59fb3964721abbaedc6446b8e851d68511e6c6db..53e030bb8a8c9df8368927f44ee898998f8f836c 100644 (file)
@@ -2,4 +2,10 @@
 from django.contrib import admin
 from timeside.models import *
 
-admin.site.register(Item)
\ No newline at end of file
+admin.site.register(Collection)
+admin.site.register(Item)
+admin.site.register(Experience)
+admin.site.register(Processor)
+admin.site.register(Result)
+admin.site.register(Task)
+
index 388c29b5f96d09c4dbc07469e163f2c9c06935b0..32337623a95df8e4d4fbc98d74cb51570c4aead7 100644 (file)
@@ -11,7 +11,9 @@ class Migration(SchemaMigration):
         # Adding model 'Collection'
         db.create_table('timeside_collections', (
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=512)),
+            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
             ('title', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
             ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
         ))
@@ -29,35 +31,29 @@ class Migration(SchemaMigration):
         # Adding model 'Item'
         db.create_table('timeside_items', (
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=512)),
+            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
             ('title', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
             ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
             ('file', self.gf('django.db.models.fields.files.FileField')(max_length=1024, blank=True)),
             ('url', self.gf('django.db.models.fields.URLField')(max_length=1024, blank=True)),
             ('sha1', self.gf('django.db.models.fields.CharField')(unique=True, max_length=512, blank=True)),
-            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)),
+            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=256, blank=True)),
+            ('hdf5', self.gf('django.db.models.fields.files.FileField')(max_length=1024, blank=True)),
+            ('lock', self.gf('django.db.models.fields.BooleanField')(default=False)),
         ))
         db.send_create_signal('timeside', ['Item'])
 
-        # Adding M2M table for field experiences on 'Item'
-        m2m_table_name = db.shorten_name('timeside_items_experiences')
-        db.create_table(m2m_table_name, (
-            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
-            ('item', models.ForeignKey(orm['timeside.item'], null=False)),
-            ('experience', models.ForeignKey(orm['timeside.experience'], null=False))
-        ))
-        db.create_unique(m2m_table_name, ['item_id', 'experience_id'])
-
         # Adding model 'Experience'
         db.create_table('timeside_experiences', (
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('title', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
-            ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
             ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
             ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
-            ('status', self.gf('django.db.models.fields.IntegerField')(default=1)),
-            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512)),
-            ('author', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='experience', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
+            ('author', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='experiences', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
         ))
         db.send_create_signal('timeside', ['Experience'])
 
@@ -73,18 +69,48 @@ class Migration(SchemaMigration):
         # Adding model 'Processor'
         db.create_table('timeside_processors', (
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
             ('pid', self.gf('django.db.models.fields.CharField')(max_length=256)),
             ('type', self.gf('django.db.models.fields.CharField')(default='none', max_length=64)),
-            ('parameters', self.gf('jsonfield.fields.JSONField')(blank=True)),
+            ('parameters', self.gf('jsonfield.fields.JSONField')(null=True, blank=True)),
             ('version', self.gf('django.db.models.fields.CharField')(max_length=64, blank=True)),
-            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512)),
-            ('status', self.gf('django.db.models.fields.IntegerField')(default=1)),
-            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=1024, db_column='file')),
-            ('mime_type', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)),
-            ('results', self.gf('jsonfield.fields.JSONField')(blank=True)),
         ))
         db.send_create_signal('timeside', ['Processor'])
 
+        # Adding model 'Result'
+        db.create_table('timeside_results', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('date_added', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+            ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
+            ('uuid', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
+            ('item', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='results', null=True, on_delete=models.SET_NULL, to=orm['timeside.Item'])),
+            ('processor', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='results', null=True, on_delete=models.SET_NULL, to=orm['timeside.Processor'])),
+            ('output', self.gf('django.db.models.fields.files.FileField')(max_length=1024)),
+            ('json', self.gf('jsonfield.fields.JSONField')(blank=True)),
+            ('hdf5', self.gf('django.db.models.fields.files.FileField')(max_length=1024)),
+            ('output_mime_type', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)),
+        ))
+        db.send_create_signal('timeside', ['Result'])
+
+        # Adding model 'Task'
+        db.create_table('timeside_tasks', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('experience', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='task', null=True, to=orm['timeside.Experience'])),
+            ('status', self.gf('django.db.models.fields.IntegerField')(default=1)),
+        ))
+        db.send_create_signal('timeside', ['Task'])
+
+        # Adding M2M table for field items on 'Task'
+        m2m_table_name = db.shorten_name('timeside_tasks_items')
+        db.create_table(m2m_table_name, (
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+            ('task', models.ForeignKey(orm['timeside.task'], null=False)),
+            ('item', models.ForeignKey(orm['timeside.item'], null=False))
+        ))
+        db.create_unique(m2m_table_name, ['task_id', 'item_id'])
+
 
     def backwards(self, orm):
         # Deleting model 'Collection'
@@ -96,9 +122,6 @@ class Migration(SchemaMigration):
         # Deleting model 'Item'
         db.delete_table('timeside_items')
 
-        # Removing M2M table for field experiences on 'Item'
-        db.delete_table(db.shorten_name('timeside_items_experiences'))
-
         # Deleting model 'Experience'
         db.delete_table('timeside_experiences')
 
@@ -108,6 +131,15 @@ class Migration(SchemaMigration):
         # Deleting model 'Processor'
         db.delete_table('timeside_processors')
 
+        # Deleting model 'Result'
+        db.delete_table('timeside_results')
+
+        # Deleting model 'Task'
+        db.delete_table('timeside_tasks')
+
+        # Removing M2M table for field items on 'Task'
+        db.delete_table(db.shorten_name('timeside_tasks_items'))
+
 
     models = {
         'auth.group': {
@@ -147,49 +179,71 @@ class Migration(SchemaMigration):
             'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
         },
         'timeside.collection': {
-            'Meta': {'ordering': "['code']", 'object_name': 'Collection', 'db_table': "'timeside_collections'"},
-            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}),
+            'Meta': {'ordering': "['title']", 'object_name': 'Collection', 'db_table': "'timeside_collections'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
             'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
             'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
             'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'collections'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Item']"}),
-            'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
         },
         'timeside.experience': {
             'Meta': {'object_name': 'Experience', 'db_table': "'timeside_experiences'"},
-            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'experience'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'experiences'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
             'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
             'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
             'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
             'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'processors': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'experience'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Processor']"}),
-            'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+            'processors': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'experiences'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Processor']"}),
             'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512'})
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
         },
         'timeside.item': {
-            'Meta': {'ordering': "['code']", 'object_name': 'Item', 'db_table': "'timeside_items'"},
-            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}),
+            'Meta': {'ordering': "['title']", 'object_name': 'Item', 'db_table': "'timeside_items'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
             'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
-            'experiences': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'items'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Experience']"}),
             'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'hdf5': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
             'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'}),
+            'lock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}),
             'sha1': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512', 'blank': 'True'}),
             'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
-            'url': ('django.db.models.fields.URLField', [], {'max_length': '1024', 'blank': 'True'})
+            'url': ('django.db.models.fields.URLField', [], {'max_length': '1024', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
         },
         'timeside.processor': {
             'Meta': {'object_name': 'Processor', 'db_table': "'timeside_processors'"},
-            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'db_column': "'file'"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
             'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'}),
-            'parameters': ('jsonfield.fields.JSONField', [], {'blank': 'True'}),
+            'parameters': ('jsonfield.fields.JSONField', [], {'null': 'True', 'blank': 'True'}),
             'pid': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
-            'results': ('jsonfield.fields.JSONField', [], {'blank': 'True'}),
-            'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
             'type': ('django.db.models.fields.CharField', [], {'default': "'none'", 'max_length': '64'}),
-            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
             'version': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'})
+        },
+        'timeside.result': {
+            'Meta': {'object_name': 'Result', 'db_table': "'timeside_results'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'hdf5': ('django.db.models.fields.files.FileField', [], {'max_length': '1024'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'item': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['timeside.Item']"}),
+            'json': ('jsonfield.fields.JSONField', [], {'blank': 'True'}),
+            'output': ('django.db.models.fields.files.FileField', [], {'max_length': '1024'}),
+            'output_mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'}),
+            'processor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['timeside.Processor']"}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'timeside.task': {
+            'Meta': {'object_name': 'Task', 'db_table': "'timeside_tasks'"},
+            'experience': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'task'", 'null': 'True', 'to': "orm['timeside.Experience']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'task'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Item']"}),
+            'status': ('django.db.models.fields.IntegerField', [], {'default': '1'})
         }
     }
 
diff --git a/timeside/migrations/0002_auto__chg_field_result_output_mime_type.py b/timeside/migrations/0002_auto__chg_field_result_output_mime_type.py
new file mode 100644 (file)
index 0000000..79c1d08
--- /dev/null
@@ -0,0 +1,126 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+
+        # Changing field 'Result.output_mime_type'
+        db.alter_column('timeside_results', 'output_mime_type', self.gf('django.db.models.fields.CharField')(default='', max_length=256))
+
+    def backwards(self, orm):
+
+        # Changing field 'Result.output_mime_type'
+        db.alter_column('timeside_results', 'output_mime_type', self.gf('django.db.models.fields.CharField')(max_length=256, null=True))
+
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'timeside.collection': {
+            'Meta': {'ordering': "['title']", 'object_name': 'Collection', 'db_table': "'timeside_collections'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'collections'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Item']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'timeside.experience': {
+            'Meta': {'object_name': 'Experience', 'db_table': "'timeside_experiences'"},
+            'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'experiences'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'processors': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'experiences'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Processor']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'timeside.item': {
+            'Meta': {'ordering': "['title']", 'object_name': 'Item', 'db_table': "'timeside_items'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'hdf5': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'lock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512', 'blank': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'url': ('django.db.models.fields.URLField', [], {'max_length': '1024', 'blank': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'timeside.processor': {
+            'Meta': {'object_name': 'Processor', 'db_table': "'timeside_processors'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parameters': ('jsonfield.fields.JSONField', [], {'null': 'True', 'blank': 'True'}),
+            'pid': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+            'type': ('django.db.models.fields.CharField', [], {'default': "'none'", 'max_length': '64'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+            'version': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'})
+        },
+        'timeside.result': {
+            'Meta': {'object_name': 'Result', 'db_table': "'timeside_results'"},
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
+            'hdf5': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'item': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['timeside.Item']"}),
+            'json': ('jsonfield.fields.JSONField', [], {'blank': 'True'}),
+            'output': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}),
+            'output_mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}),
+            'processor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['timeside.Processor']"}),
+            'uuid': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'})
+        },
+        'timeside.task': {
+            'Meta': {'object_name': 'Task', 'db_table': "'timeside_tasks'"},
+            'experience': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'task'", 'null': 'True', 'to': "orm['timeside.Experience']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'task'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Item']"}),
+            'status': ('django.db.models.fields.IntegerField', [], {'default': '1'})
+        }
+    }
+
+    complete_apps = ['timeside']
\ No newline at end of file
index d2f96309b6bd75bb09c01e7cddfca49d917fcbe5..702540f1a2e31f647be5ee33e206d3581f1d64dc 100644 (file)
@@ -1,11 +1,10 @@
 # -*- coding: utf-8 -*-
 
-from django.db.models import *
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
 from django.contrib.auth.models import User
 
-import uuid
+import os, uuid, time, hashlib, mimetypes
 import timeside
 
 from timeside.analyzer.core import AnalyzerResultContainer
@@ -14,20 +13,21 @@ from jsonfield import JSONField
 
 app = 'timeside'
 
-processors = timeside.core.processors(timeside.api.IProcessor) 
+processors = timeside.core.processors(timeside.api.IProcessor)
 
-STATUS = ((0, _('broken')), (1, _('pending')), (2, _('processing')),
-                         (3, _('done')), (4, _('ready')))
+processors_pids = [(processor.id(), processor.id())  for processor in processors]
 
 PROCESSOR_TYPES = (('none', _('none')), ('decoder', _('decoder')), ('analyzer', _('analyzer')),
                    ('grapher', _('grapher')), ('encoder', _('encoder')))
 
+STATUS = ((0, _('broken')), (1, _('pending')), (2, _('processing')),
+                         (3, _('done')), (4, _('ready')))
 
-def get_mime_type(self, path):
+def get_mime_type(path):
     return mimetypes.guess_type(path)[0]
 
 
-def get_processor(self, pid):
+def get_processor(pid):
     for proc in processors:
         if proc.id == pid:
             return proc()
@@ -38,159 +38,163 @@ class MetaCore:
     app_label = app
 
 
-class Collection(Model):
+class BaseResource(models.Model):
 
-    code = CharField(_('code'), unique=True, max_length=512)
-    title = CharField(_('title'), blank=True, max_length=512)
-    description = TextField(_('description'), blank=True)    
-    items = ManyToManyField('Item', related_name="collections", verbose_name=_('items'), blank=True, null=True)
+    date_added = models.DateTimeField(_('date added'), auto_now_add=True)
+    date_modified = models.DateTimeField(_('date modified'), auto_now=True, null=True)
+    uuid = models.CharField(_('uuid'), blank=True, max_length=512, )
 
-    class Meta(MetaCore):
-        db_table = app + '_collections'
-        ordering = ['code']
-        verbose_name = _('collections')
+    class Meta:
+        abstract = True
+    
+    def save(self, **kwargs):
+        super(BaseResource, self).save(**kwargs)
+        if not self.uuid:
+            self.uuid = uuid.uuid4()
 
 
-class Media(models.Model):
+class DocumentedBaseResource(BaseResource):
 
-    title = CharField(_('title'), blank=True, max_length=512)
-    description = TextField(_('description'), blank=True)
-    file = FileField(_('file'), upload_to='items/%Y/%m/%d', blank=True, max_length=1024)
-    url = URLField(_('URL'), blank=True, max_length=1024)
-    sha1 = CharField(_('sha1'), unique=True, blank=True, max_length=512)
-    mime_type = CharField(_('mime type'), null=True, max_length=256)
+    title = models.CharField(_('title'), blank=True, max_length=512)
+    description = models.TextField(_('description'), blank=True)
+
+    def __unicode__(self):
+        return self.title    
     
     class Meta:
-        verbose_name = _('Media')
-        verbose_name_plural = _('Medias')
+        abstract = True
+    
 
-    def __unicode__(self):
-        pass
-    )
+class Collection(DocumentedBaseResource):
+
+    items = models.ManyToManyField('Item', related_name="collections", verbose_name=_('items'), blank=True, null=True)
+
+    class Meta(MetaCore):
+        db_table = app + '_collections'
+        ordering = ['title']
+        verbose_name = _('collection')
 
-class Item(Model):
 
-    code = CharField(_('code'), unique=True, max_length=512)
-    title = CharField(_('title'), blank=True, max_length=512)
-    description = TextField(_('description'), blank=True)        
-    results = OneToManyField('Result', related_name="item", verbose_name=_('results'), blank=True, null=True)
-    hdf5 = FileField(_('file'), upload_to='cache/%Y/%m/%d', db_column="file", max_length=1024)
-    lock = BooleanField(default=False)
+class Item(DocumentedBaseResource):
 
+    file = models.FileField(_('file'), upload_to='items/%Y/%m/%d', blank=True, max_length=1024)
+    url = models.URLField(_('URL'), blank=True, max_length=1024)
+    sha1 = models.CharField(_('sha1'), unique=True, blank=True, max_length=512)
+    mime_type = models.CharField(_('mime type'), blank=True, max_length=256)
+    hdf5 = models.FileField(_('HDF5 result file'), upload_to='items/%Y/%m/%d', blank=True, max_length=1024)
+    lock = models.BooleanField(default=False)
 
     class Meta(MetaCore):
         db_table = app + '_items'
-        ordering = ['code']
+        ordering = ['title']
         verbose_name = _('item')
 
-    def __unicode__(self):
-        return self.code
-
     def save(self, **kwargs):
         super(Item, self).save(**kwargs)
         if self.file:
             self.mime_type = get_mime_type(self.file.path)
+        if not self.sha1:
+            pass
 
     def results(self):
-        return [result for self.experiences.all()
+        return [result for result in self.results.all()]
 
 
-class Experience(Model):
+class Experience(DocumentedBaseResource):
 
-    title = CharField(_('title'), blank=True, max_length=512)
-    description = TextField(_('description'), blank=True)
-    date_added = DateTimeField(_('date added'), auto_now_add=True)
-    date_modified = DateTimeField(_('date modified'), auto_now=True, null=True)
-    status = IntegerField(_('status'), choices=STATUS, default=1)
-    uuid = CharField(_('uuid'), max_length=512)
-    author = ForeignKey(User, related_name="experience", verbose_name=_('author'), blank=True, null=True, on_delete=models.SET_NULL)
-    processors = ManyToManyField('Processor', related_name="experience", verbose_name=_('processors'), blank=True, null=True)
+    processors = models.ManyToManyField('Processor', related_name="experiences", verbose_name=_('processors'), blank=True, null=True)
+    author = models.ForeignKey(User, related_name="experiences", verbose_name=_('author'), blank=True, null=True, on_delete=models.SET_NULL)
     
     class Meta(MetaCore):
         db_table = app + '_experiences'
-        verbose_name = _('experience')
+        verbose_name = _('Experience')
 
+
+class Processor(BaseResource):
+    
+    pid = models.CharField(_('pid'), choices=processors_pids, max_length=256)
+    type = models.CharField(_('type'), choices=PROCESSOR_TYPES, default='none', max_length=64)
+    parameters = JSONField(_('parameters'), blank=True, null=True)
+    version = models.CharField(_('version'), max_length=64, blank=True)
+
+    class Meta(MetaCore):
+        db_table = app + '_processors'
+        verbose_name = _('processor')
+
+    def __unicode__(self):
+        return '_'.join([self.type, self.pid, str(self.id)])
+    
     def save(self, **kwargs):
-        super(Experience, self).save(**kwargs)
-        if not self.uuid:
-            self.uuid = uuid.uuid4()
+        super(Processor, self).save(**kwargs)
+        if not self.version:
+            self.version = timeside.__version__    
+
+
+class Result(BaseResource):
 
-    def run(self, collection):        
-        for item in collection.item.all():
-            item.experiences.add(self)
-            path = settings.MEDIA_ROOT + 'results' + os.sep + item.code + os.sep
-            item.hdf5 =  path + item.code + '.hdf5'
+    item = models.ForeignKey('Item', related_name="results", verbose_name=_('item'), blank=True, null=True, on_delete=models.SET_NULL)
+    processor = models.ForeignKey('Processor', related_name="results", verbose_name=_('processor'), blank=True, null=True, on_delete=models.SET_NULL)
+    json = JSONField(_('JSON result'), blank=True)
+    hdf5 = models.FileField(_('HDF5 result file'), upload_to='results/%Y/%m/%d', blank=True, max_length=1024)
+    output = models.FileField(_('Output file'), upload_to='results/%Y/%m/%d', blank=True, max_length=1024)
+    output_mime_type = models.CharField(_('Output mime type'), blank=True, max_length=256)
 
+    class Meta:
+        db_table = app + '_results'
+        verbose_name = _('Result')
+        verbose_name_plural = _('Results')
+
+    def __unicode__(self):
+        return '_'.join([self.item.title, unicode(self.processor)])
+
+    def save(self, **kwargs):
+        super(Result, self).save(**kwargs)
+        if self.output:
+            self.output_mime_type = get_mime_type(self.output.path)    
+
+
+class Task(models.Model):
+
+    experience = models.ForeignKey('Experience', related_name="task", verbose_name=_('experience'), blank=True, null=True)
+    items = models.ManyToManyField('Item', related_name="task", verbose_name=_('items'), blank=True, null=True)
+    status = models.IntegerField(_('status'), choices=STATUS, default=1)
+    
+    class Meta:
+        db_table = app + '_tasks'
+        verbose_name = _('Task')
+        verbose_name_plural = _('Tasks')
+
+    def __unicode__(self):
+        return '_'.join([unicode(self.experience), unicode(self.id)])
+
+    def run(self):
+        for item in self.items:
+            path = settings.MEDIA_ROOT + 'results' + os.sep + item.uuid + os.sep
+            if not item.hdf5:
+                item.hdf5 =  path + item.uuid + '.hdf5'
             pipe = FileDecoder(item.file)
             proc_dict = {}
-            for processor in self.processors:
+            for processor in self.preset.processors.all():
                 proc = get_processor(processor.id)
                 #TODO: add parameters
                 proc_dict[processor] = proc
                 pipe = pipe | proc
-            
             while item.lock:
                 time.sleep(30)
     
-            # pipe.run(item.hdf5)
+            pipe.run()
             pipe.results.to_hdf5(item.hdf5)
 
             for processor in proc_dict.keys():
                 proc = proc_dict[processor]
-                
                 results = Result.objects.filter(processor=processor, uuid=proc.UUID)
-
                 if not results:
                     result = Result(processor=processor, uuid=proc.UUID)
                     item.results.add(result)
                 else:
                     result = results[0]
-
-                result.hdf5 = path + item.code + '_' + proc.UUID + '.hdf5'
+                result.hdf5 = path + item.uuid + '_' + proc.UUID + '.hdf5'
                 proc.results.to_hdf5(result.hdf5)
                 result.save()
         del proc
         del pipe
-
-
-
-class Processor(Model):
-    
-    pid = CharField(_('pid'), max_length=256)
-    type = CharField(_('type'), choices=PROCESSOR_TYPES, default='none', max_length=64)
-    parameters = JSONField(_('parameters'), blank=True)
-    version = CharField(_('version'), max_length=64, blank=True)
-    status = IntegerField(_('status'), choices=STATUS, default=1)
-    
-    class Meta(MetaCore):
-        db_table = app + '_processors'
-        verbose_name = _('processor')
-
-    def save(self, **kwargs):
-        super(Processor, self).save(**kwargs)
-        if not self.version:
-            self.version = timeside.__version__    
-        if self.file:
-            self.mime_type = get_mime_type(self.file.path)
-        if not self.uuid:
-            self.uuid = uuid.uuid4()
-
-
-class Result(models.Model):
-
-    processor = ForeignKey('Processor', related_name="experience", verbose_name=_('author'), blank=True, null=True, on_delete=models.SET_NULL)
-    uuid = CharField(_('uuid'), max_length=512)
-    output = FileField(_('file'), upload_to='cache/%Y/%m/%d', db_column="file", max_length=1024)
-    mime_type = CharField(_('mime type'), null=True, max_length=256)
-    json = JSONField(_('results'), blank=True)
-    hdf5 = FileField(_('file'), upload_to='cache/%Y/%m/%d', db_column="file", max_length=1024)
-
-    class Meta:
-        verbose_name = _('Result')
-        verbose_name_plural = _('Results')
-
-    def __unicode__(self):
-        pass
-
-
-
index f74ddd8482e69472038045bf01651c642842c638..f7594b98bf2635d4ae5543a05e2b7b731651f860 100644 (file)
@@ -24,43 +24,31 @@ class IndexView(ListView):
 
     def get_context_data(self, **kwargs):
         context = super(IndexView, self).get_context_data(**kwargs)
+        item = self.get_object()
+        context['experiences'] = item.experiences.all().filter(author=self.request.user)
         return context
 
-    #@method_decorator(permission_required('is_superuser'))
-    #@method_decorator(login_required)
     def dispatch(self, *args, **kwargs):
         return super(IndexView, self).dispatch(*args, **kwargs)
 
 
 class ItemGrapherView(DetailView):
 
-       model = Item
-       mime_type = 'image/png'
-       
+    model = Item
+    mime_type = 'image/png'
 
-class ItemJsonAnalyzerView(DetailView):
 
-       model = Item
+class ItemAnalyzerView(DetailView):
+    
+    model = Item
 
     def results(self):
-       item = self.get_object()
-       experience = Experience.objects.get(id=experience_id)
+        item = self.get_object()
         results = AnalyzerResult()
         return results.from_hdf5(self.hdf5).to_json()
-        
+    
     def get_context_data(self, **kwargs):
         context = super(ItemJsonAnalyzerView, self).get_context_data(**kwargs)
-        item = self.get_object()
-        context['experiences'] = item.experiences.all().filter(author=self.request.user)
         return context
-
-    def render_to_response(self, context):
-        mimetype = mimetypes.guess_type(document.file.path)[0]
-        extension = mimetypes.guess_extension(mimetype)
-        response = HttpResponse(results, mimetype=mimetype)
-        response['Content-Disposition'] = "attachment; filename=%s%s" % \
-                                             (document.title.encode('utf8'), extension)
-        return response
-
-    @jsonrpc_method('timeside.stop_conference'):
-    def stop(request, public_id):
+    
+    
\ No newline at end of file