Exemple #1
0
    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)
Exemple #2
0
    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)))
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
 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)
Exemple #6
0
    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)