summaryrefslogtreecommitdiff
path: root/postgresqleu/digisign/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'postgresqleu/digisign/models.py')
-rw-r--r--postgresqleu/digisign/models.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/postgresqleu/digisign/models.py b/postgresqleu/digisign/models.py
new file mode 100644
index 00000000..913f5460
--- /dev/null
+++ b/postgresqleu/digisign/models.py
@@ -0,0 +1,49 @@
+from django.db import models
+
+
+class DigisignProvider(models.Model):
+ name = models.CharField(max_length=100, null=False, blank=False, unique=True)
+ displayname = models.CharField(max_length=100, null=False, blank=False)
+ classname = models.CharField(max_length=200, null=False, blank=False, verbose_name="Implementation class")
+ active = models.BooleanField(null=False, blank=False, default=False)
+ config = models.JSONField(blank=False, null=False, default=dict)
+
+ def __str__(self):
+ return self.name
+
+ class Meta:
+ ordering = ('name', )
+
+ def get_implementation(self):
+ pieces = self.classname.split('.')
+ modname = '.'.join(pieces[:-1])
+ classname = pieces[-1]
+ mod = __import__(modname, fromlist=[classname, ])
+ return getattr(mod, classname)(self.id, self)
+
+
+class DigisignDocument(models.Model):
+ provider = models.ForeignKey(DigisignProvider, null=False, blank=False, on_delete=models.CASCADE)
+ documentid = models.CharField(max_length=100, null=False, blank=True)
+ handler = models.CharField(max_length=32, null=False, blank=True)
+ completed = models.BooleanField(null=False, blank=False, default=False)
+
+ class Meta:
+ unique_together = (
+ ('documentid', 'provider'),
+ )
+
+
+class DigisignLog(models.Model):
+ provider = models.ForeignKey(DigisignProvider, null=False, blank=False, on_delete=models.CASCADE)
+ document = models.ForeignKey(DigisignDocument, null=True, blank=True, on_delete=models.CASCADE)
+ time = models.DateTimeField(auto_now_add=True, db_index=True)
+ event = models.CharField(max_length=200, null=False, blank=False)
+ text = models.CharField(max_length=1000, null=False, blank=False)
+ fulldata = models.JSONField(null=False, blank=False, default=dict)
+
+ class Meta:
+ ordering = ('time', )
+ indexes = [
+ models.Index(fields=('document', '-time'))
+ ]