PR-62 Модификация формы заполнения портфолио

Создание и редактирование портфолио в одной(новой) форме
remotes/origin/HEAD
booblegum 9 years ago
parent 65e9190773
commit 850a028a20
  1. 16
      projects/templates/portfolio_create_edit.html
  2. 76
      projects/views.py

@ -2,6 +2,7 @@
{% load i18n %}
{% load staticfiles %}
{% load sass_tags %}
{% load thumbnail %}
{% block personal_css %}
<link rel='stylesheet' href='{% sass_src "sass/components/custom-components.sass" %}'>
<link rel='stylesheet' href='{% sass_src "lib/proekton-components/sass/components.sass" %}'>
@ -113,20 +114,23 @@
</div>
<span style="display: inline-block;vertical-align: inherit;">ДО 100 ФАЙЛОВ</span>
</div>
<div class="row list-new-new" style="margin-top: 10px">
{% for image in form.photos.field.queryset.all %}
<input type="hidden" name="files" class="file-upload-input"
<div class="col-lg-3 file-upload-widget" style="display: none">
<div class="col-lg-3 file-upload-widget">
<input type="hidden" name="photos" class="file-upload-input" value="{{ image.pk }}">
<div class="preview-container">
<div class="btn close file-upload-remove-img-btn">&times;</div>
<div class="preview">
<img src="{{ image.img.url }}">
{% thumbnail image.img "250x200" crop="center" as im %}
<img src="{{ im.url }}">
{% endthumbnail %}
</div>
</div>
<span style="display:none" class="file-upload-label"></span>
{# <span style="display:none" class="file-upload-label"></span>#}
</div>
{% endfor %}
<div class="row list-new-new" style="margin-top: 10px">
<div class="col-lg-3 file-upload-widget" style="display: none">
<input type="file" name="new_files" class="file-upload-input"
style="position: absolute; top: -1000px; left: -1000px">

@ -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, (
'<p>Произошла ошибка (form)</p>'
'<pre>{form}</pre>'
).format(form=pformat(form.errors)))
if realty_form and realty_form.errors:
messages.info(request, (
'<p>Произошла ошибка (realty_form)</p>'
'<pre>{realty_form}</pre>'
).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)

Loading…
Cancel
Save