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 }, )
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"))
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, })
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, })
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, })
def process_result_value(self, value, dialect): from mitama.models import Group if value == None: return None else: group = Group.retrieve(value) return group
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, }, )
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, })
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
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 })
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"))