示例#1
0
文件: views.py 项目: Trent21/social-7
    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)
示例#2
0
文件: views.py 项目: peraphola/social
    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)))
示例#3
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)))
示例#4
0
文件: views.py 项目: peraphola/social
    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)
示例#5
0
文件: views.py 项目: peraphola/social
    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)
示例#6
0
文件: views.py 项目: peraphola/social
    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)
示例#7
0
文件: views.py 项目: Trent21/social-7
    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)
示例#8
0
文件: views.py 项目: peraphola/social
    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)
示例#9
0
文件: views.py 项目: peraphola/social
 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)
示例#10
0
文件: views.py 项目: peraphola/social
    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)
示例#11
0
文件: views.py 项目: Trent21/social-7
    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)
示例#12
0
文件: views.py 项目: Trent21/social-7
 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)
示例#13
0
文件: views.py 项目: Trent21/social-7
    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)
示例#14
0
文件: views.py 项目: peraphola/social
    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)