def access_control_list(self, values): """Setter function for access control list. Args: values: List of access control roles or dicts containing json representation of custom attribute values. """ if values is None: return from ggrc.models import person for value in values: referenced_objects.mark_to_cache(person.Person, value["person"]["id"]) referenced_objects.rewarm_cache( rewarm_type=person.Person, skip_cad=True, undefer=True, ) persons_by_acl = defaultdict(set) for value in values: if value["ac_role_id"] not in self.acr_id_acl_map: raise BadRequest(errors.BAD_PARAMS) person = referenced_objects.get("Person", value["person"]["id"]) acl = self.acr_id_acl_map[value["ac_role_id"]] persons_by_acl[acl].add(person) for acl in self._access_control_list: acl.update_people(persons_by_acl[acl])
def test_mark_to_cache(self, get_model, flask_g): """Test for adding objects to cache for deleted table.""" from ggrc.utils.referenced_objects import mark_to_cache get_model.return_value = None with patch.object(flask_g, 'referenced_objects_markers', collections.defaultdict(set)) as cache_dict: mark_to_cache(self.type_, self.id_) self.assertFalse(None in cache_dict.keys())
def diff_with_current(self): referenced_objects.mark_to_cache(self.resource_type, self.resource_id) revisions_diff.mark_for_latest_content(self.resource_type, self.resource_id) def foo(): referenced_objects.rewarm_cache() revisions_diff.rewarm_latest_content() instance = referenced_objects.get(self.resource_type, self.resource_id) if instance: return revisions_diff.prepare(instance, self.content) return foo
def meta(self): """Callable lazy property for revision.""" referenced_objects.mark_to_cache(self.resource_type, self.resource_id) def lazy_loader(): """Lazy load diff for revisions.""" referenced_objects.rewarm_cache() instance = referenced_objects.get(self.resource_type, self.resource_id) meta_dict = {} if instance: instance_meta_info = meta_info.MetaInfo(instance) meta_dict["mandatory"] = instance_meta_info.mandatory return meta_dict return lazy_loader
def diff_with_current(self): """Callable lazy property for revision.""" referenced_objects.mark_to_cache(self.resource_type, self.resource_id) revisions_diff.mark_for_latest_content(self.resource_type, self.resource_id) def lazy_loader(): """Lazy load diff for revisions.""" referenced_objects.rewarm_cache() revisions_diff.rewarm_latest_content() instance = referenced_objects.get(self.resource_type, self.resource_id) if instance: return revisions_diff.prepare(instance, self.content) return lazy_loader
def diff_with_current(self): """Callable lazy property for revision.""" referenced_objects.mark_to_cache(self.resource_type, self.resource_id) revisions_diff.mark_for_latest_content(self.resource_type, self.resource_id) def lazy_loader(): """Lazy load diff for revisions.""" referenced_objects.rewarm_cache() revisions_diff.rewarm_latest_content() instance = referenced_objects.get(self.resource_type, self.resource_id) if instance: return revisions_diff.prepare(instance, self.content) # return empty diff object has already been removed return {} return lazy_loader