Add create default due dates view

remotes/origin/endpoint-for-estimation-system-new
Álex Hermida 2018-06-10 22:43:33 +02:00 committed by Alex Hermida
parent fdb7ec3382
commit 02558ed15f
2 changed files with 44 additions and 1 deletions

View File

@ -372,7 +372,7 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin,
try: try:
user = user_model.objects.get(id=user_id) user = user_model.objects.get(id=user_id)
except user_model.DoesNotExist: 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 # Check the user is a membership from the project
if not project.memberships.filter(user=user).exists(): 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)): with advisory_lock("user-story-due-date-creation-{}".format(project_id)):
return super().create(request, *args, **kwargs) 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, class TaskStatusViewSet(MoveOnDestroyMixin, BlockedByProjectMixin,
ModelCrudViewSet, BulkUpdateOrderMixin): ModelCrudViewSet, BulkUpdateOrderMixin):

View File

@ -124,6 +124,10 @@ class IssueDueDateValidator(DuplicatedNameInProjectValidator, validators.ModelVa
model = models.IssueDueDate model = models.IssueDueDate
class DueDatesCreationValidator(ProjectExistsValidator, validators.Validator):
project_id = serializers.IntegerField()
###################################################### ######################################################
# Members # Members
###################################################### ######################################################