def put(self, request, group_id, pk, format=None): """Add or update member in group. Args: request: Django Rest Framework request object group_id: ID of group pk: ID of user format: pattern for Web APIs Return: """ notification = NotificationViewList() member = self.get_member(group_id, pk) member.role = 1 member.save() data_json = {} data = {} data_json['target_id'] = group_id data_json['target_type'] = ContentType.objects.get( model='group', app_label='group').id data_json['text'] = 'approved your request to join the group' data['type'] = 'group' data['action'] = 'approve' data['group_id'] = group_id data['group_name'] = Group.objects.get(id=group_id).name json_data = json.dumps(data) notification.add(request.user, data_json, User.objects.filter(id=pk), ContentType.objects.get(model='groupmember'), json.dumps({}), json_data) return Response(status=status.HTTP_201_CREATED)
def put(self, request, other_user_id, format=None): """Edit user to user relationship. Args: request: Django Rest Framework request object. other_user_id: ID of user profile. format: pattern for Web APIs. Return: """ notification = NotificationViewList() try: friend = FriendshipRequest.objects.get(from_user=self.get_user(other_user_id), to_user=request.user) friend.accept() except Exception as inst: print type(inst) # the exception instance print inst # __str__ allows args to be printed directly raise Http404 data_json = {} data_json['target_id'] = other_user_id data_json['target_type'] = ContentType.objects.get(model='user').id data_json['text'] = 'accepted your friend request' notification.add(self.request.user, data_json, User.objects.filter(id=other_user_id), ContentType.objects.get(model='friendshiprequest'), json.dumps({}), json.dumps({})) return Response(Friend.objects.are_friends(request.user, self.get_user(other_user_id)))
def put(self, request, other_user_id, format=None): """Edit user to user relationship. Args: request: Django Rest Framework request object. other_user_id: ID of user profile. format: pattern for Web APIs. Return: """ notification = NotificationViewList() try: friend = FriendshipRequest.objects.get( from_user=self.get_user(other_user_id), to_user=request.user) friend.accept() except Exception as inst: print type(inst) # the exception instance print inst # __str__ allows args to be printed directly raise Http404 data_json = {} data_json['target_id'] = other_user_id data_json['target_type'] = ContentType.objects.get(model='user').id data_json['text'] = 'accepted your friend request' notification.add(self.request.user, data_json, User.objects.filter(id=other_user_id), ContentType.objects.get(model='friendshiprequest'), json.dumps({}), json.dumps({})) return Response( Friend.objects.are_friends(request.user, self.get_user(other_user_id)))
def post(self, request, group_id, format=None): """Create new post to the system. Args: request: Django Rest Framework request object. group_id: group id that we going to post to. format: pattern for Web APIs. Return: """ serializer = GroupPostSerializer(data=request.data) notification = NotificationViewList() parent_id = None if Group.objects.get(id=group_id).parent is not None: parent_id = Group.objects.get(id=group_id).parent.id if serializer.is_valid(): if self.request.user.id in GroupMember.objects.filter( group_id__in=[group_id, parent_id], role__gt=0 ).values_list('user_id', flat=True): if self.request.user.is_authenticated(): request.data['target_type'] = ContentType.objects.get( model='group', app_label='group').id request.data['target_id'] = group_id target = Group.objects.get(id=request.data['target_id']) serializer.save( user=User.objects.get( id=self.request.user.id), target_id=group_id, target_type=ContentType.objects.get( model='group', app_label='group'), target_name=target.name ) data = {} data['type'] = 'group' data['group_id'] = group_id data['group_name'] = Group.objects.get(id=group_id).name json_data = json.dumps(data) notification.add( request.user, request.data, User.objects.filter( id__in=GroupMember.objects.values( 'user' ).filter(group_id=group_id)), ContentType.objects.get(model='post'), JSONRenderer().render(serializer.data), json_data ) return Response( serializer.data, status=status.HTTP_201_CREATED ) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): """Post comment to a post. Args: request: Django Rest Framework request object. format: pattern for Web APIs. Return: """ serializer = CommentSerializer(data=request.data) notification = NotificationViewList() if serializer.is_valid(): if self.request.user.is_authenticated(): post = Post.objects.get(id=request.data["post"]) request.data["target_type"] = ContentType.objects.get(model="user").id request.data["target_id"] = request.data["post"] comment = serializer.save(user=User.objects.get(id=self.request.user.id)) if post.allow_submission and "file" in self.request.FILES: comment.file = self.request.FILES.get("file") comment.save() data = {} if post.target_type == ContentType.objects.get(model="group", app_label="group"): data["type"] = "group" data["group_id"] = post.target_id data["group_name"] = Group.objects.get(id=post.target_id).name if post.target_type == ContentType.objects.get(model="event"): data["type"] = "event" data["event_id"] = post.target_id data["event_name"] = Event.objects.get(id=post.target_id).name if post.target_type == ContentType.objects.get(model="user"): data["type"] = "user" if post.target_id is not None: data["user_id"] = post.target_id data["firstname"] = User.objects.get(id=post.target_id).first_name data["lastname"] = User.objects.get(id=post.target_id).last_name else: data["user_id"] = None json_data = json.dumps(data) notification.add( request.user, request.data, define_receiver(request.data["post"]), ContentType.objects.get(model="comment"), JSONRenderer().render(serializer.data).decode("utf-8"), json_data, ) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def create(self, *args, **kwargs): """create a new member to group. Args: Return: A response containing data of a group. """ notification = NotificationViewList() if not self.request.user.is_authenticated(): raise NotAuthenticated try: group = Group.objects.get(id=self.get_group_id()) except Group.DoesNotExist: raise NotFound('no such group') member, created = GroupMember.objects.get_or_create( group=Group.objects.get(id=self.get_group_id), user=User.objects.get(id=self.request.user.id), defaults={ 'role': 0 } ) data_json = {} data = {} data_json['target_id'] = self.get_group_id() data_json['target_type'] = ContentType.objects.get( model='group', app_label='group').id data_json['text'] = 'requested to join a group' data['type'] = 'group' data['action'] = 'request' data['group_id'] = self.get_group_id() data['group_name'] = group.name json_data = json.dumps(data) notification.add( self.request.user, data_json, User.objects.filter( id__in=GroupMember.objects.values( 'user' ).filter(group_id=self.get_group_id(), role=2)), ContentType.objects.get(model='groupmember'), json.dumps({}), json_data ) if not created: raise ValidationError('request already exists') return Response(GroupMemberSerializer(member).data)
def post(self, request, group_id, format=None): """Create new post to the system. Args: request: Django Rest Framework request object. group_id: group id that we going to post to. format: pattern for Web APIs. Return: """ serializer = GroupPostSerializer(data=request.data) notification = NotificationViewList() parent_id = None if Group.objects.get(id=group_id).parent is not None: parent_id = Group.objects.get(id=group_id).parent.id if serializer.is_valid(): if self.request.user.id in GroupMember.objects.filter( group_id__in=[group_id, parent_id], role__gt=0).values_list('user_id', flat=True): if self.request.user.is_authenticated(): request.data['target_type'] = ContentType.objects.get( model='group', app_label='group').id request.data['target_id'] = group_id target = Group.objects.get(id=request.data['target_id']) serializer.save( user=User.objects.get(id=self.request.user.id), target_id=group_id, target_type=ContentType.objects.get(model='group', app_label='group'), target_name=target.name) data = {} data['type'] = 'group' data['group_id'] = group_id data['group_name'] = Group.objects.get(id=group_id).name json_data = json.dumps(data) notification.add( request.user, request.data, User.objects.filter( id__in=GroupMember.objects.values('user').filter( group_id=group_id)), ContentType.objects.get(model='post'), JSONRenderer().render(serializer.data), json_data) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): """Save post into database and create notification object. Args: request: Django Rest Framework request object. format: pattern for Web APIs. Return: """ serializer = PostSerializer(data=request.data) notification = NotificationViewList() if serializer.is_valid(): if self.request.user.is_authenticated(): try: target = User.objects.get(id=request.data["target_id"]) serializer.save( user=User.objects.get(id=self.request.user.id), target_name=(target.first_name + " " + target.last_name), ) except User.DoesNotExist: serializer.save(user=User.objects.get(id=self.request.user.id), target_name="") data = {} data["type"] = "user" if request.data["target_id"] is not None: data["user_id"] = request.data["target_id"] data["firstname"] = User.objects.get(id=request.data["target_id"]).first_name data["lastname"] = User.objects.get(id=request.data["target_id"]).last_name else: data["user_id"] = None json_data = json.dumps(data) if request.data["target_id"] is not None: notification.add( request.user, request.data, User.objects.filter( id__in=Friend.objects.filter(from_user=self.request.user.id).values("to_user") ), ContentType.objects.get(model="post"), JSONRenderer().render(serializer.data).decode("utf-8"), json_data, ) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, event_id, format=None): """Create new post to the system. Args: request: Django Rest Framework request object. event_id: event id that we going to post to. format: pattern for Web APIs. Return: A response. """ serializer = EventPostSerializer(data=request.data) notification = NotificationViewList() if serializer.is_valid(): if self.request.user.is_authenticated(): request.data['target_type'] = ContentType.objects.get( model='event').id request.data['target_id'] = event_id target = Event.objects.get(id=request.data['target_id']) serializer.save( user=User.objects.get(id=self.request.user.id), target_id=event_id, target_type=ContentType.objects.get(model='event'), target_name=target.name) data = {} data['type'] = 'event' data['event_id'] = event_id data['event_name'] = Event.objects.get(id=event_id).name json_data = json.dumps(data) notification.add( request.user, request.data, User.objects.filter( id__in=EventMember.objects.filter( event=Event.objects.get( id=event_id), role__in=[1, 2]).values( 'user')), ContentType.objects.get(model='post'), JSONRenderer().render(serializer.data), json_data) return Response( serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, event_id, pk, role=0, format=None): """Add or update member in event. Args: request: Django Rest Framework request object event_id: ID of event pk: ID of user format: pattern for Web APIs Return: A response. """ notification = NotificationViewList() member = self.get_member(event_id, pk) if member is None: member = EventMember.objects.create( event=Event.objects.get(id=event_id), user=User.objects.get(id=pk), role=role ) data_json = {} data_json['target_id'] = event_id data_json['target_type'] = ContentType.objects.get( model='event').id data_json['text'] = 'invited you to an event' data = {} data['type'] = 'event' data['action'] = 'request' data['event_id'] = event_id data['event_name'] = Event.objects.get(id=event_id).name json_data = json.dumps(data) notification.add( request.user, data_json, User.objects.filter(id=pk), ContentType.objects.get(model='eventmember'), json.dumps({}), json_data ) member.role = role member.save() return Response(status=status.HTTP_201_CREATED)
def create(self, *args, **kwargs): """create a new member to group. Args: Return: A response containing data of a group. """ notification = NotificationViewList() if not self.request.user.is_authenticated(): raise NotAuthenticated try: group = Group.objects.get(id=self.get_group_id()) except Group.DoesNotExist: raise NotFound('no such group') member, created = GroupMember.objects.get_or_create( group=Group.objects.get(id=self.get_group_id), user=User.objects.get(id=self.request.user.id), defaults={'role': 0}) data_json = {} data = {} data_json['target_id'] = self.get_group_id() data_json['target_type'] = ContentType.objects.get( model='group', app_label='group').id data_json['text'] = 'requested to join a group' data['type'] = 'group' data['action'] = 'request' data['group_id'] = self.get_group_id() data['group_name'] = group.name json_data = json.dumps(data) notification.add( self.request.user, data_json, User.objects.filter(id__in=GroupMember.objects.values( 'user').filter(group_id=self.get_group_id(), role=2)), ContentType.objects.get(model='groupmember'), json.dumps({}), json_data) if not created: raise ValidationError('request already exists') return Response(GroupMemberSerializer(member).data)
def post(self, request, event_id, format=None): """Create new post to the system. Args: request: Django Rest Framework request object. event_id: event id that we going to post to. format: pattern for Web APIs. Return: A response. """ serializer = EventPostSerializer(data=request.data) notification = NotificationViewList() if serializer.is_valid(): if self.request.user.is_authenticated(): request.data['target_type'] = ContentType.objects.get( model='event').id request.data['target_id'] = event_id target = Event.objects.get(id=request.data['target_id']) serializer.save( user=User.objects.get(id=self.request.user.id), target_id=event_id, target_type=ContentType.objects.get(model='event'), target_name=target.name) data = {} data['type'] = 'event' data['event_id'] = event_id data['event_name'] = Event.objects.get(id=event_id).name json_data = json.dumps(data) notification.add( request.user, request.data, User.objects.filter(id__in=EventMember.objects.filter( event=Event.objects.get( id=event_id), role__in=[1, 2]).values('user')), ContentType.objects.get(model='post'), JSONRenderer().render(serializer.data), json_data) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, event_id, pk, role=0, format=None): """Add or update member in event. Args: request: Django Rest Framework request object event_id: ID of event pk: ID of user format: pattern for Web APIs Return: A response. """ notification = NotificationViewList() member = self.get_member(event_id, pk) if member is None: member = EventMember.objects.create( event=Event.objects.get(id=event_id), user=User.objects.get(id=pk), role=role) data_json = {} data_json['target_id'] = event_id data_json['target_type'] = ContentType.objects.get( model='event').id data_json['text'] = 'invited you to an event' data = {} data['type'] = 'event' data['action'] = 'request' data['event_id'] = event_id data['event_name'] = Event.objects.get(id=event_id).name json_data = json.dumps(data) notification.add(request.user, data_json, User.objects.filter(id=pk), ContentType.objects.get(model='eventmember'), json.dumps({}), json_data) member.role = role member.save() return Response(status=status.HTTP_201_CREATED)
def put(self, request, group_id, pk, format=None): """Add or update member in group. Args: request: Django Rest Framework request object group_id: ID of group pk: ID of user format: pattern for Web APIs Return: """ notification = NotificationViewList() member = self.get_member(group_id, pk) member.role = 1 member.save() data_json = {} data = {} data_json['target_id'] = group_id data_json['target_type'] = ContentType.objects.get( model='group', app_label='group').id data_json['text'] = 'approved your request to join the group' data['type'] = 'group' data['action'] = 'approve' data['group_id'] = group_id data['group_name'] = Group.objects.get(id=group_id).name json_data = json.dumps(data) notification.add( request.user, data_json, User.objects.filter(id=pk), ContentType.objects.get(model='groupmember'), json.dumps({}), json_data ) return Response(status=status.HTTP_201_CREATED)