diff --git a/archilance/mixins.py b/archilance/mixins.py index 78f1930..35eef9a 100644 --- a/archilance/mixins.py +++ b/archilance/mixins.py @@ -8,9 +8,11 @@ class BaseMixin(ContextMixin): pk = self.kwargs.get('pk') # Current object's ID next = self.kwargs.get('next') # Redirect back path + back = self.kwargs.get('back') # Redirect back path if pk: c['pk'] = pk if next: c['next'] = next + if back: c['back'] = back c['domain'] = Site.objects.get_current().domain diff --git a/projects/admin.py b/projects/admin.py index 8a7ab29..c924c0b 100644 --- a/projects/admin.py +++ b/projects/admin.py @@ -17,8 +17,7 @@ from .models import ( class ProjectAdminForm(forms.ModelForm): - files = forms.ModelMultipleChoiceField(queryset=Project.objects.none(), required=False) - + files = forms.ModelMultipleChoiceField(queryset=ProjectFile.objects.none(), required=False) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/projects/forms.py b/projects/forms.py index a750a35..50032e7 100644 --- a/projects/forms.py +++ b/projects/forms.py @@ -3,7 +3,7 @@ from django.db.models import Q from django.forms.models import inlineformset_factory from mptt.forms import TreeNodeChoiceField -from .models import Project, Portfolio, Answer, Realty, PortfolioPhoto, Stage, Specialization +from .models import Project, ProjectFile, Portfolio, Answer, Realty, PortfolioPhoto, Stage, Specialization from users.models import User @@ -14,7 +14,8 @@ class ProjectsForm(forms.Form): name = forms.CharField(max_length=255) -class CustomerProjectCreateForm(forms.ModelForm): +class CustomerProjectEditForm(forms.ModelForm): + files = forms.ModelMultipleChoiceField(queryset=ProjectFile.objects.none(), required=False) specialization = TreeNodeChoiceField(queryset=Specialization.objects.exclude(id=1)) class Meta: @@ -26,6 +27,7 @@ class CustomerProjectCreateForm(forms.ModelForm): 'cro', 'currency', 'deal_type', + 'files', 'name', 'price_and_term_required', 'realty', @@ -47,6 +49,9 @@ class CustomerProjectCreateForm(forms.ModelForm): super().__init__(*args, **kwargs) self.fields['realty'].empty_label = 'Создать новый' + + if self.instance.pk: + self.fields['files'].queryset = self.instance.files class RealtyForm(forms.ModelForm): @@ -121,18 +126,18 @@ class StageForm(forms.ModelForm): PortfolioPhotoFormSet = inlineformset_factory(Portfolio, PortfolioPhoto, fields=('img',)) -class CustomerProjectEditForm(forms.ModelForm): - pk = forms.ModelChoiceField(queryset=Project.objects.none()) - - class Meta: - model = Project - fields = '__all__' - - def __init__(self, *args, **kwargs): - self.req = kwargs.pop('req') - super().__init__(*args, **kwargs) - - self.fields['pk'].queryset = self.req.user.projects.filter(state='active') +# class CustomerProjectEditForm(forms.ModelForm): +# pk = forms.ModelChoiceField(queryset=Project.objects.none()) +# +# class Meta: +# model = Project +# fields = '__all__' +# +# def __init__(self, *args, **kwargs): +# self.req = kwargs.pop('req') +# super().__init__(*args, **kwargs) +# +# self.fields['pk'].queryset = self.req.user.projects.filter(state='active') class CustomerProjectTrashForm(forms.Form): diff --git a/projects/templates/customer_project_create.html b/projects/templates/customer_project_create.html index 25d88d7..2765a5f 100644 --- a/projects/templates/customer_project_create.html +++ b/projects/templates/customer_project_create.html @@ -43,7 +43,7 @@
Требуется допуск СРО
- + + +{# #} +{# {% if back %}Назад{% endif %}#} + +Изменение проекта
+{msg}'.format(msg=pformat(form.errors)))
+# return render(request, self.template_name, context)
+# else:
+# return HttpResponseForbidden('403 Forbidden')
+ pass
-class CustomerProjectEditView(BaseMixin, View):
- form_class = CustomerProjectEditForm
- template_name = 'customer_project_edit_test.html' # 'customer_project_edit.html'
-
- def get(self, req, *args, **kwargs):
- if req.user.is_authenticated():
- project = get_object_or_404(req.user.projects, pk=kwargs.get('pk'))
- form = self.form_class(instance=project, req=req)
-
- context = self.get_context_data(**_.merge({}, req.GET, kwargs))
- context.update({'form': form})
-
- return render(req, self.template_name, context)
- else:
- return HttpResponseForbidden('403 Forbidden')
-
- def post(self, req, *args, **kwargs):
- if req.user.is_authenticated():
- project = get_object_or_404(req.user.projects, pk=kwargs.get('pk'))
- form = self.form_class(_.merge({}, req.POST, kwargs), req=req, instance=project)
-
- if form.is_valid():
- form.save()
-
- messages.info(req, 'Проект успешно отредактирован')
- redirect_to = req.POST.get('next')
- return redirect(redirect_to)
- else:
- context = self.get_context_data(**kwargs)
- context.update({'form': form})
-
- messages.info(req, 'Произошла ошибка: {msg}'.format(msg=pformat(form.errors)))
- return render(req, self.template_name, context)
- else:
- return HttpResponseForbidden('403 Forbidden')
+# class CustomerProjectEditView(BaseMixin, View):
+# form_class = CustomerProjectEditForm
+# realty_form = RealtyForm
+# template_name = 'customer_project_edit.html'
+#
+# def get(self, request, *args, **kwargs):
+# if request.user.is_authenticated() and request.user.is_customer():
+# form = self.form_class(request=request)
+# realty_form = self.realty_form(request=request, prefix='realty_form')
+#
+# context = self.get_context_data(**_.merge({}, request.GET, kwargs))
+# context.update({'form': form, 'realty_form': realty_form})
+#
+# return render(request, self.template_name, context)
+# else:
+# return HttpResponseForbidden('403 Forbidden')
+#
+# def post(self, request, *args, **kwargs):
+# if request.user.is_authenticated() and request.user.is_customer():
+# form = self.form_class(request.POST, request.FILES, request=request)
+#
+# 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')
+#
+# if form.is_valid() and realty_form.is_valid():
+# project = form.save(commit=False)
+# project.customer = request.user
+# project.save()
+# form.save_m2m()
+#
+# for file in request.FILES.getlist('files'):
+# proj_file = ProjectFile.objects.create(file=file, project=project)
+# proj_file.save()
+#
+# if realty:
+# realty_form.save()
+# else:
+# realty = realty_form.save(commit=False)
+# realty.user = request.user
+# realty.save()
+# realty_form.save_m2m()
+#
+# project.realty = realty # Connect a realty with a project
+# project.save()
+#
+# messages.info(request, 'Проект успешно создан')
+# redirect_to = reverse('projects:detail', kwargs={'pk': project.pk})
+# 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})
+# return render(request, self.template_name, context)
+# else:
+# return HttpResponseForbidden('403 Forbidden')
class ContractorProjectAnswerView(BaseMixin, View):
diff --git a/users/templates/customer_profile_open_projects.html b/users/templates/customer_profile_open_projects.html
index 583c7aa..7783212 100644
--- a/users/templates/customer_profile_open_projects.html
+++ b/users/templates/customer_profile_open_projects.html
@@ -75,7 +75,7 @@