Skip to content

Commit

Permalink
Add tasks and views when creating a project via API (#593)
Browse files Browse the repository at this point in the history
  • Loading branch information
jochenklar committed Apr 13, 2023
1 parent 813df5e commit 07430f6
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
3 changes: 2 additions & 1 deletion rdmo/projects/serializers/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ class Meta:
'guests',
'created',
'updated',
'site'
'site',
'views'
)
read_only_fields = (
'snapshots',
Expand Down
5 changes: 2 additions & 3 deletions rdmo/projects/views/project_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.sites.shortcuts import get_current_site
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, TemplateView

from rdmo.core.views import RedirectViewMixin
from rdmo.questions.models import Catalog
from rdmo.tasks.models import Task
Expand Down Expand Up @@ -45,6 +43,7 @@ def form_valid(self, form):

# add all tasks to project
tasks = Task.objects.filter_current_site() \
.filter_catalog(self.object.catalog) \
.filter_group(self.request.user) \
.filter_availability(self.request.user)
for task in tasks:
Expand Down
19 changes: 19 additions & 0 deletions rdmo/projects/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
from rdmo.core.utils import human2bytes, return_file_response
from rdmo.options.models import OptionSet
from rdmo.questions.models import Catalog, Question, QuestionSet
from rdmo.tasks.models import Task
from rdmo.views.models import View

from .filters import SnapshotFilterBackend, ValueFilterBackend
from .models import (Continuation, Integration, Issue, Membership, Project,
Expand Down Expand Up @@ -150,6 +152,23 @@ def progress(self, request, pk=None):
def perform_create(self, serializer):
project = serializer.save(site=get_current_site(self.request))

# add all tasks to project
tasks = Task.objects.filter_current_site() \
.filter_catalog(project.catalog) \
.filter_group(self.request.user) \
.filter_availability(self.request.user)
for task in tasks:
project.tasks.add(task)

if self.request.data.get('views') is None:
# add all views to project
views = View.objects.filter_current_site() \
.filter_catalog(project.catalog) \
.filter_group(self.request.user) \
.filter_availability(self.request.user)
for view in views:
project.views.add(view)

# add current user as owner
membership = Membership(project=project, user=self.request.user, role='owner')
membership.save()
Expand Down

0 comments on commit 07430f6

Please sign in to comment.