def _has_custom_attr_changes(self): """Check if any custom attribute changed based on history""" for value in self.custom_attribute_values: for attr_name in ("attribute_value", "attribute_object_id"): history = db.inspect(value).attrs.get(attr_name).history if history.has_changes(): return True return False
def _update_status_on_attr(self): """Update review status when reviewable attrs are changed""" if (self.review and self.review.status != Review.STATES.UNREVIEWED): changed = {a.key for a in db.inspect(self).attrs if a.history.has_changes()} if changed - self.ATTRS_TO_IGNORE: self._set_review_status_unreviewed()
def _has_custom_attr_changes(self): """Check if any custom attribute changed based on history""" for value in self.custom_attribute_values: for attr_name in ("attribute_value", "attribute_object_id"): history = db.inspect( value).attrs.get(attr_name).history if history.has_changes(): return True return False
def _update_status_on_attr(self): """Update review status when reviewable attrs are changed""" from ggrc.models import all_models if (self.review and self.review.status != all_models.Review.STATES.UNREVIEWED): changed = {a.key for a in db.inspect(self).attrs if a.history.has_changes()} if changed - self.ATTRS_TO_IGNORE: self._set_review_status_unreviewed()
def _update_reviewed_by(self): """Update last_reviewed_by, last_reviewed_at""" # pylint: disable=attribute-defined-outside-init if not db.inspect(self).attrs["status"].history.has_changes(): return self.reviewable.updated_at = datetime.datetime.utcnow() if self.status == Review.STATES.REVIEWED: self.last_reviewed_by = self.modified_by self.last_reviewed_at = datetime.datetime.utcnow()
def _update_status_on_attr(self): """Update review status when reviewable attrs are changed""" from ggrc.models import all_models if (self.review and self.review.status != all_models.Review.STATES.UNREVIEWED): changed = { a.key for a in db.inspect(self).attrs if a.history.has_changes() } if changed - self.ATTRS_TO_IGNORE: self.review.status = all_models.Review.STATES.UNREVIEWED
def _update_reviewed_by(self): """Update last_reviewed_by, last_reviewed_at""" # pylint: disable=attribute-defined-outside-init from ggrc.models import all_models if not db.inspect(self).attrs["status"].history.has_changes(): return self.reviewable.updated_at = datetime.datetime.utcnow() if self.status == all_models.Review.STATES.REVIEWED: self.last_reviewed_by = self.modified_by self.last_reviewed_at = datetime.datetime.utcnow()
def _update_status_on_attr(self): """Update review status when reviewable attrs are changed""" if (self.review and self.review.status != Review.STATES.UNREVIEWED): changed = set() attrs = [ attr for attr in db.inspect(self).attrs if attr.history.has_changes() ] for attr in attrs: if attr.key in self.SPECIAL_ATTRS_HANDLERS: self.SPECIAL_ATTRS_HANDLERS[attr.key](attr, changed) else: changed.add(attr.key) if changed - self.ATTRS_TO_IGNORE: self._set_review_status_unreviewed()
def handle_audit_permission_put(sender, obj, src=None, service=None): """Make sure admins cannot delete/update archived audits""" # pylint: disable=unused-argument if obj.archived and not db.inspect( obj).get_history('archived', False).has_changes(): raise Forbidden()
def handle_audit_permission_put(sender, obj, src=None, service=None): """Make sure admins cannot delete/update archived audits""" # pylint: disable=unused-argument if obj.archived and not db.inspect(obj).get_history( 'archived', False).has_changes(): raise Forbidden()