+ {% for image in form.photos.field.queryset.all %}
+
+
+ {% endfor %}
diff --git a/projects/views.py b/projects/views.py
index e7fcd1a..c97de14 100644
--- a/projects/views.py
+++ b/projects/views.py
@@ -572,8 +572,8 @@ class CustomerProjectEditView(BaseMixin, View):
if form.is_valid() and realty_form.is_valid():
project = form.save(commit=False)
project.customer = request.user
- project.files = form.cleaned_data.get(
- 'files') # TODO: Should we somehow get rid of this explicit assignment?
+ # print("files = ", form.cleaned_data.get('files'))
+ project.files = form.cleaned_data.get('files')
project.save()
form.save_m2m()
@@ -938,7 +938,14 @@ class ContractorPortfolioEditView(BaseMixin, View):
work_type_suggestion_form = ProjectWorkTypeSuggestionForm
template_name = 'portfolio_create_edit.html'
+ def dispatch(self, request, *args, **kwargs):
+ if request.user.is_authenticated() and request.user.is_contractor():
+ return super().dispatch(request, *args, **kwargs)
+ else:
+ raise PermissionDenied
+
def get(self, request, *args, **kwargs):
+ print("request.GET = ", request.GET)
portfolio = get_object_or_404(Portfolio, pk=kwargs.get('pk'))
form = self.form_class(instance=portfolio, request=request)
work_type_suggestion_form = self.work_type_suggestion_form(request=request, prefix='work_type_suggestion')
@@ -953,60 +960,33 @@ class ContractorPortfolioEditView(BaseMixin, View):
return render(request, self.template_name, context)
def post(self, request, *args, **kwargs):
- # print("request.POST = ", request.POST)
- project = get_object_or_404(request.user.customer_projects, pk=kwargs.get('pk'))
- form = self.form_class(request.POST, request.FILES, request=request, instance=project)
-
- form.is_valid()
- realty = form.cleaned_data.get('realty')
-
- if realty:
- realty_form = self.realty_form(request.POST, instance=realty, request=request, prefix='realty_form')
- else:
- realty_form = self.realty_form(request.POST, request=request, prefix='realty_form')
+ print("request.POST = ", request.POST)
+ portfolio = get_object_or_404(Portfolio, pk=kwargs.get('pk'))
+ form = self.form_class(request.POST, request.FILES, request=request, instance=portfolio)
- if form.is_valid() and realty_form.is_valid():
- project = form.save(commit=False)
- project.customer = request.user
- project.files = form.cleaned_data.get(
- 'files') # TODO: Should we somehow get rid of this explicit assignment?
- project.save()
+ if form.is_valid():
+ portfolio = form.save(commit=False)
+ portfolio.user = request.user
+ print("clean photos = ", form.cleaned_data.get('photos'))
+ portfolio.photos = form.cleaned_data.get('photos')
+ portfolio.save()
form.save_m2m()
for file in request.FILES.getlist('new_files'):
- ProjectFile.objects.create(file=file, project=project)
-
- if not realty:
- realty = realty_form.save(commit=False)
- realty.user = request.user
- if not request.POST.get('new_realty_name'):
- realty.is_virtual = True
- realty.name = request.POST.get('new_realty_name')
- realty.save()
- realty_form.save_m2m()
-
- project.realty = realty # Connect a realty with a project
- project.save()
+ PortfolioPhoto.objects.create(img=file, portfolio=portfolio)
- messages.info(request, 'Проект успешно отредактирован')
- # redirect_to = request.POST.get('back')
- redirect_to = reverse('projects:detail', kwargs={'pk': project.pk})
+ messages.info(request, 'Портфолио успешно создано')
+ redirect_to = reverse('projects:contractor-portfolio-detail', kwargs={'pk': portfolio.pk})
+ if request.is_ajax():
+ return JsonResponse({'redirect_to': redirect_to}, status=200)
return redirect(redirect_to)
else:
- if form.errors:
- messages.info(request, (
- '
Произошла ошибка (form)
'
- '
{form}'
- ).format(form=pformat(form.errors)))
-
- if realty_form and realty_form.errors:
- messages.info(request, (
- '
Произошла ошибка (realty_form)
'
- '
{realty_form}'
- ).format(realty_form=pformat(realty_form.errors)))
-
context = self.get_context_data(**kwargs)
- context.update({'form': form, 'realty_form': realty_form})
+ context.update({'form': form})
+ if request.is_ajax():
+ data = json.dumps(form.errors)
+ print("form errors = ", data)
+ return HttpResponse(content=data, status=400, content_type='application/json')
return render(request, self.template_name, context)