--- /dev/null
+# -*- 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):
+ # Deleting field 'Result.output_mime_type'
+ db.delete_column('timeside_results', 'output_mime_type')
+
+ # Deleting field 'Result.output'
+ db.delete_column('timeside_results', 'output')
+
+ # Adding field 'Result.file'
+ db.add_column('timeside_results', 'file',
+ self.gf('django.db.models.fields.files.FileField')(max_length=1024, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Result.mime_type'
+ db.add_column('timeside_results', 'mime_type',
+ self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True),
+ keep_default=False)
+
+
+ # Changing field 'Result.hdf5'
+ db.alter_column('timeside_results', 'hdf5', self.gf('django.db.models.fields.files.FileField')(max_length=1024, null=True))
+
+ def backwards(self, orm):
+ # Adding field 'Result.output_mime_type'
+ db.add_column('timeside_results', 'output_mime_type',
+ self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True),
+ keep_default=False)
+
+ # Adding field 'Result.output'
+ db.add_column('timeside_results', 'output',
+ self.gf('django.db.models.fields.files.FileField')(default='foo.bar', max_length=1024, blank=True),
+ keep_default=False)
+
+ # Deleting field 'Result.file'
+ db.delete_column('timeside_results', 'file')
+
+ # Deleting field 'Result.mime_type'
+ db.delete_column('timeside_results', 'mime_type')
+
+
+ # Changing field 'Result.hdf5'
+ db.alter_column('timeside_results', 'hdf5', self.gf('django.db.models.fields.files.FileField')(default='foo.bar', max_length=1024))
+
+ 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.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'}),
+ 'experiences': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'other_experiences'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Experience']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_preset': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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', [], {'unique': 'True', 'max_length': '512', 'blank': 'True'})
+ },
+ 'timeside.item': {
+ 'Meta': {'ordering': "['title']", 'object_name': 'Item', 'db_table': "'timeside_items'"},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'items'", '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'}),
+ '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', [], {'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', [], {'unique': 'True', 'max_length': '512', 'blank': 'True'})
+ },
+ 'timeside.parameters': {
+ 'Meta': {'object_name': 'Parameters'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_preset': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'parameters': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'processor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parameters'", 'null': 'True', 'to': "orm['timeside.Processor']"})
+ },
+ 'timeside.processor': {
+ 'Meta': {'object_name': 'Processor', 'db_table': "'timeside_processors'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'pid': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+ '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'}),
+ 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+ 'hdf5': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'null': 'True', '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']"}),
+ 'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}),
+ 'parameters': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['timeside.Parameters']"}),
+ 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'uuid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512', 'blank': 'True'})
+ },
+ 'timeside.selection': {
+ 'Meta': {'object_name': 'Selection', 'db_table': "'timeside_selections'"},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'selections'", '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'}),
+ 'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'selections'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Item']"}),
+ 'selections': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'other_selections'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['timeside.Selection']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
+ 'uuid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512', 'blank': 'True'})
+ },
+ 'timeside.task': {
+ 'Meta': {'object_name': 'Task', 'db_table': "'timeside_tasks'"},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'tasks'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+ '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'}),
+ 'selection': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'task'", 'null': 'True', 'to': "orm['timeside.Selection']"}),
+ 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'})
+ }
+ }
+
+ complete_apps = ['timeside']
\ No newline at end of file
return proc()
raise ValueError('Processor %s does not exists' % pid)
+def set_mimetype(sender, **kwargs):
+ instance = kwargs['instance']
+ if instance.file:
+ if not instance.mime_type:
+ instance.mime_type = get_mime_type(instance.file.path)
+
+def set_hash(sender, **kwargs):
+ instance = kwargs['instance']
+ if instance.file:
+ if not instance.sha1:
+ instance.sha1 = sha1sum_file(instance.file.path)
class MetaCore:
self.save()
-def update_file_properties(sender, **kwargs):
- instance = kwargs['instance']
- if instance.file:
- if not instance.mime_type:
- instance.mime_type = get_mime_type(instance.file.path)
- if not instance.sha1:
- instance.sha1 = sha1sum_file(instance.file.path)
-
-post_save.connect(update_file_properties, sender=Item)
-
-
class Experience(DocBaseResource):
processors = models.ManyToManyField('Processor', related_name="experiences", verbose_name=_('processors'), blank=True, null=True)
item = models.ForeignKey('Item', related_name="results", verbose_name=_('item'), blank=True, null=True, on_delete=models.SET_NULL)
parameters = models.ForeignKey('Parameters', related_name="results", verbose_name=_('parameters'), blank=True, null=True, on_delete=models.SET_NULL)
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)
+ file = models.FileField(_('Output file'), upload_to='results/%Y/%m/%d', blank=True, max_length=1024)
+ mime_type = models.CharField(_('Output file MIME type'), blank=True, max_length=256)
status = models.IntegerField(_('status'), choices=STATUS, default=1)
class Meta(MetaCore):
self.save()
def __unicode__(self):
- return '_'.join([self.item.title, unicode(self.processor)])
-
- def save(self, **kwargs):
- if self.output:
- self.output_mime_type = get_mime_type(self.output.path)
- super(Result, self).save(**kwargs)
+ return '_'.join([self.item.title, unicode(self.parameters.processor)])
class Parameters(models.Model):
item.lock_setter(True)
pipe.run()
- pipe.results.to_hdf5(item.hdf5.path)
+ #pipe.results.to_hdf5(item.hdf5.path)
item.lock_setter(False)
for processor in proc_dict.keys():
proc = proc_dict[processor]
+
if proc.type == 'analyzer':
- parameters = '{}'
- parameters = Parameters.objects.get_or_create(processor=processor, parameters=unicode(parameters))
- result = Result.objects.get_or_create(parameters=parameters, item=item)
- result.hdf5 = path + item.uuid + '_' + proc.UUID + '.hdf5'
- proc.results.to_hdf5(result.hdf5.path)
+ for analyzer_id in proc.results.keys():
+ parameters = proc.results[analyzer_id].parameters
+ parameters, c = Parameters.objects.get_or_create(processor=processor, parameters=unicode(parameters))
+ result, c = Result.objects.get_or_create(parameters=parameters, item=item)
+ result.hdf5 = path + item.uuid + '_' + str(proc.UUID) + '.hdf5'
+ #proc.results.to_hdf5(result.hdf5.path)
+ result.save()
+
+ if proc.type == 'grapher':
+ parameters, c = Parameters.objects.get_or_create(processor=processor, parameters=unicode(parameters))
+ result, c = Result.objects.get_or_create(parameters=parameters, item=item)
+ result.output= path + item.uuid + '_' + str(proc.UUID) + '.png'
+ proc.render(output=result.output)
result.save()
# except:
del proc
del pipe
+
+
+post_save.connect(set_mimetype, sender=Item)
+post_save.connect(set_hash, sender=Item)
+post_save.connect(set_mimetype, sender=Result)
+