#ARC-15 Fixes bugs

remotes/origin/PR-39
Mukhtar 10 years ago
parent ec304ec0b2
commit 26bd83ef97
  1. 1
      archilance/settings/prod.py
  2. 19
      common/templatetags/common_tags.py
  3. 15
      projects/models.py
  4. 29
      projects/templates/comparison.html
  5. 9
      users/models.py
  6. 67
      users/templates/contractor_profile.html

@ -15,4 +15,5 @@ DATABASES = {
DEBUG = True DEBUG = True
TEMPLATE_DEBUG = True TEMPLATE_DEBUG = True
THUMBNAIL_DEBUG = True
SECRET_KEY = 'vb6@b9zj7^f!^+x*e8=e!oundyu1!e*&0i(3gu2xwo4%fx4h&n' SECRET_KEY = 'vb6@b9zj7^f!^+x*e8=e!oundyu1!e*&0i(3gu2xwo4%fx4h&n'

@ -11,6 +11,25 @@ register = template.Library()
# def inspect(context, obj): # def inspect(context, obj):
# return {'obj': pformat(obj.__dict__)} # return {'obj': pformat(obj.__dict__)}
@register.simple_tag
def morph_words(number, words):
words = words.split(',')
try:
if type(number) == str:
number = int(number)
except Exception:
return words[2]
if number > 10:
number %= 10
if number == 1:
return words[0]
elif 1 < number < 5:
return words[1]
else:
return words[2]
@register.filter @register.filter
def inspect(obj): def inspect(obj):

@ -132,6 +132,18 @@ class Answer(models.Model):
object_id = models.IntegerField() object_id = models.IntegerField()
author = GenericForeignKey('content_type', 'object_id') author = GenericForeignKey('content_type', 'object_id')
def get_first_message(self):
return self.messages.first().text
def get_term_type_labels(self):
term_type_labels = {
'hour': 'час,часа,часов',
'day': 'день,дня,дней',
'month': 'месяц,мксяца,месяцев',
'project': 'проект,проект,проект'
}
return term_type_labels.get(self.term_type)
def __str__(self): def __str__(self):
return "{author}'s answer ({id})".format(author=type(self.author).__name__, id=self.pk) return "{author}'s answer ({id})".format(author=type(self.author).__name__, id=self.pk)
@ -161,6 +173,7 @@ class AnswerMessage(models.Model):
return str(self.pk) return str(self.pk)
class Meta: class Meta:
ordering = ['created']
verbose_name = 'Отклики на проекты -- переписка' verbose_name = 'Отклики на проекты -- переписка'
verbose_name_plural = 'Отклики на проекты -- переписки' verbose_name_plural = 'Отклики на проекты -- переписки'
@ -261,7 +274,7 @@ class Portfolio(models.Model):
def get_cover(self): def get_cover(self):
photo = self.photos.first() photo = self.photos.first()
return photo and photo.img.url return photo and photo.img
class PortfolioPhoto(models.Model): class PortfolioPhoto(models.Model):

@ -1,6 +1,7 @@
{% extends 'partials/base.html' %} {% extends 'partials/base.html' %}
{% load staticfiles %} {% load staticfiles %}
{% load i18n %}
{% block content %} {% block content %}
{% include 'partials/header.html' %} {% include 'partials/header.html' %}
@ -8,7 +9,8 @@
<div class="container mainScore"> <div class="container mainScore">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<p class="titleScore">Сравнение кандидатов по проекту</p> <p class="titleScore">
Сравнение кандидатов по проекту</p>
</div> </div>
<div class="titleBlockComparison disTab"> <div class="titleBlockComparison disTab">
@ -38,22 +40,26 @@
<td>{{ cand.answer.budget }} <i class="fa fa-rub"></i></td> <td>{{ cand.answer.budget }} <i class="fa fa-rub"></i></td>
<td> <td>
{{ cand.answer.term }}<br> <span>{{ cand.answer.term_type }}</span>
{{ cand.answer.term }}<br> <span>
{% morph_words cand.answer.term cand.answer.get_term_type_labels %}
</span>
</td> </td>
<td> <td>
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> <span class="glyphicon glyphicon-info-sign" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="{{ cand.answer.get_first_message }}"></span>
</td> </td>
<td> <td>
<ul> <ul>
<li><span>0</span></li>
<li><span>{{ cand.answer.author.rating }}</span></li>
<li> <li>
<span>+0</span> <span>+0</span> 0 <small> - 0</small>
0
<small> - 0</small>
</li> </li>
{% if cand.answer.contractor.cro %}
{% if cand.answer.author.cro %}
<li> <li>
СРО СРО
</li> </li>
@ -63,7 +69,9 @@
<td> <td>
<span>0</span><br> <span>0</span><br>
Готов работать по безопасной сделке {% if cand.answer.secure_deal_only %}
Готов работать по безопасной сделке
{% endif %}
</td> </td>
<td> <td>
@ -79,8 +87,9 @@
<form method="POST" action="{% url 'projects:delete-candidate' cand.pk %}"> <form method="POST" action="{% url 'projects:delete-candidate' cand.pk %}">
{% csrf_token %}<input class="btnTab btnTab3" type="submit" value=""> {% csrf_token %}<input class="btnTab btnTab3" type="submit" value="">
</form> </form>
<a href="{% url 'users:contractor-profile' cand.answer.author.pk %}#open-contact">
<div class="btnTab btnTab4"></div> <div class="btnTab btnTab4"></div>
</a>
</div> </div>
</td> </td>
</tr> </tr>

@ -142,6 +142,15 @@ class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=50, unique=True) username = models.CharField(max_length=50, unique=True)
website = models.CharField(max_length=255, blank=True) website = models.CharField(max_length=255, blank=True)
def get_location(self):
if self.location:
if self.location.level == 3:
return self.location.parent.parent.name + ', ' + self.location.name
else:
return None
else:
return None
@property @property
def is_staff(self): def is_staff(self):
return self.is_superuser return self.is_superuser

@ -13,12 +13,11 @@
<div class="col-lg-3 divCol3"> <div class="col-lg-3 divCol3">
<div class="avatar"> <div class="avatar">
<div class="avatarInset"> <div class="avatarInset">
{# {% thumbnail contractor.avatar "235x224" crop="center" as im %}#}
{# <img src="{{ im.url }}" alt="profile-image">#}
{# {% endthumbnail %}#}
{% if contractor.avatar %} {% if contractor.avatar %}
<img src="{{ contractor.avatar.url }}" alt="profile-image"> {% thumbnail contractor.avatar "235x224" crop="center" as im %}
<img src="{{ im.url }}" alt="profile-image">
{% endthumbnail %}
{% else %} {% else %}
<img src="{% static 'img/profile.jpg' %}" alt="profile-image"> <img src="{% static 'img/profile.jpg' %}" alt="profile-image">
{% endif %} {% endif %}
@ -33,12 +32,7 @@
</a> </a>
<span></span> <span></span>
</li> </li>
<li class="icon_um1">
<a href="{% url 'users:user-profile-edit' pk=contractor.pk %}">
редактировать профиль
</a>
<span></span>
</li>
{% endif %} {% endif %}
{% if contractor.pk != request.user.pk and request.user.is_contractor %} {% if contractor.pk != request.user.pk and request.user.is_contractor %}
@ -76,13 +70,14 @@
<p class="nameUser"> <p class="nameUser">
{{ contractor.get_full_name }} [{{ contractor.username }}] {{ contractor.get_full_name }} [{{ contractor.username }}]
</p> </p>
<p class="cityUser">Россия, Москва</p> <p class="cityUser">{{ contractor.get_location }}</p>
<p class="navv">На сайте 8 лет и 3 месяца</p> <p class="navv">На сайте c {{ contractor.created|date:"d M Y"}}</p>
{% if contractor.contractor_status == 'free' %} {% if contractor.contractor_status == 'free' %}
<div class="statusUser">Свободен</div> <div class="statusUser">Свободен</div>
{% else %}
<div class="statusUser busy">Занят</div>
{% endif %} {% endif %}
<a href="#" data-toggle="modal" data-target="#contact-contactor-modal" class="showCon">показать контакты</a> <a href="#" data-toggle="modal" data-target="#contact-contactor-modal" class="showCon">показать контакты</a>
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
@ -99,6 +94,7 @@
{% endif %} {% endif %}
</div> </div>
</div> </div>
<div id="contact-contactor-modal" class="modal fade"> <div id="contact-contactor-modal" class="modal fade">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
@ -108,11 +104,27 @@
<h4 class="modal-title">Контакты владельца </h4> <h4 class="modal-title">Контакты владельца </h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<h2>Здесь находятся контакты владельца</h2> <div class="row" style="height: 100px;">
<div class="col-lg-8 col-lg-offset-1">
<ul class="list-summ">
{% if contractor.website %}
<li>{{ contractor.website }}</li>
{% endif %}
<li>{{ contractor.email }}</li>
{% if contractor.phone %}
<li>{{ contractor.phone }}</li>
{% endif %}
</ul>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-9"> <div class="col-lg-9">
<div class="profileTabs2"> <div class="profileTabs2">
<ul class="nav nav-tabs nav-justified"> <ul class="nav nav-tabs nav-justified">
@ -161,10 +173,15 @@
{% for p in contractor.portfolios.all %} {% for p in contractor.portfolios.all %}
<div class="col-lg-4"> <div class="col-lg-4">
<div class="insetCol box-sizing disTab"> <div class="insetCol box-sizing disTab">
<div class="imgGal"
style="background:rgba(0, 0, 0, 0) url('{{ p.get_cover }}') no-repeat scroll center center / cover ;"> {% thumbnail p.get_cover "224x224" crop="center" as im %}
<div class="imgFigure"></div> <div class="imgGal"
</div> style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;">
<a class="open-modal-image" href="{{ p.get_cover.url }}"><div class="imgFigure"></div></a>
</div>
{% endthumbnail %}
</div> </div>
<div class="insetCol2 box-sizing disTab"> <div class="insetCol2 box-sizing disTab">
<p>{{ p.name }}</p> <p>{{ p.name }}</p>
@ -231,7 +248,7 @@
{% thumbnail ws.get_cover "224x224" crop="center" as im %} {% thumbnail ws.get_cover "224x224" crop="center" as im %}
<div class="imgGal" <div class="imgGal"
style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;"> style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;">
<div class="imgFigure"></div> <a class="open-modal-image" href="{{ ws.get_cover.url }}"><div class="imgFigure"></div></a>
</div> </div>
{% endthumbnail %} {% endthumbnail %}
</a> </a>
@ -480,10 +497,20 @@
{% block js_block %} {% block js_block %}
<script type="text/javascript" src='{% static "js/jquery.magnific-popup.min.js" %}'></script>
<script type="text/javascript"> <script type="text/javascript">
var userId = '{{ contractor.pk }}'; var userId = '{{ contractor.pk }}';
$(function () { $(function () {
var hash = window.location.hash;
if (hash == '#open-contact'){
$("#contact-contactor-modal").modal();
}
$('.open-modal-image').magnificPopup({
type: 'image'
});
$('#resume-edit-form').on('submit', function (e) { $('#resume-edit-form').on('submit', function (e) {
e.preventDefault(); e.preventDefault();

Loading…
Cancel
Save