Exemple #1
0
  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])
Exemple #2
0
  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 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())
Exemple #5
0
  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
Exemple #6
0
  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
Exemple #7
0
  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
Exemple #8
0
  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
Exemple #9
0
  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