diff --git a/assets/css/main.css b/assets/css/main.css index d113549..8f7b0c7 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -35,9 +35,9 @@ body, html { position: relative; } -input[type=checkbox], input[type=radio] { - opacity: 0; -} +/*input[type=checkbox], input[type=radio] { + opacity: 0; / * Блядь, какого ХУЯ????? * / +}*/ a, a:hover, a:focus, a:active { text-decoration: none !important; diff --git a/projects/forms.py b/projects/forms.py index 2e7a293..b678c56 100644 --- a/projects/forms.py +++ b/projects/forms.py @@ -194,14 +194,18 @@ class ContractorProjectAnswerForm(forms.ModelForm): 'text', 'secure_deal_only', - # 'portfolios', - # 'files', + 'portfolios', + # 'files', # Doesn't work for some fucked up reason ) - # widgets = { - # 'currency': forms.Select(attrs={'class': 'selectpicker'}), - # 'term_type': forms.Select(attrs={'class': 'selectpicker'}), - # } + widgets = { + 'currency': forms.Select(attrs={'class': 'selectpicker'}), + 'term_type': forms.Select(attrs={'class': 'selectpicker'}), + } + + def __init__(self, *args, **kwargs): + self.request = kwargs.pop('request') + super().__init__(*args, **kwargs) class StageForm(forms.ModelForm): diff --git a/projects/templates/project_detail.html b/projects/templates/project_detail.html index f54f489..c271964 100644 --- a/projects/templates/project_detail.html +++ b/projects/templates/project_detail.html @@ -164,7 +164,7 @@ {% if request.user.is_contractor and True %} -
+ {% csrf_token %} @@ -212,7 +212,7 @@ @@ -226,7 +226,7 @@
- Работаю только по безопасной сделке + {{ form.secure_deal_only }} Работаю только по безопасной сделке
diff --git a/projects/urls.py b/projects/urls.py index 684450e..4e3a9b1 100644 --- a/projects/urls.py +++ b/projects/urls.py @@ -5,7 +5,6 @@ from .views import ( add_candidate, contractor_portfolio_create, ContractorPortfolioUpdateView, - ContractorProjectAnswerView, CustomerProjectCreateView, CustomerProjectDeleteView, CustomerProjectEditView, @@ -14,14 +13,14 @@ from .views import ( OfferOrderView, ProjectComparisonView, ProjectFilterView, - ProjectView, + ProjectDetailWithContractorAnswerView, ) app_name = 'projects' urlpatterns = [ urls.url(r'^$', ProjectFilterView.as_view(), name='project-filter'), - urls.url(r'^(?P\d+)/$', ProjectView.as_view(), name='detail'), + urls.url(r'^(?P\d+)/$', ProjectDetailWithContractorAnswerView.as_view(), name='detail'), urls.url(r'^create/$', CustomerProjectCreateView.as_view(), name='customer-project-create'), urls.url(r'^(?P\d+)/edit/$', CustomerProjectEditView.as_view(), name='customer-project-edit'), @@ -29,8 +28,6 @@ urlpatterns = [ urls.url(r'^(?P\d+)/restore/$', CustomerProjectRestoreView.as_view(), name='customer-project-restore'), urls.url(r'^(?P\d+)/delete/$', CustomerProjectDeleteView.as_view(), name='customer-project-delete'), - urls.url(r'^(?P\d+)/answer/$', ContractorProjectAnswerView.as_view(), name='contractor-project-answer'), - urls.url(r'^portfolio/create/$', contractor_portfolio_create, name='contractor-portfolio-create'), urls.url(r'^portfolio/(?P\d+)/edit/$', ContractorPortfolioUpdateView.as_view(), name='contractor-portfolio-edit'), diff --git a/projects/views.py b/projects/views.py index 2865076..9e22999 100644 --- a/projects/views.py +++ b/projects/views.py @@ -35,10 +35,10 @@ from .forms import ( ) -class ProjectView(BaseMixin, View): - template_name = 'project_detail.html' +class ProjectDetailWithContractorAnswerView(BaseMixin, View): form_class = ContractorProjectAnswerForm - + template_name = 'project_detail.html' + def get(self, request, *args, **kwargs): context = self.get_context_data(**_.merge({}, request.GET, kwargs)) @@ -50,11 +50,39 @@ class ProjectView(BaseMixin, View): # import code; code.interact(local=dict(globals(), **locals())) if request.user.is_authenticated() and request.user.is_contractor(): - form = self.form_class() + form = self.form_class(request=request) context.update({'form': form}) return render(request, self.template_name, context) + def post(self, request, *args, **kwargs): + if request.user.is_authenticated() and request.user.is_contractor(): + context = self.get_context_data(**kwargs) + form = self.form_class(request.POST, request=request) + + project = get_object_or_404(Project, pk=kwargs.get('pk')) + context.update({'project': project}) + + if form.is_valid(): + print('###############################################') + pprint(form.cleaned_data) + print('###############################################') + + messages.info(request, 'Форма ОК') + redirect_to = request.POST.get('next') + return redirect(redirect_to) + else: + if form.errors: + messages.info(request, ( + '

Произошла ошибка (form)

' + '
{form}
' + ).format(form=pformat(form.errors))) + + context.update({'form': form}) + return render(request, self.template_name, context) + else: + return HttpResponseForbidden('403 Forbidden') + class ProjectFilterView(BaseMixin, View): template_name = 'project_filter.html' @@ -325,49 +353,6 @@ class CustomerProjectEditView(BaseMixin, View): return render(request, self.template_name, context) -class ContractorProjectAnswerView(BaseMixin, View): - form_class = ContractorProjectAnswerForm - - def dispatch(self, request, *args, **kwargs): - if request.user.is_authenticated() and request.user.is_contractor(): - return super().dispatch(request, *args, **kwargs) - else: - return HttpResponseForbidden('403 Forbidden') - - def post(self, req, *args, **kwargs): - form = self.form_class(_.merge({}, req.POST, kwargs), req=req) - - if form.is_valid(): - project = form.cleaned_data.get('pk') - project.state = 'trashed' - project.save() - - messages.info(req, 'OK') - else: - messages.info(req, 'Произошла ошибка:
{msg}
'.format(msg=pformat(form.errors))) - - redirect_to = req.POST.get('next') - return redirect(redirect_to) - - - - # def post(self, request, *args, **kwargs): - # form = self.form_class(request.POST) - # project = get_object_or_404(Project, pk=kwargs.get('pk')) - # if form.is_valid(): - # answer = form.save(commit=False) - # answer.contractor = request.user - # answer.project = project - # answer.save() - # return HttpResponseRedirect(reverse('projects:detail', kwargs={'pk': project.pk})) - # return render(request, self.template_name, {'project': project, 'form': self.form_class}) - - - -class PortfolioTrashView(View): - pass - - class CustomerProjectTrashView(View): form_class = CustomerProjectTrashForm