Пример #1
0
    def make_model(self, scope, hashkey, **kwargs):
        from app import db

        for arg in self.required_fields:
            if arg not in kwargs:
                raise InvalidArgumentsException()

        parent = kwargs.pop("parent", None)

        if "settings" in kwargs:
            try:
                kwargs["settings"] = json.loads(kwargs["settings"])
            except Exception:
                pass

        context, mod = get_context_for_scope(scope, hashkey)
        manager = ResourceManager(context)
        model = manager.create_resource(**kwargs)

        # If the resource specifies its parent, then automatically setup the link.
        if parent:
            parent_model = self.get_resource(parent)
            if parent_model:
                parent_model.related.append(model)
                db.session.commit()
        return model
Пример #2
0
    def make_model(self, scope, hashkey, **kwargs):
        from app import db
        for arg in self.required_fields:
            if arg not in kwargs:
                raise InvalidArgumentsException()

        parent = kwargs.pop('parent', None)

        if 'settings' in kwargs:
            try:
                kwargs['settings'] = json.loads(kwargs['settings'])
            except Exception:
                pass

        context, mod = get_context_for_scope(scope, hashkey)
        manager = ResourceManager(context)
        model = manager.create_resource(**kwargs)

        # If the resource specifies its parent, then automatically setup the link.
        if parent:
            parent_model = self.get_resource(parent)
            if parent_model:
                parent_model.related.append(model)
                db.session.commit()
        return model
Пример #3
0
 def delete(self, scope, hashkey, resource_hashkey):
     from app import db
     parent = request.args.get('parent', None)
     context, mod = get_context_for_scope(scope, hashkey)
     manager = ResourceManager(context)
     manager.delete_resource(resource_hashkey)
     if parent:
         parent_model = self.get_resource(parent)
         if parent_model:
             parent_model.related.remove()
             db.session.commit()
     return {}
Пример #4
0
    def delete(self, scope, hashkey, resource_hashkey):
        from app import db

        parent = request.args.get("parent", None)
        context, mod = get_context_for_scope(scope, hashkey)
        manager = ResourceManager(context)
        manager.delete_resource(resource_hashkey)
        if parent:
            parent_model = self.get_resource(parent)
            if parent_model:
                parent_model.related.remove()
                db.session.commit()
        return {}
Пример #5
0
    def post(self, scope, hashkey):
        data = get_data()
        positions = data.pop("positions", None)
        if positions is None:
            return {}, 400

        context, mod = get_context_for_scope(scope, hashkey)
        row = 0
        for (i, pos) in enumerate(positions):
            manager = ResourceManager(context)
            manager.update_model(pos["hashkey"], dict(layout=pos["layout"]))
            row += self.get_resource(pos["hashkey"]).layout.sizeX
        return {}, 200
Пример #6
0
    def post(self, scope, hashkey):
        data = get_data()
        positions = data.pop('positions', None)
        if positions is None:
            return {}, 400

        context, mod = get_context_for_scope(scope, hashkey)
        row = 0
        for (i, pos) in enumerate(positions):
            manager = ResourceManager(context)
            manager.update_model(pos['hashkey'], dict(layout=pos['layout']))
            row += self.get_resource(pos['hashkey']).layout.sizeX
        return {}, 200
Пример #7
0
 def convert(self, scope, hashkey, resource, find_related=False):
     if resource.user is not None:
         owner_key = resource.user.hashkey
         res_scope = "user"
     elif resource.group is not None:
         owner_key = resource.group.hashkey
         res_scope = "group"
     else:
         raise InvalidScopeException()
     permissions = []
     for p in resource.permissions:
         if p.user is not None:
             key = p.user.hashkey
         elif p.group is not None:
             key = p.group.hashkey
         else:
             key = None
         permissions.append(dict(
             public=p.public,
             hashkey=key,
             scope=p.scope
         ))
     layout = dict(
         row=resource.layout.row,
         col=resource.layout.col,
         sizeX=resource.layout.sizeX,
         sizeY=resource.layout.sizeY
     )
     vals = dict(
         hashkey=resource.hashkey,
         name=resource.name,
         type=resource.type,
         settings=resource.settings,
         owner_scope=res_scope,
         owner_hashkey=owner_key,
         views=[v.hashkey for v in resource.views],
         permissions=permissions,
         current_view=resource.current_view,
         parents=[r.hashkey for r in resource.parents],
         layout=layout
     )
     if find_related:
         related = []
         context, mod = get_context_for_scope(scope, hashkey)
         manager = ResourceManager(context)
         for r in resource.related:
             if manager.check_permissions(r, "view"):
                 related.append(r)
         vals['related'] = [self.convert(scope, hashkey, r, find_related=find_related) for r in related]
     return vals
Пример #8
0
 def convert(self, scope, hashkey, resource, find_related=False):
     if resource.user is not None:
         owner_key = resource.user.hashkey
         res_scope = "user"
     elif resource.group is not None:
         owner_key = resource.group.hashkey
         res_scope = "group"
     else:
         raise InvalidScopeException()
     permissions = []
     for p in resource.permissions:
         if p.user is not None:
             key = p.user.hashkey
         elif p.group is not None:
             key = p.group.hashkey
         else:
             key = None
         permissions.append(dict(public=p.public, hashkey=key, scope=p.scope))
     layout = dict(
         row=resource.layout.row, col=resource.layout.col, sizeX=resource.layout.sizeX, sizeY=resource.layout.sizeY
     )
     vals = dict(
         hashkey=resource.hashkey,
         name=resource.name,
         type=resource.type,
         settings=resource.settings,
         owner_scope=res_scope,
         owner_hashkey=owner_key,
         views=[v.hashkey for v in resource.views],
         permissions=permissions,
         current_view=resource.current_view,
         parents=[r.hashkey for r in resource.parents],
         layout=layout,
     )
     if find_related:
         related = []
         context, mod = get_context_for_scope(scope, hashkey)
         manager = ResourceManager(context)
         for r in resource.related:
             if manager.check_permissions(r, "view"):
                 related.append(r)
         vals["related"] = [self.convert(scope, hashkey, r, find_related=find_related) for r in related]
     return vals
Пример #9
0
 def get(self, scope, hashkey, resource_hashkey):
     context, mod = get_context_for_scope(scope, hashkey)
     manager = ResourceManager(context)
     model, model_settings = manager.get_resource(resource_hashkey)
     return self.convert(scope, hashkey, model, find_related=True)
Пример #10
0
 def patch(self, scope, hashkey, resource_hashkey):
     settings = get_data()
     context, mod = get_context_for_scope(scope, hashkey)
     manager = ResourceManager(context)
     model = manager.update_resource(resource_hashkey, settings)
     return self.convert(scope, hashkey, model)
Пример #11
0
 def get(self, scope, hashkey, resource_hashkey):
     context, mod = get_context_for_scope(scope, hashkey)
     manager = ResourceManager(context)
     model, model_settings = manager.get_resource(resource_hashkey)
     return self.convert(scope, hashkey, model, find_related=True)
Пример #12
0
 def patch(self, scope, hashkey, resource_hashkey):
     settings = get_data()
     context, mod = get_context_for_scope(scope, hashkey)
     manager = ResourceManager(context)
     model = manager.update_resource(resource_hashkey, settings)
     return self.convert(scope, hashkey, model)