#ARC-27 Fixes bugs

remotes/origin/setup
Mukhtar 10 years ago
parent 2ce6c75793
commit 07596af147
  1. 2
      archilance/settings/base.py
  2. 18
      templates/partials/footer.html
  3. 4
      templates/partials/header.html
  4. 30
      templates/partials/header_guest.html
  5. 17
      templates/registration/activation_complete.html
  6. 9
      templates/registration/registration_complete.html
  7. 43
      templates/registration/registration_form.html
  8. 10
      users/forms.py
  9. 108
      users/templates/contractor_profile.html
  10. 0
      users/templates/contractor_resume_edit.html
  11. 3
      users/urls.py
  12. 26
      users/views.py

@ -111,7 +111,7 @@ WSGI_APPLICATION = 'archilance.wsgi.application'
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'archilance', 'NAME': 'archilance2',
'USER': 'postgres', 'USER': 'postgres',
'PASSWORD': 'postgres', 'PASSWORD': 'postgres',
'HOST': 'localhost', 'HOST': 'localhost',

@ -20,19 +20,19 @@
<p>Профиль</p> <p>Профиль</p>
<ul> <ul>
<li> <li>
<a href="javascript:void(0)">Войти</a> <a href="{% url 'auth_login' %}">Войти</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">Регистрация</a> <a href="">Регистрация</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">Востановить доступ</a> <a href="">Востановить доступ</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">Опубликовать проект</a> <a href="">Опубликовать проект</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -42,23 +42,23 @@
<ul> <ul>
<li> <li>
<a href="javascript:void(0)">Помощь</a> <a href="">Помощь</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">Правила сайта</a> <a href="">Правила сайта</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">Команда</a> <a href="">Команда</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">FAQ</a> <a href="">FAQ</a>
</li> </li>
<li> <li>
<a href="javascript:void(0)">Контакты</a> <a href="">Контакты</a>
</li> </li>
</ul> </ul>
</div> </div>

@ -100,7 +100,7 @@
</a> </a>
</li> </li>
<li class="icon_mm3"> <li class="icon_mm3">
<a href="#">Сообщения<span></span></a> <a href="{% url 'chat:chat-user' %}">Сообщения<span></span></a>
</li> </li>
<li class="icon_mm4"> <li class="icon_mm4">
<a href="{% url 'wallets:score-detail' pk=request.user.pk %}">Счет<span></span></a> <a href="{% url 'wallets:score-detail' pk=request.user.pk %}">Счет<span></span></a>
@ -126,7 +126,7 @@
{% else %} {% else %}
<div class="col-lg-2"> <div class="col-lg-2">
<a href="{% url 'registration_register' %}" class="reg">Регистрация</a> <a href="{% url 'registration_register' %}" class="reg">Регистрация</a>
<div class="lock"></div> <a href="{% url 'auth_login' %}"><div class="lock"></div></a>
</div> </div>
{% endif %} {% endif %}
</div> </div>

@ -1,30 +0,0 @@
{% load staticfiles %}
<div class="wrTop {">
<div class="container-fluid topMain">
<div class="row">
<div class="col-lg-3">
<div class="logo" onClick="window.location='/'"></div>
</div>
<div class="col-lg-7">
<ul class="mainMenu">
<li class="icon_tm1">
<a href="javascript:void(0)">Биржа проектов</a>
<span></span>
</li>
<li class="icon_tm2">
<a href="javascript:void(0)">Поиск исполнителей</a>
<span></span>
</li>
<li class="icon_tm3">
<a href="javascript:void(0)">Работы на продажу</a>
<span></span>
</li>
</ul>
</div>
<div class="col-lg-2">
<a href="javascript:void(0)" class="reg">регистрация</a>
<div class="lock"></div>
</div>
</div>
</div>
</div>

@ -1 +1,16 @@
<h1>Активация пользователя</h1> {% extends 'partials/base.html' %}
{% block content %}
{% include 'partials/header.html' %}
<div class="container mainScore">
<div class="row">
<div class="col-lg-12">
<p class="titleScore">Активация пользователя</p>
</div>
{% include 'partials/footer.html' %}
</div>
</div>
{% endblock %}

@ -1,7 +1,16 @@
{% extends 'partials/base.html' %} {% extends 'partials/base.html' %}
{% block content %} {% block content %}
{% include 'partials/header.html' %}
<div class="container mainScore">
<div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<p class="titleScore">Регистрация прошла успешно</p> <p class="titleScore">Регистрация прошла успешно</p>
</div> </div>
{% include 'partials/footer.html' %}
</div>
</div>
{% endblock %} {% endblock %}

@ -1,6 +1,8 @@
{% extends 'partials/base.html' %} {% extends 'partials/base.html' %}
{% block content %} {% block content %}
{% include 'partials/header.html' %} {% include 'partials/header.html' %}
<div class="container mainScore">
<div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<p class="titleScore">Регистрация </p> <p class="titleScore">Регистрация </p>
</div> </div>
@ -23,22 +25,28 @@
{% endif %} {% endif %}
</div> </div>
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<input type="text" name="{{ form.username.name }}" class="box-sizing email-reg" placeholder="Nickname"> <input type="text" name="{{ form.username.name }}" class="box-sizing email-reg"
placeholder="Nickname">
</div> </div>
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<input type="text" name="{{ form.email.name }}" class="box-sizing email-reg" placeholder="Электронная почта"> <input type="text" name="{{ form.email.name }}" class="box-sizing email-reg"
placeholder="Электронная почта">
</div> </div>
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<input type="password" name="{{ form.password1.name }}" class="box-sizing pass-reg" placeholder="Пароль"> <input type="password" name="{{ form.password1.name }}" class="box-sizing pass-reg"
placeholder="Пароль">
</div> </div>
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<input type="password" name="{{ form.password2.name }}" class="box-sizing pass-reg" placeholder="Пароль"> <input type="password" name="{{ form.password2.name }}" class="box-sizing pass-reg"
placeholder="Пароль">
</div> </div>
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<button class="reg-sub">Зарегистрироваться</button> <button class="reg-sub">Зарегистрироваться</button>
</div> </div>
<div class="col-lg-12"> <div class="clearfix"></div>
<div class="col-lg-12" style="margin-top: 10px;">
<div class="col-xs-12 text-center"> <div class="col-xs-12 text-center">
<div class="btn-group" role="group"> <div class="btn-group" role="group">
@ -78,23 +86,18 @@
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<div class="check-reg"> <div class="check-reg">
<label><input type="checkbox" name="check-reg"><span></span></label> <label><input type="checkbox" name="check-reg"><span></span></label>
<p>Регистрируясь, я подтверждаю свое согласие у условиями <a href="#">пользавательского соглашения</a></p> <p>Регистрируясь, я подтверждаю свое согласие у условиями <a href="#">пользавательского
соглашения</a></p>
</div> </div>
</div> </div>
</form> </form>
<div class="col-lg-12 select-reg"> <div class="col-lg-12 select-reg">
<a href="#" class="have-ac">Я уже зарегистрирован на ресурсе</a> <a href="" class="have-ac">Я уже зарегистрирован на ресурсе</a>
</div> </div>
</div>
{#<h1>Регистрация</h1>#} </div>
{# <form action="" method="post">#}
{# {% csrf_token %}#} {% include 'partials/footer.html' %}
{# {% for field in form %}#} </div>
{# <div class="row">#} </div>
{# {{ field.label }}#}
{# {{ field }}#}
{# </div>#}
{# {% endfor %}#}
{# <input type="submit" value="Зарегистрировать">#}
{# </form>#}
{% endblock %} {% endblock %}

@ -2,7 +2,7 @@ from django import forms
import itertools import itertools
import pydash as _; _.map = _.map_; _.filter = _.filter_ import pydash as _; _.map = _.map_; _.filter = _.filter_
from .models import User, UserFinancialInfo, Team, GENDERS from .models import User, UserFinancialInfo, Team, ContractorResume, GENDERS
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
@ -18,6 +18,14 @@ class TeamForm(forms.ModelForm):
) )
class ContractorResumeForm(forms.ModelForm):
class Meta:
model = ContractorResume
fields = (
'text',
)
class UserProfileEditForm(forms.ModelForm): class UserProfileEditForm(forms.ModelForm):
gender = forms.ChoiceField( gender = forms.ChoiceField(
choices=GENDERS, choices=GENDERS,

@ -122,7 +122,8 @@
<div class="modal-dialog" style="width:900px;"> <div class="modal-dialog" style="width:900px;">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">× <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button> </button>
<h4 class="modal-title">Добавить портфолио</h4> <h4 class="modal-title">Добавить портфолио</h4>
</div> </div>
@ -150,10 +151,13 @@
</div> </div>
</a> </a>
<div class="insetBI insetBI2"> <div class="insetBI insetBI2">
<form action="{% url 'projects:contractor-portfolio-trash' pk=p.pk %}" method="POST" novalidate> <form action="{% url 'projects:contractor-portfolio-trash' pk=p.pk %}"
method="POST" novalidate>
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}"> <input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false"><i class="fa fa-times"></i></a> <a href="#"
onclick="$(this).closest('form').submit(); return false"><i
class="fa fa-times"></i></a>
</form> </form>
</div> </div>
@ -182,7 +186,8 @@
<div class="modal-dialog" style="width: 900px;"> <div class="modal-dialog" style="width: 900px;">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">× <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button> </button>
<h4 class="modal-title">Добавить готовую работу</h4> <h4 class="modal-title">Добавить готовую работу</h4>
</div> </div>
@ -198,7 +203,8 @@
<div class="insetCol box-sizing disTab"> <div class="insetCol box-sizing disTab">
{% thumbnail ws.get_cover "224x224" crop="center" as im %} {% thumbnail ws.get_cover "224x224" crop="center" as im %}
<div class="imgGal" style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;"> <div class="imgGal"
style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;">
<div class="imgFigure"></div> <div class="imgFigure"></div>
</div> </div>
{% endthumbnail %} {% endthumbnail %}
@ -219,10 +225,13 @@
</a> </a>
</div> </div>
<div class="insetBI insetBI2"> <div class="insetBI insetBI2">
<form action="{% url 'work_sell:contractor-worksell-trash' pk=ws.pk %}" method="POST" novalidate> <form action="{% url 'work_sell:contractor-worksell-trash' pk=ws.pk %}"
method="POST" novalidate>
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}"> <input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false"><i class="fa fa-times"></i></a> <a href="#"
onclick="$(this).closest('form').submit(); return false"><i
class="fa fa-times"></i></a>
</form> </form>
</div> </div>
@ -244,10 +253,7 @@
<input type="file" name="upload"> <input type="file" name="upload">
<p>Загрузить резюме</p> <p>Загрузить резюме</p>
</div> </div>
<div class="upload2 up-l2"> {#w#}
<input type="file" name="upload">
<p>Загрузить файл</p>
</div>
</div> </div>
<div class="col-lg-9 resume-block"> <div class="col-lg-9 resume-block">
<div class="block-is box-sizing"> <div class="block-is box-sizing">
@ -271,35 +277,30 @@
<div class="list-summ-block"> <div class="list-summ-block">
<div class="col-lg-4"> <div class="col-lg-4">
<ul class="list-summ"> <ul class="list-summ">
{% if contractor.website %}
<li>{{ contractor.website }}</li> <li>{{ contractor.website }}</li>
{% endif %}
<li>{{ contractor.email }}</li> <li>{{ contractor.email }}</li>
{% if contractor.phone %}
<li>{{ contractor.phone }}</li> <li>{{ contractor.phone }}</li>
<li>Россия, Москва</li> {% endif %}
</ul> </ul>
</div> </div>
<div class="col-lg-6 col-lg-offset-2"> <div class="col-lg-6 col-lg-offset-2">
<div class="dashedCol4"> {% specialization_widget contractor.pk %}
<p class="specUser">
Специализации:
</p>
<div class="insetSpec">
<span>Интерьеры</span>
<span>2-й</span>
</div>
<div class="insetSpec">
<span>Визуализация/3D</span>
<span>45-й</span>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-12 wr-inset-pluss"> <div class="col-lg-12 wr-inset-pluss">
<div class="pluss-block"> <div class="pluss-block" id="resume-text-out">
{{ contractor.contractor_resume.text }} {{ contractor.contractor_resume.text }}
<a href="#" data-toggle="modal" data-target="#resume-text-edit">
<a href="#" data-toggle="modal" data-target="#resume-text-edit">Редактировать</a> <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
</a>
</div> </div>
<!-- Редактирование текста резюме (модальное окно)--> <!-- Редактирование текста резюме (модальное окно)-->
@ -307,19 +308,25 @@
<div class="modal-dialog" style="width:900px;"> <div class="modal-dialog" style="width:900px;">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×
</button>
<h4 class="modal-title">Редактировать текст резюме</h4> <h4 class="modal-title">Редактировать текст резюме</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div style="height: 180px;">
<form id="resume-edit-form">
<div class="textAreaBlock2 text-nn box-sizing disTab"> <div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Описание резюме</p> <textarea name="text"
<textarea name="" id="text-new">{{ contractor.contractor_resume.text }}</textarea> id="text-new">{{ contractor.contractor_resume.text }}</textarea>
</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>
</form>
</div>
</div> </div>
<div class="modal-footer"></div> <div class="modal-footer"></div>
</div> </div>
@ -439,8 +446,37 @@
{% block js_block %} {% block js_block %}
<script type="text/javascript"> <script type="text/javascript">
var userId = '{{ contractor.pk }}'; var userId = '{{ contractor.pk }}';
$(function () { $(function () {
$('#resume-edit-form').on('submit', function (e) {
e.preventDefault();
var resumeEditUrl = "{% url 'users:contractor-resume-update' contractor.contractor_resume.pk %}";
var dataSerializer = $(this).serialize();
$.ajax({
url: resumeEditUrl,
method: 'POST',
beforeSend: function (xhr) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'))
},
data: dataSerializer,
dataType: 'json',
success: function (data) {
console.log(data);
if (data.status == 'ok') {
$("#resume-text-out").html(data.text);
$("#resume-text-edit").close();
}
},
error: function (jqXHR, exception) {
console.log(jqXHR);
console.log(exception);
console.log(jqXHR.statusCode);
}
});
});
$('#worksell-add-form').on('submit', function (e) { $('#worksell-add-form').on('submit', function (e) {
e.preventDefault(); e.preventDefault();
var dataSerializer = $(this).serialize(); var dataSerializer = $(this).serialize();
@ -574,7 +610,8 @@
} }
}, },
dataType: 'json', dataType: 'json',
done: function (e, data) {; done: function (e, data) {
;
$.each(data.result.files, function (index, file) { $.each(data.result.files, function (index, file) {
var htmlImg = '<div class="col-lg-4"><div class="insetCol box-sizing disTab"><div class="imgGal" style="background: url(+ file.url +) no-repeat center;"><div class="imgFigure"></div></div></div> ' + var htmlImg = '<div class="col-lg-4"><div class="insetCol box-sizing disTab"><div class="imgGal" style="background: url(+ file.url +) no-repeat center;"><div class="imgFigure"></div></div></div> ' +
'<div class="insetCol2 box-sizing disTab"><p>Название</p><div class="buttonsImg" distab="">' + '<div class="insetCol2 box-sizing disTab"><p>Название</p><div class="buttonsImg" distab="">' +
@ -607,7 +644,8 @@
} }
}, },
dataType: 'json', dataType: 'json',
done: function (e, data) {; done: function (e, data) {
;
$.each(data.result.files, function (index, file) { $.each(data.result.files, function (index, file) {
var htmlImg = '<div class="col-lg-4"><div class="insetCol box-sizing disTab"><div class="imgGal" style="background: url(+ file.url +) no-repeat center;"><div class="imgFigure"></div></div></div> ' + var htmlImg = '<div class="col-lg-4"><div class="insetCol box-sizing disTab"><div class="imgGal" style="background: url(+ file.url +) no-repeat center;"><div class="imgFigure"></div></div></div> ' +
'<div class="insetCol2 box-sizing disTab"><p>Название</p><div class="buttonsImg" distab="">' + '<div class="insetCol2 box-sizing disTab"><p>Название</p><div class="buttonsImg" distab="">' +

@ -15,6 +15,7 @@ from .views import (
UserListView, UserListView,
UserProfileEditView, UserProfileEditView,
TeamCreateView, TeamCreateView,
ContractorResumeUpdateView,
) )
@ -32,6 +33,8 @@ urlpatterns = [
urls.url(r'^customers/(?P<pk>\d+)/reviews/$', CustomerProfileReviewsView.as_view(), name='customer-profile-reviews'), urls.url(r'^customers/(?P<pk>\d+)/reviews/$', CustomerProfileReviewsView.as_view(), name='customer-profile-reviews'),
urls.url(r'^contractors/$', ContractorFilterView.as_view(), name='contractor-filter'), urls.url(r'^contractors/$', ContractorFilterView.as_view(), name='contractor-filter'),
urls.url(r'^contractors/resume/(?P<pk>\d+)/edit/$', ContractorResumeUpdateView.as_view(), name='contractor-resume-update'),
urls.url(r'^contractors/team/create/$', TeamCreateView.as_view(), name='team-create'), urls.url(r'^contractors/team/create/$', TeamCreateView.as_view(), name='team-create'),
urls.url(r'^contractors/(?P<pk>\d+)/$', ContractorProfileDetailView.as_view(), name='contractor-profile'), urls.url(r'^contractors/(?P<pk>\d+)/$', ContractorProfileDetailView.as_view(), name='contractor-profile'),
urls.url(r'^contractor-office/(?P<pk>\d+)/$', ContractorOfficeDetailView.as_view(), name='contractor-office'), urls.url(r'^contractor-office/(?P<pk>\d+)/$', ContractorOfficeDetailView.as_view(), name='contractor-office'),

@ -1,6 +1,9 @@
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.models import Group from django.views.generic import UpdateView
from .models import ContractorResume
from .forms import ContractorResumeForm
from django.http import JsonResponse
from django.core.mail import send_mail from django.core.mail import send_mail
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@ -499,6 +502,27 @@ class TeamCreateView(View):
return redirect('users:contractor-office', pk=request.user.pk) return redirect('users:contractor-office', pk=request.user.pk)
class ContractorResumeUpdateView(UpdateView):
model = ContractorResume
form_class = ContractorResumeForm
def form_valid(self, form):
if self.request.is_ajax():
self.object = form.save()
data = {
'text': self.object.text,
'status': 'ok',
}
return JsonResponse(data)
return super().form_valid(form)
def form_invalid(self, form):
if self.request.is_ajax():
return JsonResponse(form.errors, status=400)
return super().form_invalid(form)
class CustomerProfileReviewsView(BaseMixin, View): class CustomerProfileReviewsView(BaseMixin, View):
template_name = 'customer_profile_reviews.html' template_name = 'customer_profile_reviews.html'

Loading…
Cancel
Save