예제 #1
0
파일: acl.py 프로젝트: zdqf/ggrc-core
 def _add_people(self, people_list):
   """Add people to AC list with the current role."""
   for person in people_list:
     models.AccessControlList(
         object=self.row_converter.obj,
         person=person,
         ac_role=self.role
     )
예제 #2
0
    def _create(cls, target_class, *args, **kwargs):
        """Create instance of model"""
        acls = []
        if "access_control_list_" in kwargs:
            acls = kwargs.pop("access_control_list_")
        cavs = []
        if "custom_attribute_values_" in kwargs:
            cavs = kwargs.pop("custom_attribute_values_")

        instance = target_class(**kwargs)
        db.session.add(instance)
        db.session.flush()

        if acls and isinstance(instance, Roleable):
            for acl in acls:
                db.session.add(
                    models.AccessControlList(
                        object=instance,
                        ac_role_id=acl.get("ac_role_id"),
                        person_id=acl.get("person_id"),
                    ))
        if cavs and isinstance(instance, CustomAttributable):
            for cav in cavs:
                db.session.add(
                    models.CustomAttributeValue(
                        attributable=instance,
                        attribute_value=cav.get("attribute_value"),
                        attribute_object_id=cav.get("attribute_object_id"),
                        custom_attribute_id=cav.get("custom_attribute_id"),
                    ))

        if isinstance(instance, models.CustomAttributeValue):
            cls._log_event(instance.attributable)
        if hasattr(instance, "log_json"):
            cls._log_event(instance)
        if getattr(db.session, "single_commit", True):
            db.session.commit()
        return instance