コード例 #1
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def post(self, *args, **kwargs):
        groupname = kwargs['groupname']
        query = Group.query(Group.name == groupname)
        groups = query.fetch()
        if len(groups) == 1:
            thisGroup = groups[0]
        else:
            thisGroup = None


        user = self.user

        print(user)
        if user:
            memberships = GroupMembership.query(GroupMembership.userKey == user.key,
                                                GroupMembership.groupKey == thisGroup.key).fetch()
            if len(memberships) == 1:
                membership = memberships[0]
                print(membership)
            else:
                self.display_message('You can only post if you\'re a member')

                return

        if user:
            print(self.request.get('message'))
            newMessage = Message(parent=thisGroup.key, userKey=user.key, text=self.request.get('message'))
            newMessage.put()

        self.redirect('/{groupname}/show'.format(groupname = groupname))
コード例 #2
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def check_membership(self, *args, **kwargs):

        logging.info('check_group_membership')

        thisUser = self.user
        thisGroup = self.group

        query = GroupMembership.query(GroupMembership.userKey==thisUser.key,
                                      GroupMembership.groupKey==thisGroup.key)
        memberships = query.fetch()

        if len(memberships) == 0:
            logging.info('"{user}" is not a member of group "{groupname}"'.format(user=thisUser.name, groupname=thisGroup.name))
            self.display_message('You are not a member of this group')
            return
        elif len(memberships) > 1:
            logging.info('"{user}" returns multiple memberships of group "{groupname}"'.format(user=thisUser.name, groupname=thisGroup.name))
            self.display_message('Something went wrong with your membership')
            return

        print(memberships)
        print(len(memberships))
        self.group_membership = memberships[0]

        if handler:
            return handler(self, *args, **kwargs)

        return handler#
コード例 #3
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def get(self, *args, **kwargs):

        params = dict()
        params['group'] = self.group

        if self.group_membership.isPending == True:
            self.display_message('Dein Aufnahmeantrag fuer diese Gruppe wurde noch nicht bearbeitet')
            return

        messagesQuery = Message.query(ancestor=self.group.key).order(Message.created)
        messages = messagesQuery.fetch()
        userKeys = []

        for message in messages:
            userKeys.append(message.userKey)

        users = ndb.get_multi(userKeys)
        params['messages'] = zip(messages, users)
        params['groupmembership'] = self.group_membership

        if self.group_membership.isModerator:
            requestsQuery = GroupMembership.query(GroupMembership.groupKey == self.group.key,
                                                  GroupMembership.isPending == True)

            requests = requestsQuery.fetch()
            requestingUserKeys = []
            for request in requests:
                requestingUserKeys.append(request.userKey)

            requestingUsers = ndb.get_multi(requestingUserKeys)
            print(requestingUsers)
            params['member_requests'] = requestingUsers


        self.render_template('showgroup.html', params=params)
コード例 #4
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def get(self, *args, **kwargs):

        # Check if user already has a membership relation with this group
        query = GroupMembership.query(GroupMembership.userKey == self.user.key,
                                      GroupMembership.groupKey == self.group.key)
        membership = query.fetch()

        # If there is no membership for this user, create one
        if len(membership) == 0:
            newGroupMembership = GroupMembership()
            newGroupMembership.userKey = self.user.key
            newGroupMembership.groupKey = self.group.key
            newGroupMembership.isAdministrator = False
            newGroupMembership.isModerator = False
            newGroupMembership.isPending = True
            newGroupMembership.put()
            self.display_message('Mitgliedschaft wurde beantragt')
        else:
            self.display_message('Du hast bereits eine Mitgliedschaft beantragt')
コード例 #5
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def get(self, *args, **kwargs):

        requestingUser = self.user_model.get_by_id(int(kwargs['user_id']))

        requestingUsersMembershipQuery = GroupMembership.query(GroupMembership.groupKey == self.group.key,
                                                               GroupMembership.userKey == requestingUser.key)

        requestingUsersMembership = requestingUsersMembershipQuery.fetch()

        if len(requestingUsersMembership) == 1:
            if kwargs['action'] == 'refuse':
                requestingUsersMembership[0].key.delete()
            elif kwargs['action'] == 'accept':
                requestingUsersMembership[0].isPending = False
                requestingUsersMembership[0].put()

        self.redirect('/{groupname}/show'.format(groupname = self.group.name))
コード例 #6
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def get(self):
        groupsQuery = Group.query()
        groups = groupsQuery.fetch()

        membershipQuery = GroupMembership.query(GroupMembership.userKey==self.user.key)
        memberships = membershipQuery.fetch()


        membershipStatus = []

        for group in groups:

            foundMembership = False
            for membership in memberships:
                if membership.groupKey == group.key:
                    foundMembership = True
                    break

            membershipStatus.append(foundMembership)


        params = {'groupsAndMemberships': zip(groups, membershipStatus)}

        self.render_template('listgroups.html', params=params)
コード例 #7
0
ファイル: main.py プロジェクト: fi4sk0/supertinygroupware
    def post(self):
        name = self.request.get('name')
        description = self.request.get('description')
        privateDescription = self.request.get('private_description')

        # Check if group name already exists
        existingGroups = Group.query(Group.name==name).fetch()
        if len(existingGroups) > 0:
            self.display_message('A group with this name already exists')
            return


        newGroup = Group(name=name, description=description, privateDescription=privateDescription)
        newGroup.put()

        newGroupMembership = GroupMembership()
        newGroupMembership.groupKey = newGroup.key
        newGroupMembership.userKey = self.user.key
        newGroupMembership.isAdministrator = True
        newGroupMembership.isModerator = True
        newGroupMembership.put()

        self.redirect(self.uri_for('home'))