def share(self, request, *args, **kwargs): self.object = self.get_object() data = dict(request.DATA.items() + [('project', self.object.pk)]) serializer = ShareProjectSerializer(data=data) if serializer.is_valid(): if data.get("remove"): serializer.remove_user() else: serializer.save() email_msg = data.get('email_msg') if email_msg: # send out email message. user = serializer.object.user send_mail(SHARE_PROJECT_SUBJECT.format(self.object.name), email_msg, DEFAULT_FROM_EMAIL, (user.email, )) else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_204_NO_CONTENT)
def share(self, request, *args, **kwargs): self.object = self.get_object() data = dict(request.data.items() + [('project', self.object.pk)]) serializer = ShareProjectSerializer(data=data) if serializer.is_valid(): if data.get("remove"): serializer.remove_user() else: serializer.save() email_msg = data.get('email_msg') if email_msg: # send out email message. # serializer.object doesn't exist anymore in DRF, so # we have to pull the user from the DB username = serializer.validated_data['username'] user = User.objects.get(username=username) send_mail(SHARE_PROJECT_SUBJECT.format(self.object.name), email_msg, DEFAULT_FROM_EMAIL, (user.email, )) else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_204_NO_CONTENT)
def share(self, request, *args, **kwargs): self.object = self.get_object() data = dict(request.DATA.items() + [('project', self.object.pk)]) serializer = ShareProjectSerializer(data=data) if serializer.is_valid(): serializer.save() else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_204_NO_CONTENT)
def share(self, request, *args, **kwargs): self.object = self.get_object() data = dict(request.DATA.items() + [('project', self.object.pk)]) serializer = ShareProjectSerializer(data=data) if serializer.is_valid(): if data.get("remove"): serializer.remove_user() else: serializer.save() else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_204_NO_CONTENT)
def test_shares_project(self): """ Test that the ShareProjectSerializer shares the projects to users """ self._publish_xls_form_to_project() project = Project.objects.last() user_joe = self._create_user('joe', 'joe') self.assertFalse(ReadOnlyRole.user_has_role(user_joe, project)) data = { 'project': project.id, 'username': '******', 'role': ReadOnlyRole.name } serializer = ShareProjectSerializer(data=data) self.assertTrue(serializer.is_valid()) serializer.save() self.assertTrue(ReadOnlyRole.user_has_role(user_joe, project)) # Test that it can share to multiple users user_dave = self._create_user('dave', 'dave') user_jake = self._create_user('jake', 'jake') self.assertFalse(ReadOnlyRole.user_has_role(user_dave, project)) self.assertFalse(ReadOnlyRole.user_has_role(user_jake, project)) data = { 'project': project.id, 'username': '******', 'role': ReadOnlyRole.name } serializer = ShareProjectSerializer(data=data) self.assertTrue(serializer.is_valid()) serializer.save() self.assertTrue(ReadOnlyRole.user_has_role(user_dave, project)) self.assertTrue(ReadOnlyRole.user_has_role(user_jake, project))