Add create default due dates view
parent
fdb7ec3382
commit
02558ed15f
|
@ -372,7 +372,7 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin,
|
|||
try:
|
||||
user = user_model.objects.get(id=user_id)
|
||||
except user_model.DoesNotExist:
|
||||
return response.BadRequest(_("The user doesn't exist"))
|
||||
return response.BadRequest(_("Project already have due dates"))
|
||||
|
||||
# Check the user is a membership from the project
|
||||
if not project.memberships.filter(user=user).exists():
|
||||
|
@ -599,6 +599,45 @@ class UserStoryDueDateViewSet(BlockedByProjectMixin, ModelCrudViewSet):
|
|||
with advisory_lock("user-story-due-date-creation-{}".format(project_id)):
|
||||
return super().create(request, *args, **kwargs)
|
||||
|
||||
def pre_delete(self, obj):
|
||||
if obj.by_default:
|
||||
raise exc.BadRequest(_("You can't delete by default due date"))
|
||||
|
||||
@list_route(methods=["POST"])
|
||||
def create_default(self, request, **kwargs):
|
||||
context = {
|
||||
"request": request
|
||||
}
|
||||
validator = validators.DueDatesCreationValidator(data=request.DATA,
|
||||
context=context)
|
||||
if not validator.is_valid():
|
||||
return response.BadRequest(validator.errors)
|
||||
|
||||
project_id = request.DATA.get('project_id')
|
||||
project = models.Project.objects.get(id=project_id)
|
||||
|
||||
if project.us_duedates.all():
|
||||
raise exc.BadRequest(_("Project already have due dates"))
|
||||
|
||||
project_template = models.ProjectTemplate.objects.get(
|
||||
id=project.creation_template.id)
|
||||
|
||||
for us_duedate in project_template.us_duedates:
|
||||
models.UserStoryDueDate.objects.create(
|
||||
name=us_duedate["name"],
|
||||
slug=us_duedate["slug"],
|
||||
by_default=us_duedate["by_default"],
|
||||
color=us_duedate["color"],
|
||||
days_to_due=us_duedate["days_to_due"],
|
||||
order=us_duedate["order"],
|
||||
project=project
|
||||
)
|
||||
project.save()
|
||||
|
||||
serializer = self.get_serializer(project.us_duedates.all(), many=True)
|
||||
|
||||
return response.Ok(serializer.data)
|
||||
|
||||
|
||||
class TaskStatusViewSet(MoveOnDestroyMixin, BlockedByProjectMixin,
|
||||
ModelCrudViewSet, BulkUpdateOrderMixin):
|
||||
|
|
|
@ -124,6 +124,10 @@ class IssueDueDateValidator(DuplicatedNameInProjectValidator, validators.ModelVa
|
|||
model = models.IssueDueDate
|
||||
|
||||
|
||||
class DueDatesCreationValidator(ProjectExistsValidator, validators.Validator):
|
||||
project_id = serializers.IntegerField()
|
||||
|
||||
|
||||
######################################################
|
||||
# Members
|
||||
######################################################
|
||||
|
|
Loading…
Reference in New Issue