backoffice: list errors related to current form/carddef only (#49266)
This commit is contained in:
parent
b58c13e6c3
commit
8ba1421c08
|
@ -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')
|
||||
|
|
|
@ -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('<li><a href="qrcode" rel="popup">%s</a></li>') % _('Display QR Code')
|
||||
r += htmltext('</ul>')
|
||||
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):
|
||||
|
|
|
@ -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('</div>')
|
||||
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):
|
||||
|
|
|
@ -220,7 +220,7 @@ class CardDefPage(FormDefPage):
|
|||
r += htmltext('<li><a href="history/">%s</a></li>') % _('History')
|
||||
r += htmltext('</ul>')
|
||||
|
||||
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):
|
||||
|
|
Loading…
Reference in New Issue