remotes/origin/setup
ArturBaybulatov 10 years ago
parent 91414a8151
commit 9b5d238e28
  1. 1
      projects/admin.py
  2. 6
      projects/forms.py
  3. 14
      projects/templates/customer_project_detail.html
  4. 51
      projects/templates/project_edit_test.html
  5. 7
      projects/templates/test.html
  6. 8
      projects/templates/test_form.html
  7. 107
      projects/views.py
  8. 9
      users/models.py
  9. 11
      users/templates/customer_profile_open_projects.html
  10. 6
      users/templates/customer_profile_trashed_projects.html

@ -7,6 +7,7 @@ from .models import Project, Portfolio, PortfolioPhoto, \
class ProjectAdmin(admin.ModelAdmin):
readonly_fields = ('pk',)
list_display = ('name','pk','customer','state')
admin.site.register(Answer)

@ -137,9 +137,13 @@ class ProjectDeleteForm(Form):
self.fields['pk'].queryset = self.req.user.projects.filter(Q(state='active') | Q(state='trashed'))
class ProjectEditForm(Form):
class ProjectEditForm(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)

@ -77,12 +77,18 @@
</p>
</div>
<div class="col-lg-10 col-lg-offset-1">
<a href="javascript:void(0)" class="linkProIn linkProIn1">
<a href="{% url 'projects:edit' pk=project.pk %}" class="linkProIn linkProIn1">
Редактировать
</a>
<a href="javascript:void(0)" class="linkProIn linkProIn2">
снять с публикачии
</a>
<form action="{% url 'projects:trash' pk=project.pk %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false" class="linkProIn linkProIn2">
Снять с публикации
</a>
</form>
</div>
</div>
<div class="exBigBlock disTab">

@ -1,12 +1,39 @@
{% extends 'partials/base.html' %}
{% block content %}
<form action="{% url 'projects:edit' pk=proj.pk %}" method="POST">
{% csrf_token %}
{{ form }}
<input type="hidden" name="next" value="{% url 'projects:detail' pk=proj.pk %}">
<button type="submit">Сохранить</button>
</form>
{% endblock %}
{% load staticfiles %}
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge, chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<!--<meta name='viewport' content='initial-scale=1.0, user-scalable=no, maximum-scale=1'>-->
<title>Archilance</title>
<link rel='stylesheet' href='{% static "css/bootstrap.css" %}'>
<link rel='stylesheet' href='{% static "css/dev-colors.css" %}'> <!-- Dev-time only, temporary!!! -->
</head>
<body>
{% if messages %}
{% for message in messages %}
<div class="c" style='padding: 10px; margin-bottom: 6px'>{{ message | safe }}</div>
{% endfor %}
{% endif %}
<h1>"pk": {{ pk }}</h1>
<form action="{% url 'projects:edit' pk=pk %}" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="next" value="{% url 'projects:detail' pk=pk %}">
<button type="submit">Сохранить</button>
</form>
<script src='{% static "js/jquery-2.2.3.min.js" %}'></script>
<script src='{% static "js/bootstrap.min.js" %}'></script>
</body>
</html>

@ -1,7 +0,0 @@
<h1>Test page</h1>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
{{ realty_form.errors}}
{{ realty_form.as_p }}
<input type="submit" value="Send message" />
</form>

@ -1,8 +0,0 @@
<h1>Test form</h1>
<form action="" method="post">{% csrf_token %}
{{ form.errors }}
{{ form.as_p }}
{{ second_form.errors }}
{{ second_form.as_p }}
<input type="submit" value="Send message" />
</form>

@ -4,11 +4,13 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse
from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic import ListView, DetailView, CreateView, View, TemplateView, FormView
from django.views.generic.base import ContextMixin
from pprint import pprint, pformat
import pydash as _
from users.models import User
from .models import Project, Portfolio, Candidate, Answer, Realty, Order
from archilance.mixins import BaseMixin
from users.models import User
from .forms import (
AnswerForm,
@ -102,8 +104,6 @@ class ProjectCreateView(PermissionRequiredMixin, View):
return HttpResponseRedirect('/projects/')
def form_invalid(self, form, second_form):
pass
class ProjectTrashView(View):
@ -172,104 +172,43 @@ class ProjectDeleteView(View):
return redirect(redirect_to)
class ProjectEditView(View):
class ProjectEditView(BaseMixin, View):
form_class = ProjectEditForm
template_name = 'project_edit_test.html' # 'project_edit.html'
def get(self, req, *args, **kwargs):
form = self.form_class()
return render(req, self.template_name, {'form': form})
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(**kwargs)
context.update({'form': form})
return render(req, self.template_name, context)
else:
return HttpResponseForbidden('403 Forbidden')
def post(self, req, *args, **kwargs):
form = self.form_class(_.merge({}, req.POST, kwargs), req=req)
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, 'Проект (как будто) успешно отредактирован')
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, 'Произошла ошибка: <pre>{msg}</pre>'.format(msg=pformat(form.errors)))
return render(req, self.template_name, {'form': form})
return render(req, self.template_name, context)
else:
return HttpResponseForbidden('403 Forbidden')
class TestView(View):
template_name = 'test_form.html'
form_class = RealtyForm
form_second = ProjectForm
def get(self, request, *args, **kwargs):
form = self.form_class()
second_form = self.form_second(prefix='form_2')
return render(request,self.template_name, {'form': form, 'second_form': second_form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
second_form = self.form_second(request.POST, prefix='form_2')
if form.is_valid() and second_form.is_valid():
return self.form_valid(request, form, second_form)
return render(request, self.template_name, {'form': form, 'second_form': second_form})
def form_valid(self, request, form, second_form):
realty = form.save(commit=False)
realty.user = request.user
realty.save()
project = second_form.save(commit=False)
project.user = request.user
project.realty = realty
project.save()
return HttpResponseRedirect('/projects/')
class TestProjectView(View):
model = Project
form_class = ProjectForm
template_name = 'test.html'
success_url = '/projects/'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['realty_form'] = RealtyForm(prefix='form_2')
return context
# def get(self, request, *args, **kwargs):
# self.object = None
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
realty_form = RealtyForm(self.request.POST)
# import code; code.interact(local=dict(globals(), **locals()))
if form.is_valid():
return self.form_valid(form, realty_form)
else:
return self.form_invalid(form, realty_form)
def form_valid(self, form, realty_form):
status = 'form_valid'
realty = realty_form.instance
realty.user = self.request.user
realty.save()
project = form.instance
project.user = self.request.user
project.realty = realty
project.save()
# import code; code.interact(local=dict(globals(), **locals()))
def form_invalid(self, form, realty_form):
status = 'form_invalid'
return self.render_to_response(
self.get_context_data(form=form,
realty_form=realty_form))
class ProjectComparisonView(DetailView):
model = Project
template_name = 'comparison.html'

@ -38,7 +38,6 @@ GENDERS = (
)
class ContractorFinancialInfo(models.Model):
RESIDENCIES = (
('russian_resident', 'Резидент РФ'),
@ -46,16 +45,16 @@ class ContractorFinancialInfo(models.Model):
('refugee', 'Беженец'),
('russian_stay_permit', 'Вид на жительство'),
)
LEGAL_STATUSES = (
('individual', 'Физическое лицо'),
('legal_entity', 'ИП и Юридическое лицо'),
('legal_entity', 'ИП и юридическое лицо'),
)
fio = models.CharField(max_length=255)
date_of_birth = models.DateTimeField()
phone = models.CharField(max_length=30)
residency = models.CharField(max_length=50,choices=RESIDENCIES)
residency = models.CharField(max_length=50, choices=RESIDENCIES)
legal_status = models.CharField(max_length=30, choices=LEGAL_STATUSES)
passport_series = models.CharField(max_length=6)
passport_number = models.CharField(max_length=10)

@ -27,7 +27,7 @@
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
</div>
<div class="col-lg-3 col-lg-offset-1">
@ -72,18 +72,15 @@
<ul>
<li>
<form action="{% url 'projects:edit' pk=proj.pk %}" method="GET">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<button type="submit">Редактировать</button>
</form>
<a href='{% url 'projects:edit' pk=proj.pk %}'>Редактировать</a>
</li>
<li>
<form action="{% url 'projects:trash' pk=proj.pk %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<button type="submit">Переместить в корзину</button>
<a href='#' onclick="$(this).closest('form').submit(); return false">Переместить в корзину</a>
</form>
</li>
</ul>

@ -74,7 +74,8 @@
<form action="{% url 'projects:restore' pk=proj.pk %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<button type="submit">Восстановить из корзины</button>
<a href='#' onclick="$(this).closest('form').submit(); return false">Восстановить из корзины</a>
</form>
</li>
@ -82,7 +83,8 @@
<form action="{% url 'projects:delete' pk=proj.pk %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<button type="submit">Удалить навсегда</button>
<a href='#' onclick="$(this).closest('form').submit(); return false">Удалить навсегда</a>
</form>
</li>
</ul>

Loading…
Cancel
Save