diff --git a/tests/backoffice_pages/test_all.py b/tests/backoffice_pages/test_all.py
index 192eccb4d..190ddfab9 100644
--- a/tests/backoffice_pages/test_all.py
+++ b/tests/backoffice_pages/test_all.py
@@ -4730,14 +4730,24 @@ def test_backoffice_logged_errors(pub):
formdef.fields = []
formdef.store()
+ # create a carddef with the same id
+ CardDef.wipe()
+ carddef = CardDef()
+ carddef.id = '34'
+ carddef.name = 'test'
+ carddef.fields = []
+ carddef.store()
+
LoggedError.wipe()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/forms/%s/' % formdef.id)
- assert not 'ZeroDivisionError' in resp.text
+ assert 'ZeroDivisionError' not in resp.text
+ resp = app.get('/backoffice/cards/%s/' % carddef.id)
+ assert 'ZeroDivisionError' not in resp.text
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
- assert not 'ZeroDivisionError' in resp.text
+ assert 'ZeroDivisionError' not in resp.text
app = get_app(pub)
resp = app.get('/test/')
@@ -4750,6 +4760,8 @@ def test_backoffice_logged_errors(pub):
assert 'Failed to evaluate condition' in resp.text
assert 'ZeroDivisionError' in resp.text
resp = resp.click('1 error')
+ resp = app.get('/backoffice/cards/%s/' % carddef.id)
+ assert 'ZeroDivisionError' not in resp.text
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
resp2 = resp.click('1 error')
diff --git a/wcs/admin/forms.py b/wcs/admin/forms.py
index 8ef84d0f3..bd891cd8d 100644
--- a/wcs/admin/forms.py
+++ b/wcs/admin/forms.py
@@ -457,7 +457,7 @@ class FormDefPage(Directory):
self.role = WorkflowRoleDirectory(self.formdef)
self.role.html_top = self.html_top
self.options = self.options_directory_class(self.formdef)
- self.logged_errors_dir = LoggedErrorsDirectory(parent_dir=self, formdef_id=self.formdef.id)
+ self.logged_errors_dir = LoggedErrorsDirectory(parent_dir=self, formdef_class=self.formdef_class, formdef_id=self.formdef.id)
self.snapshots_dir = SnapshotsDirectory(self.formdef)
def html_top(self, title):
@@ -702,7 +702,7 @@ class FormDefPage(Directory):
if qrcode is not None:
r += htmltext('
%s') % _('Display QR Code')
r += htmltext('')
- r += LoggedErrorsDirectory.errors_block(formdef_id=self.formdef.id)
+ r += LoggedErrorsDirectory.errors_block(formdef_class=self.formdef_class, formdef_id=self.formdef.id)
return r.getvalue()
def public_url(self):
diff --git a/wcs/admin/logged_errors.py b/wcs/admin/logged_errors.py
index f01a387f7..ed93a7b17 100644
--- a/wcs/admin/logged_errors.py
+++ b/wcs/admin/logged_errors.py
@@ -115,17 +115,17 @@ class LoggedErrorsDirectory(Directory):
_q_exports = ['']
@classmethod
- def get_errors(cls, formdef_id=None, workflow_id=None):
+ def get_errors(cls, formdef_class=None, formdef_id=None, workflow_id=None):
errors = []
- if formdef_id:
- errors = LoggedError.get_with_indexed_value('formdef_id', formdef_id)
+ if formdef_id and formdef_class:
+ errors = [e for e in LoggedError.get_with_indexed_value('formdef_id', formdef_id) if e.formdef_class == formdef_class.__name__]
elif workflow_id:
errors = LoggedError.get_with_indexed_value('workflow_id', workflow_id)
return list(errors)
@classmethod
- def errors_block(cls, formdef_id=None, workflow_id=None):
- errors = cls.get_errors(formdef_id=formdef_id, workflow_id=workflow_id)
+ def errors_block(cls, formdef_class=None, formdef_id=None, workflow_id=None):
+ errors = cls.get_errors(formdef_class=formdef_class, formdef_id=formdef_id, workflow_id=workflow_id)
if not errors:
return ''
errors.sort(key=lambda x: x.id, reverse=True)
@@ -151,8 +151,9 @@ class LoggedErrorsDirectory(Directory):
r += htmltext('')
return r.getvalue()
- def __init__(self, parent_dir, formdef_id=None, workflow_id=None):
+ def __init__(self, parent_dir, formdef_class=None, formdef_id=None, workflow_id=None):
self.parent_dir = parent_dir
+ self.formdef_class = formdef_class
self.formdef_id = formdef_id
self.workflow_id = workflow_id
@@ -162,7 +163,7 @@ class LoggedErrorsDirectory(Directory):
return template.QommonTemplateResponse(
templates=['wcs/backoffice/logged-errors.html'],
context={
- 'errors': self.get_errors(formdef_id=self.formdef_id, workflow_id=self.workflow_id),
+ 'errors': self.get_errors(formdef_class=self.formdef_class, formdef_id=self.formdef_id, workflow_id=self.workflow_id),
})
def _q_lookup(self, component):
diff --git a/wcs/backoffice/cards.py b/wcs/backoffice/cards.py
index 84a0fa3d3..1e91b3a8b 100644
--- a/wcs/backoffice/cards.py
+++ b/wcs/backoffice/cards.py
@@ -220,7 +220,7 @@ class CardDefPage(FormDefPage):
r += htmltext('%s') % _('History')
r += htmltext('')
- r += LoggedErrorsDirectory.errors_block(formdef_id=self.formdef.id)
+ r += LoggedErrorsDirectory.errors_block(formdef_class=self.formdef_class, formdef_id=self.formdef.id)
return r.getvalue()
def get_check_count_before_deletion_message(self):