예제 #1
0
파일: chat.py 프로젝트: ProjetSigma/backend
    def add_member(self, request, pk=None):
        """
        Add an user in chat pk.
        ---
        omit_serializer: true
        parameters_strategy:
            form: replace
        parameters:
            - name: user_id
              type: integer
              required: true
        """
        try:
            chat = Chat.objects.get(pk=pk)
            user = User.objects.get(pk=request.data.get('user_id', None))
            if not request.user.is_chat_admin(chat):
                return Response(status=status.HTTP_403_FORBIDDEN)

            # Already chat member ?
            try:
                ChatMember.objects.get(user=user.id, chat=chat.id)
                return Response("Already Chat member", status=status.HTTP_400_BAD_REQUEST)
            except ChatMember.DoesNotExist:
                pass

            c = ChatMember(chat=chat, user=user, is_creator=False, is_admin=False)
            c.save()
            s = ChatMemberSerializer(c)
            return Response(s.data, status=status.HTTP_200_OK)

        except Chat.DoesNotExist:
            raise Http404("Chat {0} not found".format(pk))
        except User.DoesNotExist:
            raise Http404("User {0} not found".format(request.data.get('user_id', None)))
예제 #2
0
파일: chat.py 프로젝트: ProjetSigma/backend
 def create(self, data):
     chat = Chat(**data)
     if 'user' in self.initial_data:
         try:
             user = User.objects.get(pk=self.initial_data['user'])
             chat.save()
             creator = ChatMember(user=user, is_creator=True, is_admin=True, chat=chat)
             creator.save()
             chat.chatmember.add(creator)
             chat.save()
             return chat
         except User.DoesNotExist:
             return None
     return None