remotes/origin/PR-39
Mukhtar 10 years ago
commit 3e4596c7ad
  1. 3
      archilance/settings/base.py
  2. 34
      archilance/util.py
  3. 2
      assets/js/chat.js
  4. 8
      common/templatetags/common_tags.py
  5. 30
      projects/templates/project_detail.html
  6. 2
      templates/partials/base.html
  7. 20
      users/models.py
  8. 5
      users/templates/contractor_profile.html

@ -117,9 +117,10 @@ TEMPLATES = [
# Load these templatetags by default:
'builtins': [
'common.templatetags.common_tags',
'django.contrib.humanize.templatetags.humanize',
'django.templatetags.static',
'mathfilters.templatetags.mathfilters',
'common.templatetags.common_tags',
],
},
},

@ -3,6 +3,7 @@ from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import _get_queryset
from django.utils import timezone
from pprint import pprint, pformat
import datetime
import natsort
import pydash as _; _.map = _.map_; _.filter = _.filter_
import random
@ -39,7 +40,7 @@ def random_phone():
def random_date():
return timezone.datetime(_.random(2012, 2018), _.random(1, 12), _.random(1, 28))
return timezone.utc.localize(timezone.datetime(_.random(2012, 2018), _.random(1, 12), _.random(1, 28)))
def random_amount():
@ -119,3 +120,34 @@ def validate_phone(text):
)
validate(text)
def to_local_datetime(obj):
if not isinstance(obj, datetime.date):
raise TypeError('Date expected')
if not isinstance(obj, datetime.datetime):
obj = datetime.datetime.combine(obj, datetime.time.min)
if not getattr(obj, 'tzinfo', None):
obj = timezone.utc.localize(obj)
return obj
def morph(number, words):
CHOICES = (2, 0, 1, 1, 1, 2)
if 4 < number % 100 < 20:
choice = 2
else:
choice = CHOICES[number % 10 if number % 10 < 5 else 5]
return words[choice]
# # Example:
#
# words = ['яблоко', 'яблока', 'яблок']
#
# for i in range(0, 30):
# print(i, morph(i, words))

@ -1,6 +1,6 @@
var SocketHandler = function () {
domain = domain.replace(':' + port, '');
var url = 'ws://' + domain + '/chat/' + userId + '/';
var url = 'ws://' + domain + ':8888/chat/' + userId + '/';
var sock = new WebSocket(url);
var intervalId;
sock.onopen = function () {

@ -1,6 +1,7 @@
from django import template
from pprint import pprint, pformat
import os
import pydash as _; _.map = _.map_; _.filter = _.filter_
from archilance import util
from common.models import Tooltip
@ -107,4 +108,11 @@ def tooltip_placement(**kwargs):
if tooltip:
return tooltip.position
@register.simple_tag
def morph(number, words_string):
words = _.split(words_string, ',')
return '%s %s' % (number, util.morph(number, words))
# import code; code.interact(local=dict(globals(), **locals()))

@ -302,12 +302,6 @@
{% endfor %}
<div class="comm44 disTab">
{# <div class="i col-lg-10 col-lg-offset-1">#}
{# <a href="#" onclick="return false" class="answerComm">#}
{# Ответить#}
{# </a>#}
{# </div>#}
<div class="col-lg-10 col-lg-offset-1">
<form action="{% url 'projects:create-answer-message' pk=answer.pk %}" method="POST" novalidate>
{% csrf_token %}
@ -643,21 +637,13 @@
{% endfor %}
<div class="comm44 disTab">
<!--
<div class="i col-lg-10 col-lg-offset-1">
<a href="#" onclick="return false" class="answerComm">
Ответить
</a>
</div>
-->
<div class="col-lg-10 col-lg-offset-1">
<form action="{% url 'projects:create-answer-message' pk=answer.pk %}" method="POST" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}">
<div><textarea name="text"></textarea></div>
<div><button type="submit">Отправить</button></div>
<div><textarea name="text" class="fr_answer"></textarea></div>
<div><button type="submit" class="fr_answer_sen">Отправить</button></div>
</form>
</div>
</div>
@ -801,21 +787,13 @@
{% endfor %}
<div class="comm44 disTab">
<!--
<div class="i col-lg-10 col-lg-offset-1">
<a href="#" onclick="return false" class="answerComm">
Ответить
</a>
</div>
-->
<div class="col-lg-10 col-lg-offset-1">
<form action="{% url 'projects:create-answer-message' pk=answer.pk %}" method="POST" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}">
<div><textarea name="text"></textarea></div>
<div><button type="submit">Отправить</button></div>
<div><textarea name="text" class="fr_answer"></textarea></div>
<div><button type="submit" class="fr_answer_sen">Отправить</button></div>
</form>
</div>
</div>

@ -24,7 +24,7 @@
<link rel='stylesheet' href='{% static "css/swiper.min.css" %}'>
<link rel='stylesheet' href='{% static "lib/jquery.fileupload/css/jquery.fileupload.css" %}'>
<link rel='stylesheet' href='{% static "js/magnific-popup.css" %}'>
{# <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.css"> <!-- TODO: Download locally -->#}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.css"> <!-- TODO: Download locally -->
<link rel='stylesheet' href='{% static "css/main.css" %}'>
<link rel='stylesheet' href='{% static "css/extra.css" %}'> <!-- Our additional CSS -->

@ -1,9 +1,14 @@
from dateutil.relativedelta import relativedelta
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, AbstractUser, Group, PermissionsMixin
from django.contrib.contenttypes.fields import GenericRelation
from django.db import models
from django.utils import timezone
from django.utils import timezone, formats
from mptt.models import TreeForeignKey, TreeManyToManyField
from pprint import pprint
import datetime
import pydash as _; _.map = _.map_; _.filter = _.filter_
from archilance import util
from specializations.models import Specialization
@ -168,11 +173,14 @@ class User(AbstractBaseUser, PermissionsMixin):
def get_profile_image(self):
return self.avatar
def get_gender(self):
if self.gender:
return 'Мужчина' if self.gender == 'male' else 'Женщина'
else:
return None
def summary(self):
age = relativedelta(timezone.now(), util.to_local_datetime(self.date_of_birth)).years
return _.join(_.filter((
self.get_gender_display(),
'%s %s' % (age, util.morph(age, ('год', 'года', 'лет'))),
formats.date_format(self.date_of_birth, 'DATE_FORMAT'),
), _.identity), ', ')
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = []

@ -362,12 +362,14 @@
<div class="col-lg-12 resume">
<form enctype="multipart/form-data">
<input type="hidden" name="text" value="Hello">
<div class="upload2 up-l1">
<input type="file" name="upload" id="upload-resume">
<p>Загрузить резюме</p>
</div>
</form>
</div>
<div class="col-lg-12 resume-block">
<div class="block-is box-sizing">
<div class="block-i">
@ -391,8 +393,9 @@
{% endif %}
<p class="who-summ">
{{ contractor.get_gender }}, {{ contractor.date_of_birth }}
{{ contractor.summary }}
</p>
<div class="list-summ-block">
<div class="col-lg-4">
<ul class="list-summ">

Loading…
Cancel
Save