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