FWIW the following is the error message get
Traceback (most recent call last):
File “/home/ubuntu/xlevel/apps/frappe/frappe/desk/form/save.py”, line 22, in savedocs
doc.save()
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 260, in save
return self._save(*args, **kwargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 296, in _save
self.run_before_save_methods()
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 877, in run_before_save_methods
self.run_method(“before_save”)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 772, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 1048, in composer
return composed(self, method, *args, **kwargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 1033, in runner
add_to_return_value(self, f(self, method, *args, **kwargs))
File “/home/ubuntu/xlevel/apps/vanilla/vanilla/doc_events/expense_claim.py”, line 12, in verify_authority
possible_rules = get_applicable_authorization_rules(expense_claim)
File “/home/ubuntu/xlevel/apps/vanilla/vanilla/doc_events/expense_claim.py”, line 43, in get_applicable_authorization_rules
approver = doc.exp_approver
AttributeError: ‘ExpenseClaim’ object has no attribute ‘exp_approver’
Traceback (most recent call last):
File “/home/ubuntu/xlevel/apps/frappe/frappe/app.py”, line 61, in application
response = frappe.handler.handle()
File “/home/ubuntu/xlevel/apps/frappe/frappe/handler.py”, line 21, in handle
data = execute_cmd(cmd)
File “/home/ubuntu/xlevel/apps/frappe/frappe/handler.py”, line 56, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File “/home/ubuntu/xlevel/apps/frappe/frappe/init.py”, line 1007, in call
return fn(*args, **newargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/desk/form/save.py”, line 22, in savedocs
doc.save()
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 260, in save
return self._save(*args, **kwargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 296, in _save
self.run_before_save_methods()
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 877, in run_before_save_methods
self.run_method(“before_save”)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 772, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 1048, in composer
return composed(self, method, *args, **kwargs)
File “/home/ubuntu/xlevel/apps/frappe/frappe/model/document.py”, line 1033, in runner
add_to_return_value(self, f(self, method, *args, **kwargs))
File “/home/ubuntu/xlevel/apps/vanilla/vanilla/doc_events/expense_claim.py”, line 12, in verify_authority
possible_rules = get_applicable_authorization_rules(expense_claim)
File “/home/ubuntu/xlevel/apps/vanilla/vanilla/doc_events/expense_claim.py”, line 43, in get_applicable_authorization_rules
approver = doc.exp_approver
AttributeError: ‘ExpenseClaim’ object has no attribute ‘exp_approver’