From 1f2183ecc30f549f5fbd6887941c110eec97282b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Mon, 1 Sep 2014 16:10:58 +0200 Subject: [PATCH] Remove modified_date and owner require from project import --- taiga/export_import/api.py | 25 ++++++++++++++++++++++++- taiga/export_import/serializers.py | 3 ++- taiga/projects/attachments/models.py | 2 +- taiga/projects/issues/models.py | 2 +- taiga/projects/milestones/models.py | 2 +- taiga/projects/models.py | 4 ++-- taiga/projects/notifications/models.py | 2 +- taiga/projects/tasks/models.py | 2 +- taiga/projects/userstories/models.py | 2 +- taiga/projects/wiki/models.py | 2 +- 10 files changed, 35 insertions(+), 11 deletions(-) diff --git a/taiga/export_import/api.py b/taiga/export_import/api.py index b0eb3d62..0de6fef0 100644 --- a/taiga/export_import/api.py +++ b/taiga/export_import/api.py @@ -23,7 +23,10 @@ class ProjectImporterViewSet(CreateModelMixin, GenericViewSet): def create(self, request, *args, **kwargs): self.check_permissions(request, 'import_project', None) - data = request.DATA + data = request.DATA.copy() + if not data['owner']: + data['owner'] = request.user + project_serialized = service.store_project(data) if project_serialized: @@ -41,3 +44,23 @@ class ProjectImporterViewSet(CreateModelMixin, GenericViewSet): return Response(project_serialized.data, status=status.HTTP_201_CREATED, headers=headers) return Response(service.get_errors(), status=status.HTTP_400_BAD_REQUEST) + + @detail_route(methods=['post']) + def issue(self, request, *args, **kwargs): + self.check_permissions(request, 'import_item', serializer.object) + + @detail_route(methods=['post']) + def task(self, request, *args, **kwargs): + self.check_permissions(request, 'import_item', serializer.object) + + @detail_route(methods=['post']) + def us(self, request, *args, **kwargs): + self.check_permissions(request, 'import_item', serializer.object) + + @detail_route(methods=['post']) + def wiki_page(self, request, *args, **kwargs): + self.check_permissions(request, 'import_item', serializer.object) + + @detail_route(methods=['post']) + def wiki_link(self, request, *args, **kwargs): + self.check_permissions(request, 'import_item', serializer.object) diff --git a/taiga/export_import/serializers.py b/taiga/export_import/serializers.py index ad0cb6dc..65e57d59 100644 --- a/taiga/export_import/serializers.py +++ b/taiga/export_import/serializers.py @@ -284,7 +284,7 @@ class WikiLinkExportSerializer(serializers.ModelSerializer): exclude = ('id', 'project') class ProjectExportSerializer(serializers.ModelSerializer): - owner = UserRelatedField() + owner = UserRelatedField(required=False) default_points = serializers.SlugRelatedField(slug_field="name", required=False) default_us_status = serializers.SlugRelatedField(slug_field="name", required=False) default_task_status = serializers.SlugRelatedField(slug_field="name", required=False) @@ -309,6 +309,7 @@ class ProjectExportSerializer(serializers.ModelSerializer): tags_colors = JsonField(required=False) anon_permissions = PgArrayField(required=False) public_permissions = PgArrayField(required=False) + modified_date = serializers.DateTimeField(required=False) class Meta: model = projects_models.Project diff --git a/taiga/projects/attachments/models.py b/taiga/projects/attachments/models.py index a063c24c..1b0c2e1d 100644 --- a/taiga/projects/attachments/models.py +++ b/taiga/projects/attachments/models.py @@ -69,7 +69,7 @@ class Attachment(models.Model): ) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() return super().save(*args, **kwargs) diff --git a/taiga/projects/issues/models.py b/taiga/projects/issues/models.py index 8c82e6ae..a37e0625 100644 --- a/taiga/projects/issues/models.py +++ b/taiga/projects/issues/models.py @@ -73,7 +73,7 @@ class Issue(OCCModelMixin, WatchedModelMixin, BlockedMixin, TaggedMixin, models. ) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() return super().save(*args, **kwargs) diff --git a/taiga/projects/milestones/models.py b/taiga/projects/milestones/models.py index 224f4e53..989c637b 100644 --- a/taiga/projects/milestones/models.py +++ b/taiga/projects/milestones/models.py @@ -69,7 +69,7 @@ class Milestone(WatchedModelMixin, models.Model): return "".format(self.id) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() if not self.slug: self.slug = slugify_uniquely(self.name, self.__class__) diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 3592af30..3478e19c 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -182,7 +182,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): return "".format(self.id) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() if not self.slug: @@ -522,7 +522,7 @@ class ProjectTemplate(models.Model): return "".format(self.slug) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() super().save(*args, **kwargs) diff --git a/taiga/projects/notifications/models.py b/taiga/projects/notifications/models.py index 6a7db7e8..bdff3d90 100644 --- a/taiga/projects/notifications/models.py +++ b/taiga/projects/notifications/models.py @@ -39,7 +39,7 @@ class NotifyPolicy(models.Model): ordering = ["created_at"] def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_at = timezone.now() return super().save(*args, **kwargs) diff --git a/taiga/projects/tasks/models.py b/taiga/projects/tasks/models.py index 538ac2f3..08a97146 100644 --- a/taiga/projects/tasks/models.py +++ b/taiga/projects/tasks/models.py @@ -74,7 +74,7 @@ class Task(OCCModelMixin, WatchedModelMixin, BlockedMixin, TaggedMixin, models.M ) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() return super().save(*args, **kwargs) diff --git a/taiga/projects/userstories/models.py b/taiga/projects/userstories/models.py index ad3872ee..b2ec35da 100644 --- a/taiga/projects/userstories/models.py +++ b/taiga/projects/userstories/models.py @@ -109,7 +109,7 @@ class UserStory(OCCModelMixin, WatchedModelMixin, BlockedMixin, TaggedMixin, mod ) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() super().save(*args, **kwargs) diff --git a/taiga/projects/wiki/models.py b/taiga/projects/wiki/models.py index 0104c142..bfe926f8 100644 --- a/taiga/projects/wiki/models.py +++ b/taiga/projects/wiki/models.py @@ -55,7 +55,7 @@ class WikiPage(OCCModelMixin, WatchedModelMixin, models.Model): return "project {0} - {1}".format(self.project_id, self.slug) def save(self, *args, **kwargs): - if not self._importing: + if not self._importing or not self.modified_date: self.modified_date = timezone.now() return super().save(*args, **kwargs)