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))
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#
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)
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')
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))
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)
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'))