summaryrefslogtreecommitdiff
path: root/postgresqleu/digisign
diff options
context:
space:
mode:
authorMagnus Hagander2023-06-02 18:47:43 +0000
committerMagnus Hagander2023-06-02 18:47:43 +0000
commitabc3c464c717aec220ea540d02be4653100de5bb (patch)
treeb00c729416c764b2b4ca70267ca392d5f8398223 /postgresqleu/digisign
parentf6c403e09cfe2cd8f9fa8db3d31c05d28e253305 (diff)
Add a log view that shows full debug details of digisign logs
Diffstat (limited to 'postgresqleu/digisign')
-rw-r--r--postgresqleu/digisign/backendviews.py18
-rw-r--r--postgresqleu/digisign/implementations/__init__.py1
-rw-r--r--postgresqleu/digisign/implementations/signwell.py1
-rw-r--r--postgresqleu/digisign/models.py6
4 files changed, 26 insertions, 0 deletions
diff --git a/postgresqleu/digisign/backendviews.py b/postgresqleu/digisign/backendviews.py
index c93885d3..677a75f5 100644
--- a/postgresqleu/digisign/backendviews.py
+++ b/postgresqleu/digisign/backendviews.py
@@ -61,6 +61,7 @@ def view_provider_log(request, providerid):
return render(request, 'digisign/digisign_backend_log.html', {
'log': DigisignLog.objects.filter(provider=provider).order_by('-id')[:100],
+ 'hasdetails': provider.get_implementation().has_log_details,
'breadcrumbs': [
('/admin/digisign/providers/', 'Digital signature providers'),
('/admin/digisign/providers/{}/'.format(provider.id), provider.name),
@@ -68,6 +69,23 @@ def view_provider_log(request, providerid):
})
+def view_provider_log_details(request, providerid, logid):
+ if not request.user.is_superuser:
+ raise PermissionDenied("Access denied")
+
+ provider = get_object_or_404(DigisignProvider, pk=providerid)
+ log = get_object_or_404(DigisignLog, provider=provider, pk=logid)
+
+ return render(request, 'digisign/digisign_backend_log_details.html', {
+ 'log': log,
+ 'breadcrumbs': [
+ ('/admin/digisign/providers/', 'Digital signature providers'),
+ ('/admin/digisign/providers/{}/'.format(provider.id), provider.name),
+ ('/admin/digisign/providers/{}/log/'.format(provider.id), "Log"),
+ ]
+ })
+
+
def pdf_field_editor(request, conference, pdf, available_fields, fielddata, savecallback=None, breadcrumbs=[]):
import fitz
diff --git a/postgresqleu/digisign/implementations/__init__.py b/postgresqleu/digisign/implementations/__init__.py
index 31b67144..cfd5e30d 100644
--- a/postgresqleu/digisign/implementations/__init__.py
+++ b/postgresqleu/digisign/implementations/__init__.py
@@ -1,5 +1,6 @@
class BaseProvider:
can_send_preview = False
+ has_log_details = False
webhookcode = None
def __init__(self, id, provider):
diff --git a/postgresqleu/digisign/implementations/signwell.py b/postgresqleu/digisign/implementations/signwell.py
index 5afe5747..af2e36bb 100644
--- a/postgresqleu/digisign/implementations/signwell.py
+++ b/postgresqleu/digisign/implementations/signwell.py
@@ -79,6 +79,7 @@ On the Signwell account, open up the API application and specify
class Signwell(BaseProvider):
backend_form_class = SignwellBackendForm
can_send_preview = True
+ has_log_details = True
webhookcode = "sw"
def description_text(self, signeremail):
diff --git a/postgresqleu/digisign/models.py b/postgresqleu/digisign/models.py
index 913f5460..674e71ab 100644
--- a/postgresqleu/digisign/models.py
+++ b/postgresqleu/digisign/models.py
@@ -1,5 +1,7 @@
from django.db import models
+import json
+
class DigisignProvider(models.Model):
name = models.CharField(max_length=100, null=False, blank=False, unique=True)
@@ -47,3 +49,7 @@ class DigisignLog(models.Model):
indexes = [
models.Index(fields=('document', '-time'))
]
+
+ @property
+ def fulldata_pretty(self):
+ return json.dumps(self.fulldata, indent=2)