Ejemplo n.º 1
0
 def supergroup(self, group_id, supergroup_id, action):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to("/groups")
     if action == "remove":
         Groups.get(group_id).remove_supergroup(supergroup_id)
     return redirect_to(url_for("/groups/%s" % group_id))
Ejemplo n.º 2
0
 def supergroup(self, group_id, supergroup_id, action):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to('/groups')
     if action == 'remove':
         Groups.get(group_id).remove_supergroup(supergroup_id)
     return redirect_to(url_for('/groups/%s' % group_id))
Ejemplo n.º 3
0
 def update_button(self, id, *a, **input):
     group = Groups.get(id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to("/groups")
     if group_fields.validate(input):
         Groups.update(id, **group_fields.evaluate())
         return redirect_to(url_for("/groups/%s" % id))
Ejemplo n.º 4
0
 def update_button(self, id, *a, **input):
     group = Groups.get(id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to('/groups')
     if group_fields.validate(input):
         Groups.update(id, **group_fields.evaluate())
         return redirect_to(url_for('/groups/%s' % id))
Ejemplo n.º 5
0
 def remove(self, group_id, relation, user_id):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to('/groups')
     if relation == 'member':
         Groups.get(group_id).remove_member(user_id)
     else:
         Groups.get(group_id).remove_subgroup(user_id)
     return redirect_to(url_for('/groups/%s' % group_id))
Ejemplo n.º 6
0
 def remove(self, group_id, relation, user_id):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to("/groups")
     if relation == "member":
         Groups.get(group_id).remove_member(user_id)
     else:
         Groups.get(group_id).remove_subgroup(user_id)
     return redirect_to(url_for("/groups/%s" % group_id))
Ejemplo n.º 7
0
 def add_subgroup_button(self, group_id, subgroup):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to("/groups")
     if subgroup in get_group_names():
         Groups.get(group_id).add_subgroup(subgroup)
         return redirect_to(url_for("/groups/%s" % group_id))
     else:
         error("unknown group  %s" % subgroup)
Ejemplo n.º 8
0
 def add_member_button(self, group_id, member):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to("/groups")
     if member in get_user_names():
         Groups.get(group_id).add_member(member)
         return redirect_to(url_for("/groups/%s" % group_id))
     else:
         error("unknown username %s" % member)
Ejemplo n.º 9
0
 def add_member_button(self, group_id, member):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to('/groups')
     if member in get_user_names():
         Groups.get(group_id).add_member(member)
         return redirect_to(url_for('/groups/%s' % group_id))
     else:
         error('unknown username %s' % member)
Ejemplo n.º 10
0
 def add_subgroup_button(self, group_id, subgroup):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to('/groups')
     if subgroup in get_group_names():
         Groups.get(group_id).add_subgroup(subgroup)
         return redirect_to(url_for('/groups/%s' % group_id))
     else:
         error('unknown group  %s' % subgroup)
Ejemplo n.º 11
0
def add_groups():
    try:
        data = request.get_json()
        g = Groups()
        for key in data.keys():
            setattr(g, key, data[key])
        g.save()
        return jsonify({"message": "Grupo cadastrado com sucesso!"})
    except Exception as e:
        return jsonify({"message": "Falhou ao cadastrar grupo: {}".format(e)})
Ejemplo n.º 12
0
    def delete(self, id, confirmed=False):
        group = Groups.get(id)
        if not can_edit(group):
            return redirect_to('/groups')

        if not confirmed:
            group = Groups.get(id)
            name = group.name
            return Page("""
                <H1>Delete Group</H1>
                Are you sure you want to delete <strong>%s</strong> ?<br><br>
                <dz:form confirmed=True><dz:button label="Yes, I'm sure. Please delete." name="DELETE_BUTTON">&nbsp;&nbsp;<a href="/groups/%s">cancel</a></form>""" % (name,id))
Ejemplo n.º 13
0
    def delete(self, id, confirmed=False):
        group = Groups.get(id)
        if not can_edit(group):
            return redirect_to('/groups')

        if not confirmed:
            group = Groups.get(id)
            name = group.name
            return Page("""
                <H1>Delete Group</H1>
                Are you sure you want to delete <strong>%s</strong> ?<br><br>
                <dz:form confirmed=True><dz:button label="Yes, I'm sure. Please delete." name="DELETE_BUTTON">&nbsp;&nbsp;<a href="/groups/%s">cancel</a></form>"""
                        % (name, id))
Ejemplo n.º 14
0
    def edit(self, id, **data):

        group = Groups.get(id)
        if not can_edit(group):
            return redirect_to("/groups")

        group_fields.update(data or group.__dict__)
        fields = group_fields.edit()
        group_names = get_group_names()

        page = Page("edit", locals().get)

        page.js = (
            """
        var known_group_names = %(group_names)s;

        $(function(){
            $( "#ADMIN" ).autocomplete({ source: known_group_names });
        })
        """
            % locals()
        )

        page.css = """ 
            .ui-menu-item { text-align: left; }
            div.content img.trash { border: none; margin: 0; }
            sdiv.content input { height: 30px; }
            """
        return page
Ejemplo n.º 15
0
    def show(self, id):     
        group = Groups.get(id)
        if not can_edit(group):
            return redirect_to('/groups')

        if group:
            show_group_fields.update(group.__dict__)

            user_names = get_user_names()
            group_names = get_group_names()

            if len(user_names) > 1000:
                user_names = [];

            js = """
            var known_user_names = %(user_names)s;
            var known_group_names = %(group_names)s;

            $(function(){
                $( "#member" ).autocomplete({ source: known_user_names });
                $( "#subgroup" ).autocomplete({ source: known_group_names });
            })
            """ % locals()

            page = Page('show', GroupFiller(id))
            page.js = js
            page.css = """ 
                .ui-menu-item { text-align: left; }
                div.content img.trash { border: none; margin: 0; }
                sdiv.content input { height: 30px; }
                """
            return page
        else:
            return Page(markdown('Groups\n====\nUnknown group'))
Ejemplo n.º 16
0
    def edit(self, id, **data):

        group = Groups.get(id)
        if not can_edit(group):
            return redirect_to('/groups')

        group_fields.update(data or group.__dict__)
        fields = group_fields.edit()
        group_names = get_group_names()

        page = Page('edit', locals().get)

        page.js = """
        var known_group_names = %(group_names)s;

        $(function(){
            $( "#ADMIN" ).autocomplete({ source: known_group_names });
        })
        """ % locals()

        page.css = """ 
            .ui-menu-item { text-align: left; }
            div.content img.trash { border: none; margin: 0; }
            sdiv.content input { height: 30px; }
            """
        return page
Ejemplo n.º 17
0
    def show(self, id):
        group = Groups.get(id)
        if not can_edit(group):
            return redirect_to('/groups')

        if group:
            show_group_fields.update(group.__dict__)

            user_names = get_user_names()
            group_names = get_group_names()

            if len(user_names) > 1000:
                user_names = []

            js = """
            var known_user_names = %(user_names)s;
            var known_group_names = %(group_names)s;

            $(function(){
                $( "#member" ).autocomplete({ source: known_user_names });
                $( "#subgroup" ).autocomplete({ source: known_group_names });
            })
            """ % locals()

            page = Page('show', GroupFiller(id))
            page.js = js
            page.css = """ 
                .ui-menu-item { text-align: left; }
                div.content img.trash { border: none; margin: 0; }
                sdiv.content input { height: 30px; }
                """
            return page
        else:
            return Page(markdown('Groups\n====\nUnknown group'))
Ejemplo n.º 18
0
    def __init__(self, id):
        def item_list(items, app, relation):
            count = 1
            lines = []
            items.sort(key=lambda a: a[1])
            for item, label in items:
                link = link_to(label, '/' + app + '/' + str(item))
                remove_url = url_for(str(id), relation, str(item), 'remove')
                trash = removal_icon(remove_url)
                lines.append('<tr><td>%s</td><td>%s</td></tr>' % (link, trash))
            rows = ''.join(lines)

            button_name = 'ADD_' + relation.upper() + '_BUTTON'

            return form() + """
                <input type=text class="text_field" id=%(relation)s name=%(relation)s size=20>&nbsp;
                <input type=submit class="field_button" value="Add" name="%(button_name)s"></form><br>

                <div class="group_relationships_list">
                    <table>
                    %(rows)s
                    </table>
                </div>
                """ % locals()

        group = Groups.get(id)
        self.id = id
        self.members = self.subgroups = self.authorizations = 'nada'
        self.fields = show_group_fields.show()
        self.name = 'name'
        self.members = item_list(group.members, 'users', 'member')
        self.subgroups = item_list(group.subgroups, 'groups', 'subgroup')
        items = [(r.user, r.activity, r.subject1, r.subject2, r.timestamp,
                  how_long_ago(r.timestamp)) for r in audit_log(group.name)]
        self.audit_log = browse(items,
                                labels=[
                                    'User', 'Activity', 'Subject1', 'Subject2',
                                    'Timestamp', 'When'
                                ])
        self.relations = fill(
            '{{', '}}', """
<table class="transparent" width=100%><tr>

<td width=33% valign=top>
<H2>Users</H2>
{{members}}
</td><td width=33% valign=top>

<H2>Includes</H2>
{{subgroups}}

</td><td width=33% valign=top>

</td></tr></table>

<br>
<br>
{{audit_log}}
        """, self)
Ejemplo n.º 19
0
 def delete(self, id, confirmed=False):
     if confirmed:
         group = Groups.get(id)
         if not (user.is_admin or group.admin in user.groups):
             return redirect_to("/groups")
         if group:
             group.delete()
             message("deleted %s" % group.name)
         return redirect_to(url_for("/groups"))
Ejemplo n.º 20
0
 def delete(self, id, confirmed=False):
     if confirmed:
         group = Groups.get(id)
         if not (user.is_admin or group.admin in user.groups):
             return redirect_to('/groups')
         if group:
             group.delete()
             message('deleted %s' % group.name)
         return redirect_to(url_for('/groups'))
Ejemplo n.º 21
0
def update_groups(id):
    try:
        data = request.get_json()
        g = Groups.objects(id=id).first()
        for key in data.keys():
            setattr(g, key, data[key])
        g.save()
        dados = {"message": "Atualizando o grupo ID: ".format(id)}
        return jsonify(dados)
    except Exception as e:
        return jsonify({"message": "Falhou ao atualizar: ".format(e)})
Ejemplo n.º 22
0
    def __init__(self, id):

        def item_list(items, app, relation):
            count = 1
            lines = []
            items.sort(key=lambda a: a[1])
            for item, label in items:
                link  = link_to(label,'/'+app+'/'+str(item))
                remove_url = url_for(str(id), relation, str(item), 'remove')
                trash = removal_icon(remove_url)
                lines.append('<tr><td>%s</td><td>%s</td></tr>' % ( link, trash))
            rows = ''.join(lines)

            button_name = 'ADD_' + relation.upper() + '_BUTTON'

            return form() + """
                <input type=text class="text_field" id=%(relation)s name=%(relation)s size=20>&nbsp;
                <input type=submit class="field_button" value="Add" name="%(button_name)s"></form><br>

                <div class="group_relationships_list">
                    <table>
                    %(rows)s
                    </table>
                </div>
                """ % locals()

        group = Groups.get(id)
        self.id = id
        self.members = self.subgroups = self.authorizations = 'nada' 
        self.fields = show_group_fields.show()
        self.name = 'name'
        self.members = item_list(group.members, 'users', 'member')
        self.subgroups = item_list(group.subgroups,'groups', 'subgroup')
        items = [(r.user,r.activity,r.subject1,r.subject2,r.timestamp,how_long_ago(r.timestamp)) for r in audit_log(group.name)]
        self.audit_log = browse(items,labels=['User','Activity','Subject1','Subject2','Timestamp','When'])
        self.relations = fill('{{','}}',"""
<table class="transparent" width=100%><tr>

<td width=33% valign=top>
<H2>Users</H2>
{{members}}
</td><td width=33% valign=top>

<H2>Includes</H2>
{{subgroups}}

</td><td width=33% valign=top>

</td></tr></table>

<br>
<br>
{{audit_log}}
        """,self)
Ejemplo n.º 23
0
    def index(self):
        actions = 'New',
        items = [(
            link_to(group.name or 'missing','/groups/%s'%group.groupid),
            group.descr,
            group.admin or '',
            ) for group in Groups.user_groups(not user.is_admin and user.groups)]
        content =  browse(items, labels=self.labels)

        # render content separately because markdown is slow for long tables
        p = page('<page_content>', title=self.collection_name, actions=actions)
        p.content = p.content.replace('<page_content>',content)

        return p
Ejemplo n.º 24
0
    def index(self):
        actions = 'New',

        cmd = 'select groupid, count(*) from dz_members a, dz_users b where a.userid=b.userid group by groupid'
        user_counts = dict(system.db(cmd))

        items = [(
            link_to(group.name or 'missing', '/groups/%s' % group.groupid),
            group.descr,
            user_counts.get(group.groupid, ''),
            group.admin or '',
        ) for group in Groups.user_groups(not user.is_admin and user.groups)]
        content = browse(items,
                         labels=self.labels,
                         footer='%d groups' % len(items))

        # render content separately because markdown is slow for long tables
        p = page('<page_content>', title=self.collection_name, actions=actions)
        p.content = p.content.replace('<page_content>', content)

        return p
Ejemplo n.º 25
0
    def index(self):
        actions = ("New",)

        cmd = "select groupid, count(*) from dz_members a, dz_users b where a.userid=b.userid group by groupid"
        user_counts = dict(system.db(cmd))

        items = [
            (
                link_to(group.name or "missing", "/groups/%s" % group.groupid),
                group.descr,
                user_counts.get(group.groupid, ""),
                group.admin or "",
            )
            for group in Groups.user_groups(not user.is_admin and user.groups)
        ]
        content = browse(items, labels=self.labels, footer="%d groups" % len(items))

        # render content separately because markdown is slow for long tables
        p = page("<page_content>", title=self.collection_name, actions=actions)
        p.content = p.content.replace("<page_content>", content)

        return p
Ejemplo n.º 26
0
def setUpModule() -> None:
    TransitionControllerTest.groups = Groups()
    pygame_mock.initialize_everything(TransitionControllerTest.groups)
Ejemplo n.º 27
0
    def __init__(self, id):
        def item_list(items, app, relation):
            count = 1
            lines = []
            items.sort(key=lambda a: a[1])
            for item, label in items:
                link = link_to(label, "/" + app + "/" + str(item))
                remove_url = url_for(str(id), relation, str(item), "remove")
                trash = removal_icon(remove_url)
                lines.append("<tr><td>%s</td><td>%s</td></tr>" % (link, trash))
            rows = "".join(lines)

            button_name = "ADD_" + relation.upper() + "_BUTTON"

            return (
                form()
                + """
                <input type=text class="text_field" id=%(relation)s name=%(relation)s size=20>&nbsp;
                <input type=submit class="field_button" value="Add" name="%(button_name)s"></form><br>

                <div class="group_relationships_list">
                    <table>
                    %(rows)s
                    </table>
                </div>
                """
                % locals()
            )

        group = Groups.get(id)
        self.id = id
        self.members = self.subgroups = self.authorizations = "nada"
        self.fields = show_group_fields.show()
        self.name = "name"
        self.members = item_list(group.members, "users", "member")
        self.subgroups = item_list(group.subgroups, "groups", "subgroup")
        items = [
            (r.user, r.activity, r.subject1, r.subject2, r.timestamp, how_long_ago(r.timestamp))
            for r in audit_log(group.name)
        ]
        self.audit_log = browse(items, labels=["User", "Activity", "Subject1", "Subject2", "Timestamp", "When"])
        self.relations = fill(
            "{{",
            "}}",
            """
<table class="transparent" width=100%><tr>

<td width=33% valign=top>
<H2>Users</H2>
{{members}}
</td><td width=33% valign=top>

<H2>Includes</H2>
{{subgroups}}

</td><td width=33% valign=top>

</td></tr></table>

<br>
<br>
{{audit_log}}
        """,
            self,
        )
Ejemplo n.º 28
0
 def add_supergroup_button(self, group_id, name):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to("/groups")
     Groups.get(group_id).add_supergroup(name)
     return redirect_to(url_for("/groups/%s" % group_id))
Ejemplo n.º 29
0
 def add_group_button(self, *a, **input):
     if group_fields.validate(input):
         id = Groups.insert(**group_fields.evaluate())
         return redirect_to(url_for('/groups/%s' % id))
Ejemplo n.º 30
0
 def add_group_button(self, *a, **input):
     if group_fields.validate(input):
         id = Groups.insert(**group_fields.evaluate())
         return redirect_to(url_for("/groups/%s" % id))
Ejemplo n.º 31
0
def select_groups(id):
    g = json.loads(Groups.objects(id=id).to_json())
    data = {"grupo": g}
    return jsonify(data)
Ejemplo n.º 32
0
def delete_groups(id):
    g = Groups.objects(id=id)
    g.delete()
    data = {"message": "Deletar grupo id: {}".format(id)}
    return jsonify(data)
Ejemplo n.º 33
0
 def add_supergroup_button(self, group_id, name):
     group = Groups.get(group_id)
     if not (user.is_admin or group.admin in user.groups):
         return redirect_to('/groups')
     Groups.get(group_id).add_supergroup(name)
     return redirect_to(url_for('/groups/%s' % group_id))
Ejemplo n.º 34
0
def setUpModule() -> None:
    pygame_mock.initialize_pygame()

    groups = Groups()
    timer = pygame_mock.MockTimer()
    model.initialize(groups, timer)