#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 = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'archilance',
'NAME': 'archilance2',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'localhost',

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

@ -100,7 +100,7 @@
</a>
</li>
<li class="icon_mm3">
<a href="#">Сообщения<span></span></a>
<a href="{% url 'chat:chat-user' %}">Сообщения<span></span></a>
</li>
<li class="icon_mm4">
<a href="{% url 'wallets:score-detail' pk=request.user.pk %}">Счет<span></span></a>
@ -126,7 +126,7 @@
{% else %}
<div class="col-lg-2">
<a href="{% url 'registration_register' %}" class="reg">Регистрация</a>
<div class="lock"></div>
<a href="{% url 'auth_login' %}"><div class="lock"></div></a>
</div>
{% endif %}
</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' %}
{% 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,6 +1,8 @@
{% 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>
@ -23,22 +25,28 @@
{% endif %}
</div>
<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 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 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 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 class="col-lg-12 select-reg">
<button class="reg-sub">Зарегистрироваться</button>
</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="btn-group" role="group">
@ -78,23 +86,18 @@
<div class="col-lg-12 select-reg">
<div class="check-reg">
<label><input type="checkbox" name="check-reg"><span></span></label>
<p>Регистрируясь, я подтверждаю свое согласие у условиями <a href="#">пользавательского соглашения</a></p>
<p>Регистрируясь, я подтверждаю свое согласие у условиями <a href="#">пользавательского
соглашения</a></p>
</div>
</div>
</form>
<div class="col-lg-12 select-reg">
<a href="#" class="have-ac">Я уже зарегистрирован на ресурсе</a>
</div>
</div>
{#<h1>Регистрация</h1>#}
{# <form action="" method="post">#}
{# {% csrf_token %}#}
{# {% for field in form %}#}
{# <div class="row">#}
{# {{ field.label }}#}
{# {{ field }}#}
{# </div>#}
{# {% endfor %}#}
{# <input type="submit" value="Зарегистрировать">#}
{# </form>#}
<a href="" class="have-ac">Я уже зарегистрирован на ресурсе</a>
</div>
</div>
{% include 'partials/footer.html' %}
</div>
</div>
{% endblock %}

@ -2,7 +2,7 @@ from django import forms
import itertools
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 projects.models import Project, Realty, BuildingClassfication, ConstructionType
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):
gender = forms.ChoiceField(
choices=GENDERS,

@ -122,7 +122,8 @@
<div class="modal-dialog" style="width:900px;">
<div class="modal-content">
<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>
<h4 class="modal-title">Добавить портфолио</h4>
</div>
@ -150,10 +151,13 @@
</div>
</a>
<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 %}
<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>
</div>
@ -182,7 +186,8 @@
<div class="modal-dialog" style="width: 900px;">
<div class="modal-content">
<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>
<h4 class="modal-title">Добавить готовую работу</h4>
</div>
@ -198,7 +203,8 @@
<div class="insetCol box-sizing disTab">
{% 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>
{% endthumbnail %}
@ -219,10 +225,13 @@
</a>
</div>
<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 %}
<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>
</div>
@ -244,10 +253,7 @@
<input type="file" name="upload">
<p>Загрузить резюме</p>
</div>
<div class="upload2 up-l2">
<input type="file" name="upload">
<p>Загрузить файл</p>
</div>
{#w#}
</div>
<div class="col-lg-9 resume-block">
<div class="block-is box-sizing">
@ -271,35 +277,30 @@
<div class="list-summ-block">
<div class="col-lg-4">
<ul class="list-summ">
{% if contractor.website %}
<li>{{ contractor.website }}</li>
{% endif %}
<li>{{ contractor.email }}</li>
{% if contractor.phone %}
<li>{{ contractor.phone }}</li>
<li>Россия, Москва</li>
{% endif %}
</ul>
</div>
<div class="col-lg-6 col-lg-offset-2">
<div class="dashedCol4">
<p class="specUser">
Специализации:
</p>
<div class="insetSpec">
<span>Интерьеры</span>
<span>2-й</span>
</div>
<div class="insetSpec">
<span>Визуализация/3D</span>
<span>45-й</span>
</div>
</div>
{% specialization_widget contractor.pk %}
</div>
</div>
</div>
</div>
<div class="col-lg-12 wr-inset-pluss">
<div class="pluss-block">
<div class="pluss-block" id="resume-text-out">
{{ contractor.contractor_resume.text }}
<a href="#" data-toggle="modal" data-target="#resume-text-edit">Редактировать</a>
<a href="#" data-toggle="modal" data-target="#resume-text-edit">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
</a>
</div>
<!-- Редактирование текста резюме (модальное окно)-->
@ -307,19 +308,25 @@
<div class="modal-dialog" style="width:900px;">
<div class="modal-content">
<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>
</div>
<div class="modal-body">
<div style="height: 180px;">
<form id="resume-edit-form">
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Описание резюме</p>
<textarea name="" id="text-new">{{ contractor.contractor_resume.text }}</textarea>
<textarea name="text"
id="text-new">{{ contractor.contractor_resume.text }}</textarea>
</div>
<div class="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить">
</div>
</form>
</div>
</div>
<div class="modal-footer"></div>
</div>
@ -439,8 +446,37 @@
{% block js_block %}
<script type="text/javascript">
var userId = '{{ contractor.pk }}';
$(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) {
e.preventDefault();
var dataSerializer = $(this).serialize();
@ -574,7 +610,8 @@
}
},
dataType: 'json',
done: function (e, data) {;
done: function (e, data) {
;
$.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> ' +
'<div class="insetCol2 box-sizing disTab"><p>Название</p><div class="buttonsImg" distab="">' +
@ -607,7 +644,8 @@
}
},
dataType: 'json',
done: function (e, data) {;
done: function (e, data) {
;
$.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> ' +
'<div class="insetCol2 box-sizing disTab"><p>Название</p><div class="buttonsImg" distab="">' +

@ -15,6 +15,7 @@ from .views import (
UserListView,
UserProfileEditView,
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'^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/(?P<pk>\d+)/$', ContractorProfileDetailView.as_view(), name='contractor-profile'),
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.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.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse
@ -499,6 +502,27 @@ class TeamCreateView(View):
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):
template_name = 'customer_profile_reviews.html'

Loading…
Cancel
Save