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): class ProjectAdmin(admin.ModelAdmin):
readonly_fields = ('pk',) readonly_fields = ('pk',)
list_display = ('name','pk','customer','state')
admin.site.register(Answer) 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')) 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()) pk = forms.ModelChoiceField(queryset=Project.objects.none())
class Meta:
model = Project
fields = '__all__'
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.req = kwargs.pop('req') self.req = kwargs.pop('req')
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)

@ -77,12 +77,18 @@
</p> </p>
</div> </div>
<div class="col-lg-10 col-lg-offset-1"> <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>
<a href="javascript:void(0)" class="linkProIn linkProIn2">
снять с публикачии <form action="{% url 'projects:trash' pk=project.pk %}" method="POST">
</a> {% 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> </div>
<div class="exBigBlock disTab"> <div class="exBigBlock disTab">

@ -1,12 +1,39 @@
{% extends 'partials/base.html' %} {% load staticfiles %}
{% block content %} <!doctype html>
<form action="{% url 'projects:edit' pk=proj.pk %}" method="POST"> <html>
{% csrf_token %} <head>
<meta charset='utf-8'>
{{ form }} <meta http-equiv='X-UA-Compatible' content='IE=edge, chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<input type="hidden" name="next" value="{% url 'projects:detail' pk=proj.pk %}"> <!--<meta name='viewport' content='initial-scale=1.0, user-scalable=no, maximum-scale=1'>-->
<button type="submit">Сохранить</button>
</form> <title>Archilance</title>
{% endblock %}
<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.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse
from django.shortcuts import render, get_object_or_404, redirect 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 import ListView, DetailView, CreateView, View, TemplateView, FormView
from django.views.generic.base import ContextMixin
from pprint import pprint, pformat from pprint import pprint, pformat
import pydash as _ import pydash as _
from users.models import User
from .models import Project, Portfolio, Candidate, Answer, Realty, Order from .models import Project, Portfolio, Candidate, Answer, Realty, Order
from archilance.mixins import BaseMixin
from users.models import User
from .forms import ( from .forms import (
AnswerForm, AnswerForm,
@ -102,8 +104,6 @@ class ProjectCreateView(PermissionRequiredMixin, View):
return HttpResponseRedirect('/projects/') return HttpResponseRedirect('/projects/')
def form_invalid(self, form, second_form):
pass
class ProjectTrashView(View): class ProjectTrashView(View):
@ -172,104 +172,43 @@ class ProjectDeleteView(View):
return redirect(redirect_to) return redirect(redirect_to)
class ProjectEditView(View): class ProjectEditView(BaseMixin, View):
form_class = ProjectEditForm form_class = ProjectEditForm
template_name = 'project_edit_test.html' # 'project_edit.html' template_name = 'project_edit_test.html' # 'project_edit.html'
def get(self, req, *args, **kwargs): def get(self, req, *args, **kwargs):
form = self.form_class() if req.user.is_authenticated():
return render(req, self.template_name, {'form': form}) 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): def post(self, req, *args, **kwargs):
form = self.form_class(_.merge({}, req.POST, kwargs), req=req)
if req.user.is_authenticated(): 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(): if form.is_valid():
#... form.save()
messages.info(req, 'Проект (как будто) успешно отредактирован') messages.info(req, 'Проект успешно отредактирован')
redirect_to = req.POST.get('next') redirect_to = req.POST.get('next')
return redirect(redirect_to) return redirect(redirect_to)
else: else:
context = self.get_context_data(**kwargs)
context.update({'form': form})
messages.info(req, 'Произошла ошибка: <pre>{msg}</pre>'.format(msg=pformat(form.errors))) 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: else:
return HttpResponseForbidden('403 Forbidden') 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): class ProjectComparisonView(DetailView):
model = Project model = Project
template_name = 'comparison.html' template_name = 'comparison.html'

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

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

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

Loading…
Cancel
Save