remotes/origin/setup
ArturBaybulatov 10 years ago
parent d384391782
commit 60c05d0310
  1. 2
      archilance/management/commands/generate_reviews.py
  2. 1
      archilance/management/commands/generate_users.py
  3. 6
      archilance/util.py
  4. 26
      projects/migrations/0004_auto_20160726_1931.py
  5. 7
      templates/home.html
  6. 12
      templates/partials/base.html
  7. 4
      users/admin.py
  8. 6
      users/forms.py
  9. 29
      users/migrations/0003_auto_20160726_1931.py
  10. 1
      users/mixins.py
  11. 4
      users/models.py
  12. 5
      users/templates/contractor_profile.html
  13. 19
      users/templates/customer_profile_edit.html
  14. 4
      users/templates/partials/customer_profile_info_block.html
  15. 4
      users/urls.py
  16. 96
      users/views.py

@ -23,7 +23,7 @@ class Command(BaseCommand):
review.project = Project.objects.order_by('?').first() review.project = Project.objects.order_by('?').first()
review.stars = _.random(1, 5) review.stars = _.random(1, 5)
review.text = util.lorem(_.random(5, 15)) review.text = util.lorem()
review.is_secured = _.sample((True, False)) review.is_secured = _.sample((True, False))
review.save() review.save()

@ -81,6 +81,7 @@ class Command(BaseCommand):
return User.objects.create( return User.objects.create(
first_name='Василий', first_name='Василий',
last_name='Пупкин', last_name='Пупкин',
patronym='Иванович',
username=username, username=username,
email='%s@example.com' % username, email='%s@example.com' % username,
is_active=True, is_active=True,

@ -1,6 +1,7 @@
from django.shortcuts import _get_queryset from django.shortcuts import _get_queryset
from django.utils import timezone from django.utils import timezone
from pprint import pprint, pformat from pprint import pprint, pformat
import natsort
import pydash as _; _.map = _.map_; _.filter = _.filter_ import pydash as _; _.map = _.map_; _.filter = _.filter_
import random import random
@ -59,13 +60,14 @@ def get_attr_or_none(klass, *args, attr=None, **kwargs):
def model_fields(model, width=200): def model_fields(model, width=200):
fields = natsort.natsorted(model._meta.get_fields(), key=lambda f: f.name)
pprint([( pprint([(
f.name, f.name,
'Relation? %s' % f.is_relation, 'Relation? %s' % f.is_relation,
'Null? %s' % f.null, 'Null? %s' % f.null,
'Blank? %s' % f.blank if not f.is_relation else '(relation)', 'Blank? %s' % f.blank if not f.is_relation else '(relation)',
'Hidden? %s' % (f.is_hidden() if hasattr(f, 'is_hidden') else False), ) for f in fields], width=width)
) for f in model._meta.get_fields(include_hidden=True)], width=width)
def lorem(sentences=5): def lorem(sentences=5):

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-07-26 16:31
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
from django.utils.timezone import utc
class Migration(migrations.Migration):
dependencies = [
('projects', '0003_auto_20160725_1606'),
]
operations = [
migrations.AlterModelOptions(
name='stage',
options={'ordering': ['pos'], 'verbose_name': 'Этап', 'verbose_name_plural': 'Этапы'},
),
migrations.AlterField(
model_name='stage',
name='created',
field=models.DateTimeField(default=datetime.datetime(2016, 7, 26, 16, 31, 5, 738741, tzinfo=utc)),
),
]

@ -6,14 +6,7 @@
{% include 'partials/header.html' %} {% include 'partials/header.html' %}
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
{# {% url "password_reset_recover" %}#}
<p class="welcomeMain">Основная задача сайта</p> <p class="welcomeMain">Основная задача сайта</p>
<p style="font-size: 25px; line-height: initial; font-weight: bold">
Authed? {{ request.user.is_authenticated }}<br>
{{ request.user }} ({{ request.user.pk }})<br>
{{ request.user.groups.all }}<br>
</p>
</div> </div>
</div> </div>

@ -31,10 +31,19 @@
<body> <body>
{% if messages %} {% if messages %}
{% for message in messages %} {% for message in messages %}
<div class="c" style='padding: 10px; margin-bottom: 6px'>{{ message | safe }}</div> <div class="c" style="position: relative; padding: 10px; margin-bottom: 6px; z-index: 100">{{ message|safe }}</div>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<div style="position: absolute; left: 0; top: 0; padding: 6px; color: black; background-color: #BADA55; z-index: 50">
{{ request.user }}<br>
{% if request.user.is_authenticated %}
<b>PK:</b> {{ request.user.pk }}<br>
<b>Groups:</b> {{ request.user.groups.all }}
{% endif %}
</div>
{% block content %}{% endblock %} {% block content %}{% endblock %}
<script src='{% static "lib/lodash/lodash.js" %}'></script> <script src='{% static "lib/lodash/lodash.js" %}'></script>
@ -50,6 +59,7 @@
<script src='{% static "lib/jquery.fileupload/js/jquery.iframe-transport.js" %}'></script> <script src='{% static "lib/jquery.fileupload/js/jquery.iframe-transport.js" %}'></script>
<script src='{% static "lib/jquery.fileupload/js/jquery.fileupload.js" %}'></script> <script src='{% static "lib/jquery.fileupload/js/jquery.fileupload.js" %}'></script>
<script src='{% static "lib/jquery.fileupload/js/jquery.fileupload-process.js" %}'></script> <script src='{% static "lib/jquery.fileupload/js/jquery.fileupload-process.js" %}'></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.js"></script>

@ -1,6 +1,6 @@
from django.contrib import admin from django.contrib import admin
from .models import User, Team, ContractorFinancialInfo, ContractorResume, ContractorResumeFiles from .models import User, Team, UserFinancialInfo, ContractorResume, ContractorResumeFiles
class UserAdmin(admin.ModelAdmin): class UserAdmin(admin.ModelAdmin):
@ -11,7 +11,7 @@ class UserAdmin(admin.ModelAdmin):
return ', '.join(g.name for g in obj.groups.all()) return ', '.join(g.name for g in obj.groups.all())
admin.site.register(User, UserAdmin) admin.site.register(User, UserAdmin)
admin.site.register(ContractorFinancialInfo) admin.site.register(UserFinancialInfo)
admin.site.register(Team) admin.site.register(Team)
admin.site.register(ContractorResume) admin.site.register(ContractorResume)
admin.site.register(ContractorResumeFiles) admin.site.register(ContractorResumeFiles)

@ -3,7 +3,7 @@ from django.forms import ModelForm
import itertools import itertools
import pydash as _; _.map = _.map_; _.filter = _.filter_ import pydash as _; _.map = _.map_; _.filter = _.filter_
from .models import User, ContractorFinancialInfo from .models import User, UserFinancialInfo
from common.models import Location from common.models import Location
from projects.models import Project, Realty, BuildingClassfication, ConstructionType from projects.models import Project, Realty, BuildingClassfication, ConstructionType
from specializations.models import Specialization from specializations.models import Specialization
@ -131,7 +131,7 @@ class CustomerProfileProjectRealtyForm(forms.Form):
) )
class ContractorFinancicalInfoForm(ModelForm): class UserFinancicalInfoForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['residency'].choices = self.fields['residency'].choices[1:] self.fields['residency'].choices = self.fields['residency'].choices[1:]
@ -141,7 +141,7 @@ class ContractorFinancicalInfoForm(ModelForm):
# self.fields['residency'].widget.choices = self.fields['residency'].choices # self.fields['residency'].widget.choices = self.fields['residency'].choices
class Meta: class Meta:
model = ContractorFinancialInfo model = UserFinancialInfo
fields = ( fields = (
'fio', 'fio',

@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-07-26 16:31
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('users', '0002_auto_20160725_1605'),
]
operations = [
migrations.RenameModel(
old_name='ContractorFinancialInfo',
new_name='UserFinancialInfo',
),
migrations.RemoveField(
model_name='user',
name='contractor_financial_info',
),
migrations.AddField(
model_name='user',
name='financial_info',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='user', to='users.UserFinancialInfo'),
),
]

@ -3,7 +3,6 @@ from django.contrib import messages
class CheckForUserMixin(object): class CheckForUserMixin(object):
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated(): if request.user.is_authenticated():
pk = kwargs.get('pk') pk = kwargs.get('pk')

@ -41,7 +41,7 @@ class CustomerUserManager(models.Manager):
return super().get_queryset().filter(groups__name='Заказчики') return super().get_queryset().filter(groups__name='Заказчики')
class ContractorFinancialInfo(models.Model): class UserFinancialInfo(models.Model):
RESIDENCIES = ( RESIDENCIES = (
('russian_resident', 'Резидент РФ'), ('russian_resident', 'Резидент РФ'),
('non_russian_resident', 'Нерезидент РФ'), ('non_russian_resident', 'Нерезидент РФ'),
@ -117,7 +117,6 @@ class User(AbstractBaseUser, PermissionsMixin):
) )
avatar = models.ImageField(upload_to='users/avatars/', blank=True) avatar = models.ImageField(upload_to='users/avatars/', blank=True)
contractor_financial_info = models.OneToOneField(ContractorFinancialInfo, related_name='contractor', blank=True, null=True)
contractor_resume = models.OneToOneField(ContractorResume, related_name='contractor', blank=True, null=True) contractor_resume = models.OneToOneField(ContractorResume, related_name='contractor', blank=True, null=True)
contractor_specializations = TreeManyToManyField(Specialization, related_name='contractors', blank=True) contractor_specializations = TreeManyToManyField(Specialization, related_name='contractors', blank=True)
contractor_status = models.CharField(default='free', max_length=20, choices=STATUSES) contractor_status = models.CharField(default='free', max_length=20, choices=STATUSES)
@ -126,6 +125,7 @@ class User(AbstractBaseUser, PermissionsMixin):
date_joined = models.DateTimeField(default=timezone.now) date_joined = models.DateTimeField(default=timezone.now)
date_of_birth = models.DateTimeField(null=True, blank=True) date_of_birth = models.DateTimeField(null=True, blank=True)
email = models.EmailField(max_length=255, unique=True, db_index=True) email = models.EmailField(max_length=255, unique=True, db_index=True)
financial_info = models.OneToOneField(UserFinancialInfo, related_name='user', blank=True, null=True)
first_name = models.CharField(max_length=255, blank=True) first_name = models.CharField(max_length=255, blank=True)
gender = models.CharField(max_length=30, choices=GENDERS, blank=True) gender = models.CharField(max_length=30, choices=GENDERS, blank=True)
is_active = models.BooleanField(default=True) is_active = models.BooleanField(default=True)

@ -1,6 +1,7 @@
{% extends 'partials/base.html' %} {% extends 'partials/base.html' %}
{% load staticfiles %} {% load projects_tags %}
{% load specializtions_tags %}
{% load thumbnail %} {% load thumbnail %}
@ -80,11 +81,9 @@
<a href="javascript:void(0)" class="showCon">показать контакты</a> <a href="javascript:void(0)" class="showCon">показать контакты</a>
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
{% load specializtions_tags %}
{% specialization_widget contractor.pk %} {% specialization_widget contractor.pk %}
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
{% load projects_tags %}
{% ratings_widget contractor.pk %} {% ratings_widget contractor.pk %}
{% if contractor.cro %} {% if contractor.cro %}

@ -1,17 +1,20 @@
{% extends 'partials/base.html' %} {% extends 'partials/base.html' %}
{% load staticfiles %}
{% load thumbnail %} {% load thumbnail %}
{% block content %} {% block content %}
{% include 'partials/header.html' %} {% include 'partials/header.html' %}
<div class="container mainScore"> <div class="container mainScore">
<div class="row"> <div class="row">
<form method="post" enctype="multipart/form-data">{% csrf_token %} <form method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="projectsBlock disTab"> <div class="projectsBlock disTab">
<div class="col-lg-12"> <div class="col-lg-12">
{{ form.errors }} {{ form.errors }}
<div class="col-lg-3 divCol3"> <div class="col-lg-3 divCol3">
<div class="avatar"> <div class="avatar">
<div class="avatarInset"> <div class="avatarInset">
@ -48,17 +51,20 @@
</div> </div>
</div> </div>
</div> </div>
<div class="buttonGP btn-edit disTab"> <div class="buttonGP btn-edit disTab">
<div class="btn-group valProject valProject2" role="group" aria-label="..."> <div class="btn-group valProject valProject2" role="group" aria-label="...">
<button type="button" class="btn btn-default">Общая информация</button> <button type="button" class="btn btn-default">Общая информация</button>
</div> </div>
</div> </div>
<div class="col-lg-12 col12 new-filter"> <div class="col-lg-12 col12 new-filter">
<div class="filter clearfix"> <div class="filter clearfix">
<div class="titleF1 disTab"> <div class="titleF1 disTab">
<div class="col-lg-7">Дата рождения:</div> <div class="col-lg-7">Дата рождения:</div>
<div class="col-lg-5">Пол:</div> <div class="col-lg-5">Пол:</div>
</div> </div>
<div class="polsF1 disTab"> <div class="polsF1 disTab">
<div class="col-lg-7"> <div class="col-lg-7">
{{ form.date_of_birth }} {{ form.date_of_birth }}
@ -70,12 +76,14 @@
<p>Женский</p> <p>Женский</p>
</div> </div>
</div> </div>
<div class="titleF1 titleF2 disTab"> <div class="titleF1 titleF2 disTab">
<div class="col-lg-3">Сайт:</div> <div class="col-lg-3">Сайт:</div>
<div class="col-lg-3">Skype:</div> <div class="col-lg-3">Skype:</div>
{# <div class="col-lg-3">Электронная почта:</div>#} {# <div class="col-lg-3">Электронная почта:</div>#}
<div class="col-lg-3">Телефон:</div> <div class="col-lg-3">Телефон:</div>
</div> </div>
<div class="searchF1 polsF1 polsFF polsF3"> <div class="searchF1 polsF1 polsFF polsF3">
<div class="col-lg-3"> <div class="col-lg-3">
<input type="text" name="{{ form.website.name }}"class="box-sizing surr surr2" placeholder="beeg.com"> <input type="text" name="{{ form.website.name }}"class="box-sizing surr surr2" placeholder="beeg.com">
@ -90,24 +98,29 @@
<input type="text" name="{{ form.phone.name }}" class="box-sizing surr surr2" placeholder="+7 999 999 44 02"> <input type="text" name="{{ form.phone.name }}" class="box-sizing surr surr2" placeholder="+7 999 999 44 02">
</div> </div>
</div> </div>
<div class="col-lg-12"> <div class="col-lg-12">
<div class="col-lg-12 make-new make-eed"> <div class="col-lg-12 make-new make-eed">
<label>{{ form.cro }}<span></span></label> <label>{{ form.cro }}<span></span></label>
<p>Есть допуск СРО</p> <p>Есть допуск СРО</p>
</div> </div>
</div> </div>
<div class="searchF1 polsF1 polsFF links-filter"> <div class="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить" /> <input class="btn-submit-link" type="submit" value="Сохранить" />
</div> </div>
</div> </div>
</div> </div>
</form> </form>
{% include 'partials/footer.html' %} {% include 'partials/footer.html' %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block js_block %} {% block js_block %}
<script type="text/javascript"> <script>
$(function(){ $(function(){
function getCookie(name) { function getCookie(name) {

@ -21,13 +21,13 @@
</div> </div>
<div class="col-lg-4 new-er"> <div class="col-lg-4 new-er">
{% ratings_widget customer.pk %} {% ratings_widget pk %}
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
<a href="javascript:void(0)" class="new-prop new-prop1">показать контакты</a> <a href="javascript:void(0)" class="new-prop new-prop1">показать контакты</a>
<a href="javascript:void(0)" class="new-prop new-prop2">написать сообщение</a> <a href="javascript:void(0)" class="new-prop new-prop2">написать сообщение</a>
<a href="{% url 'users:customers-edit' pk=customer.pk %}" class="new-red">редактировать профиль</a> <a href="{% url 'users:customers-edit' pk=pk %}" class="new-red">редактировать профиль</a>
</div> </div>
</div> </div>

@ -7,7 +7,7 @@ from .views import (
# UserInfoListView, # UserInfoListView,
# UserView, # UserView,
ContractorFilterView, ContractorFilterView,
ContractorFinancialInfoEdit, UserFinancialInfoEditView,
ContractorOfficeDetailView, ContractorOfficeDetailView,
ContractorProfileDetailView, ContractorProfileDetailView,
ContractorProfileEditView, ContractorProfileEditView,
@ -40,5 +40,5 @@ urlpatterns = [
# urls.url(r'^(?P<pk>\d+)/$', UserView.as_view(), name='user_view'), # urls.url(r'^(?P<pk>\d+)/$', UserView.as_view(), name='user_view'),
urls.url(r'contractors/(?P<pk>\d+)/edit/$', ContractorProfileEditView.as_view(), name='contractor-edit'), urls.url(r'contractors/(?P<pk>\d+)/edit/$', ContractorProfileEditView.as_view(), name='contractor-edit'),
urls.url(r'customers/(?P<pk>\d+)/edit/$', CustomerProfileEditView.as_view(), name='customers-edit'), urls.url(r'customers/(?P<pk>\d+)/edit/$', CustomerProfileEditView.as_view(), name='customers-edit'),
urls.url(r'contractors/(?P<pk>\d+)/financialinfo/edit/$', ContractorFinancialInfoEdit.as_view(), name='contractor-financical'), urls.url(r'contractors/(?P<pk>\d+)/financialinfo/edit/$', UserFinancialInfoEditView.as_view(), name='contractor-financical'),
] ]

@ -14,7 +14,7 @@ import natsort
import pydash as _; _.map = _.map_; _.filter = _.filter_ import pydash as _; _.map = _.map_; _.filter = _.filter_
from .mixins import CheckForUserMixin from .mixins import CheckForUserMixin
from .models import User, Team, ContractorFinancialInfo from .models import User, Team, UserFinancialInfo
from archilance import util from archilance import util
from archilance.mixins import BaseMixin from archilance.mixins import BaseMixin
from projects.forms import PortfolioForm from projects.forms import PortfolioForm
@ -25,7 +25,7 @@ from work_sell.forms import WorkSellForm
from .forms import ( from .forms import (
ContractorFilterForm, ContractorFilterForm,
ContractorFinancicalInfoForm, UserFinancicalInfoForm,
CustomerProfileProjectRealtyForm, CustomerProfileProjectRealtyForm,
UserEditForm, UserEditForm,
) )
@ -260,12 +260,14 @@ class CustomerProfileOpenProjectsView(BaseMixin, View):
customer = get_object_or_404(User.customer_objects, pk=kwargs.get('pk')) customer = get_object_or_404(User.customer_objects, pk=kwargs.get('pk'))
form = self.form_class(request.GET, request=request, customer=customer) form = self.form_class(request.GET, request=request, customer=customer)
projects = customer.projects.filter(state='active') projects = customer.projects.filter(state='active')
trashed_projects = customer.projects.filter(state='trashed')
if form.is_valid(): if form.is_valid():
realty = form.cleaned_data.get('realty') realty = form.cleaned_data.get('realty')
if realty: if realty:
projects = projects.filter(realty=realty) projects = projects.filter(realty=realty)
trashed_projects = trashed_projects.filter(realty=realty)
else: else:
if form.errors: if form.errors:
messages.info(request, ( messages.info(request, (
@ -290,7 +292,7 @@ class CustomerProfileOpenProjectsView(BaseMixin, View):
'customer': customer, 'customer': customer,
'open_project_count': projects.paginator.count, 'open_project_count': projects.paginator.count,
'trashed_project_count': customer.projects.filter(state='trashed').count(), 'trashed_project_count': trashed_projects.count(),
'is_paginated': True, 'is_paginated': True,
'page_obj': projects, 'page_obj': projects,
@ -308,12 +310,14 @@ class CustomerProfileTrashedProjectsView(BaseMixin, View):
customer = get_object_or_404(User.customer_objects, pk=kwargs.get('pk')) customer = get_object_or_404(User.customer_objects, pk=kwargs.get('pk'))
form = self.form_class(request.GET, request=request, customer=customer) form = self.form_class(request.GET, request=request, customer=customer)
projects = customer.projects.filter(state='trashed') projects = customer.projects.filter(state='trashed')
open_projects = customer.projects.filter(state='active')
if form.is_valid(): if form.is_valid():
realty = form.cleaned_data.get('realty') realty = form.cleaned_data.get('realty')
if realty: if realty:
projects = projects.filter(realty=realty) projects = projects.filter(realty=realty)
open_projects = open_projects.filter(realty=realty)
else: else:
if form.errors: if form.errors:
messages.info(request, ( messages.info(request, (
@ -337,7 +341,7 @@ class CustomerProfileTrashedProjectsView(BaseMixin, View):
'projects': projects, 'projects': projects,
'customer': customer, 'customer': customer,
'open_project_count': customer.projects.filter(state='active').count(), 'open_project_count': open_projects.count(),
'trashed_project_count': projects.paginator.count, 'trashed_project_count': projects.paginator.count,
'is_paginated': True, 'is_paginated': True,
@ -372,14 +376,34 @@ class CustomerProfileReviewsView(BaseMixin, View):
return render(request, self.template_name, context) return render(request, self.template_name, context)
class CustomerProfileEditView(CheckForUserMixin, View):
class ContractorProfileEditView(CheckForUserMixin, View):
form_class = UserEditForm form_class = UserEditForm
template_name = 'customer_profile_edit.html' template_name = 'contractor_profile_edit.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
instance = get_object_or_404(User, pk=request.user.pk) instance = get_object_or_404(User, pk=request.user.pk)
form = self.form_class(instance=instance) form = self.form_class(instance=instance)
nodes = Specialization.objects.all() root = util.get_or_none(Specialization, name='_root')
nodes = root.get_descendants('lft')
return render(request, self.template_name, {'form': form, 'nodes': nodes}) return render(request, self.template_name, {'form': form, 'nodes': nodes})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
@ -387,22 +411,31 @@ class CustomerProfileEditView(CheckForUserMixin, View):
form = self.form_class(request.POST, request.FILES, instance=instance) form = self.form_class(request.POST, request.FILES, instance=instance)
if form.is_valid(): if form.is_valid():
# import code; code.interact(local=dict(globals(), **locals())) # import code; code.interact(local=dict(globals(), **locals()))
form.save() instance = form.save(commit=False)
messages.info(request, 'Отправили post запрос') instance.save()
return redirect(reverse('users:customer-profile-open-projects', kwargs={'pk': request.user.pk})) messages.info(request, 'Данные успешно отредактированы')
return redirect(reverse('users:contractor-edit', kwargs={'pk': request.user.pk}))
return render(request, self.template_name, {'form': form}) return render(request, self.template_name, {'form': form})
class ContractorProfileEditView(CheckForUserMixin, View):
class CustomerProfileEditView(CheckForUserMixin, View):
form_class = UserEditForm form_class = UserEditForm
template_name = 'contractor_profile_edit.html' template_name = 'customer_profile_edit.html'
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
instance = get_object_or_404(User, pk=request.user.pk) instance = get_object_or_404(User, pk=request.user.pk)
form = self.form_class(instance=instance) form = self.form_class(instance=instance)
root = util.get_or_none(Specialization, name='_root') nodes = Specialization.objects.all()
nodes = root.get_descendants('lft')
return render(request, self.template_name, {'form': form, 'nodes': nodes}) return render(request, self.template_name, {'form': form, 'nodes': nodes})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
@ -410,17 +443,36 @@ class ContractorProfileEditView(CheckForUserMixin, View):
form = self.form_class(request.POST, request.FILES, instance=instance) form = self.form_class(request.POST, request.FILES, instance=instance)
if form.is_valid(): if form.is_valid():
# import code; code.interact(local=dict(globals(), **locals())) # import code; code.interact(local=dict(globals(), **locals()))
instance = form.save(commit=False) form.save()
instance.save() messages.info(request, 'Отправили post запрос')
messages.info(request, 'Данные успешно отредактированы') return redirect(reverse('users:customer-profile-open-projects', kwargs={'pk': request.user.pk}))
return redirect(reverse('users:contractor-edit', kwargs={'pk': request.user.pk}))
return render(request, self.template_name, {'form': form}) return render(request, self.template_name, {'form': form})
class ContractorFinancialInfoEdit(CheckForUserMixin, View):
class UserFinancialInfoEditView(CheckForUserMixin, View):
template_name = 'contractor_financical_info_edit.html' template_name = 'contractor_financical_info_edit.html'
form_class = ContractorFinancicalInfoForm form_class = UserFinancicalInfoForm
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
instance = request.user.contractor_financial_info instance = request.user.contractor_financial_info

Loading…
Cancel
Save