Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
def not_empty_revisions(exp, object_class, target_class, query):
    """Filter revisions containing object state changes."""
    if object_class is not all_models.Revision:
        raise BadQueryException("'not_empty_revisions' operator works with "
                                "Revision only")

    resource_type = exp["resource_type"]
    resource_id = exp["resource_id"]

    resource_cls = getattr(all_models, resource_type, None)
    if resource_cls is None:
        raise BadQueryException(
            "'{}' resource type does not exist".format(resource_type))

    query = all_models.Revision.query.filter(
        all_models.Revision.resource_type == resource_type,
        all_models.Revision.resource_id == resource_id,
    ).order_by(all_models.Revision.created_at, )

    current_instance = resource_cls.query.get(resource_id)

    prev_diff = None
    revision_with_changes = []
    for revision in query:
        diff = revdiff_builder.prepare(current_instance, revision.content)
        if diff != prev_diff:
            revision_with_changes.append(revision.id)
            prev_diff = diff

    if not revision_with_changes:
        return sqlalchemy.sql.false()

    return all_models.Revision.id.in_(revision_with_changes)
Exemplo n.º 4
0
 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 {}
Exemplo n.º 5
0
  def prepare(self, data):
    data = super(FullInstanceContentFased, self).prepare(data)
    content = builder.prepare(
        referenced_objects.get(data["instance"]["type"],
                               data["instance"]["id"]),
        data["full_instance_content"])

    # pop out unused object_people field out of mapping_list_fields
    if 'mapping_list_fields' in content:
      content['mapping_list_fields'].pop('object_people', None)
    return content
Exemplo n.º 6
0
  def prepare(self, data):
    data = super(FullInstanceContentFased, self).prepare(data)
    content = builder.prepare(
        referenced_objects.get(data["instance"]["type"],
                               data["instance"]["id"]),
        data["full_instance_content"])

    # pop out unused object_people field out of mapping_list_fields
    if 'mapping_list_fields' in content:
      content['mapping_list_fields'].pop('object_people', None)
      content['mapping_list_fields'].pop('task_group_objects', None)
    return content
Exemplo n.º 7
0
 def prepare(self, data):
     data = super(FullInstanceContentFased, self).prepare(data)
     return builder.prepare(
         referenced_objects.get(data["instance"]["type"],
                                data["instance"]["id"]),
         data["full_instance_content"])
Exemplo n.º 8
0
 def prepare(self, data):
   data = super(FullInstanceContentFased, self).prepare(data)
   return builder.prepare(
       referenced_objects.get(data["instance"]["type"],
                              data["instance"]["id"]),
       data["full_instance_content"])