diff --git a/bika/lims/browser/analysisrequest/publish.py b/bika/lims/browser/analysisrequest/publish.py index 282f948ba4..dc92f46dc5 100644 --- a/bika/lims/browser/analysisrequest/publish.py +++ b/bika/lims/browser/analysisrequest/publish.py @@ -720,11 +720,25 @@ def __call__(self, ar, overwrite=False): # if AR was previously digested, use existing data (if exists) if not overwrite: # Prevent any error related with digest - data = ar.getDigest() if hasattr(ar, 'getDigest') else '' + data = ar.getDigest() if hasattr(ar, 'getDigest') else {} if data: - # Seems that sometimes the 'obj' is wrong in the saved data. - data['obj'] = ar - return data + # Check if the department managers have changed since + # verification: + saved_managers = data.get('managers', {}) + saved_managers_ids = set(saved_managers.get('ids', [])) + current_managers = self.context.getManagers() + current_managers_ids = set([man.getId() for man in + current_managers]) + # The symmetric difference of two sets A and B is the set of + # elements which are in either of the sets A or B but not + # in both. + are_different = saved_managers_ids.symmetric_difference( + current_managers_ids) + if len(are_different) == 0: + # Seems that sometimes the 'obj' is wrong in the saved + # data. + data['obj'] = ar + return data logger.info("=========== creating new data for %s" % ar) @@ -732,6 +746,7 @@ def __call__(self, ar, overwrite=False): data = self._ar_data(ar) if hasattr(ar, 'setDigest'): ar.setDigest(data) + logger.info("=========== new data for %s created." % ar) return data def _schema_dict(self, instance, skip_fields=None, recurse=True): diff --git a/bika/lims/content/analysisrequest.py b/bika/lims/content/analysisrequest.py index b2ea3f8043..55ea0a8e9d 100644 --- a/bika/lims/content/analysisrequest.py +++ b/bika/lims/content/analysisrequest.py @@ -1838,7 +1838,6 @@ def getDefaultMemberDiscount(self): else: return "0.00" - security.declareProtected(View, 'getResponsible') def _getAnalysesNum(self): """ Return the amount of analyses verified/total in the current AR """ @@ -1852,6 +1851,7 @@ def _getAnalysesNum(self): total += 1 return verified,total + @security.public def getResponsible(self): """ Return all manager info of responsible departments """ managers = {} @@ -1888,8 +1888,7 @@ def getResponsible(self): return mngr_info - security.declareProtected(View, 'getResponsible') - + @security.public def getManagers(self): """ Return all managers of responsible departments """ manager_ids = []