Beispiel #1
0
 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
Beispiel #2
0
  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()
Beispiel #3
0
 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
Beispiel #4
0
  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()
Beispiel #5
0
  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()
Beispiel #6
0
    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
Beispiel #7
0
  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()
Beispiel #8
0
    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()
Beispiel #9
0
 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()
Beispiel #10
0
 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()