Esempio n. 1
0
    def update(self, req):
        template = self.view.get_template("group/update.html")
        group = Group.retrieve(screen_name=req.params["id"])

        groups = list()
        for g in Group.list():
            if not (group.is_ancestor(g) or group.is_descendant(g)
                    or g == group):
                groups.append(g)
        users = list()
        error = ""
        message = ""
        for u in User.list():
            if not group.is_in(u):
                users.append(u)
        if req.method == "POST":
            try:
                form = GroupUpdateForm(req.post())
                icon = resize_icon(
                    form["icon"]) if form["icon"] is not None else group.icon
                group.screen_name = form["screen_name"]
                group.name = form["name"]
                group.parent = Group.retrieve(
                    form["parent"]) if form["parent"] is not None else None
                for role in form["roles"]:
                    group.roles.append(Role.retrieve(screen_name=role))
                group.icon = icon
                group.users = [User.retrieve(user) for user in form['users']]
                if form['new_user'] is not None:
                    group.users.append(User.retrieve(form['new_user']))
                for user, roles in form['inner_roles'].items():
                    rel = UserGroup.retrieve(group=group,
                                             user=User.retrieve(user))
                    rel.roles = [InnerRole.retrieve(role) for role in roles]
                group.update()
                message = "変更を保存しました"
            except ValidationError as err:
                error = str(err)
        roles = Role.list()
        inner_roles = InnerRole.list()
        return Response.render(
            template,
            {
                "message": message,
                "error": error,
                "group": group,
                "all_groups": groups,
                "all_users": users,
                "screen_name": group.screen_name,
                "name": group.name,
                "icon": group.icon,
                "roles": roles,
                "inner_roles": inner_roles
            },
        )
Esempio n. 2
0
 def remove_group(self, req):
     try:
         group = Group.retrieve(screen_name=req.params["id"])
         child = Group.retrieve(req.params["gid"])
         group.remove(child)
     except Exception as err:
         print(err)
         pass
     finally:
         return Response.redirect(
             self.app.convert_url("/groups/" + group.screen_name +
                                  "/settings"))
Esempio n. 3
0
 def retrieve(self, request):
     try:
         id = request.params["id"]
         if id.isdigit():
             group = Group.retrieve(int(id))
         else:
             group = Group.retrieve(screen_name=id)
         return Response.json(group.to_dict())
     except KeyError as err:
         error = err
         return Response.json({
             "error": err.__class__.__name__,
             "message": err.message,
             "args": err.args,
         })
Esempio n. 4
0
 def delete(self, request):
     try:
         id = request.params["id"]
         if id.isdigit():
             group = Group.retrieve(int(id))
         else:
             group = Group.retrieve(screen_name=id)
         group.delete()
         return Response.json({"_id": group._id})
     except Exception as err:
         error = err
         return Response.json({
             "error": err.__class__.__name__,
             "message": err.message,
             "args": err.args,
         })
Esempio n. 5
0
 def icon(self, request):
     try:
         id = request.params["id"]
         if id.isdigit():
             group = Group.retrieve(int(id))
         else:
             group = Group.retrieve(screen_name=id)
         f = magic.Magic(mime=True, uncompress=True)
         mime = f.from_buffer(group.icon)
         return Response(body=group.icon, content_type=mime)
     except KeyError as err:
         return Response.error({
             "error": err.__class__.__name__,
             "message": err.message,
             "args": err.args,
         })
Esempio n. 6
0
    def process_result_value(self, value, dialect):
        from mitama.models import Group

        if value == None:
            return None
        else:
            group = Group.retrieve(value)
            return group
Esempio n. 7
0
 def retrieve(self, req):
     template = self.view.get_template("group/retrieve.html")
     group = Group.retrieve(screen_name=req.params["id"])
     return Response.render(
         template,
         {
             "group": group,
         },
     )
Esempio n. 8
0
 def update(self, request):
     try:
         post = request.post()
         id = request.params["id"]
         if id.isdigit():
             group = Group.retrieve(int(id))
         else:
             group = Group.retrieve(screen_name=id)
         if "screen_name" in post:
             group.screen_name = post["screen_name"]
         if "name" in post:
             group.name = post["name"]
         group.update()
         return Response.json(group.to_dict())
     except KeyError as err:
         error = err
         return Response.json({
             "error": err.__class__.__name__,
             "message": err.message,
             "args": err.args,
         })
Esempio n. 9
0
    def process_result_value(self, value, dialect):
        prefix = value.split("-")[0]
        if prefix == "user":
            from mitama.models import User

            node = User.retrieve(value)
        elif prefix == "group":
            from mitama.models import Group

            node = Group.retrieve(value)
        else:
            raise TypeError("Invalid ID format")
        return node
Esempio n. 10
0
 def create(self, req):
     template = self.view.get_template("group/create.html")
     groups = Group.list()
     error = ""
     if req.method == "POST":
         try:
             form = GroupCreateForm(req.post())
             group = Group()
             group.name = form["name"]
             group.screen_name = form["screen_name"]
             group.icon = resize_icon(form["icon"])
             group.create()
             if form["parent"] is not None:
                 Group.retrieve(form["parent"]).append(group)
             group.append(req.user)
             return Response.redirect(self.app.convert_url("/groups"))
         except ValidationError as err:
             error = str(err)
     return Response.render(template, {
         "groups": groups,
         "icon": load_noimage_group(),
         "error": error
     })
Esempio n. 11
0
 def append(self, req):
     form = req.post()
     try:
         group = Group.retrieve(screen_name=req.params["id"])
         nodes = list()
         if "user" in form:
             for uid in form.getlist("user"):
                 try:
                     nodes.append(User.retrieve(uid))
                 except Exception:
                     pass
         if "group" in form:
             for gid in form.getlist("group"):
                 try:
                     nodes.append(Group.retrieve(gid))
                 except Exception:
                     pass
         group.append_all(nodes)
     except Exception:
         pass
     finally:
         return Response.redirect(
             self.app.convert_url("/groups/" + group.screen_name +
                                  "/settings"))