Эх сурвалжийг харах

[core] New Document format

Romain Rigaux 11 жил өмнө
parent
commit
decf9d2

+ 35 - 2
desktop/core/src/desktop/models.py

@@ -16,6 +16,8 @@
 # limitations under the License.
 
 import logging
+import uuid
+
 from itertools import chain
 
 from django.db import models
@@ -584,5 +586,36 @@ class DocumentPermission(models.Model):
   unique_together = ('doc', 'perms')
 
 
-# HistoryTable
-# VersionTable
+
+class Document2Manager(models.Manager):
+  def get_by_natural_key(self, uuid):
+    return self.get(uuid=uuid)
+
+
+def uuid_default():
+    return uuid.uuid4().hex
+
+
+class Document2(models.Model):    
+  owner = models.ForeignKey(auth_models.User, db_index=True, verbose_name=_t('Owner'), help_text=_t('Creator.'), related_name='doc_owner')
+  name = models.CharField(default='', max_length=255)
+  description = models.TextField(default='')
+  uuid = models.CharField(default=uuid_default, max_length=32, db_index=True)
+  type = models.CharField(default='', max_length=32, db_index=True, help_text=_t('Type of document, e.g. Hive query, Oozie workflow, Search Dashboard...'))
+
+  data = models.TextField(default='{}')
+  extra = models.TextField(default='{}')
+
+  last_modified = models.DateTimeField(auto_now=True, db_index=True, verbose_name=_t('Time last modified'))
+  version = models.SmallIntegerField(default=1, verbose_name=_t('Document version'), db_index=True) 
+  is_history = models.BooleanField(default=False, db_index=True)
+
+  tags = models.ManyToManyField('self', db_index=True)
+  dependencies = models.ManyToManyField('self', db_index=True)
+  
+  objects = Document2Manager()
+  unique_together = ('uuid', 'version', 'is_history')
+  
+  def natural_key(self):
+    return self.uuid
+