#ARC-15 add position for candidate table

remotes/origin/setup
Mukhtar 10 years ago
parent a44a7e4da9
commit 04e72a96a7
  1. 2
      archilance/settings/base.py
  2. 20
      chat/migrations/0005_message_is_new.py
  3. 1
      chat/models.py
  4. 2
      chat/views.py
  5. 20
      projects/migrations/0002_candidate_position.py
  6. 20
      projects/migrations/0003_auto_20160812_1512.py
  7. 1
      projects/models.py
  8. 76
      templates/partials/base.html
  9. 10
      templates/registration/registration_form.html
  10. 23
      users/pipeline.py
  11. 3
      users/templates/contractor_office.html
  12. 8
      users/templates/contractor_profile.html
  13. 2
      users/templates/register_social_mail.html
  14. 2
      users/templates/register_social_mail.txt

@ -188,7 +188,7 @@ SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
'users.pipeline.test_contractor',
'users.pipeline.success_social_register',
)
FIELDS_STORED_IN_SESSION = ['user_type']

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-08-12 12:08
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('chat', '0004_auto_20160804_1806'),
]
operations = [
migrations.AddField(
model_name='message',
name='is_new',
field=models.BooleanField(default=True),
),
]

@ -13,6 +13,7 @@ class Message(models.Model):
recipent = models.ForeignKey(User, related_name='recipent_messages')
private_type = models.BooleanField(default=False)
team = models.ForeignKey(Team, related_name='messages', null=True, blank=True)
is_new = models.BooleanField(default=True)
def __str__(self):
return self.text

@ -56,6 +56,8 @@ class ChatUserView(View):
if request.user.is_owner_team():
team_orders = request.user.team.orders.all()
else:
team_orders = []
self.template_name = 'chat_contractor.html'
return render(request, self.template_name, {'orders': orders,

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-08-12 12:11
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('projects', '0001_squashed_0015_merge'),
]
operations = [
migrations.AddField(
model_name='candidate',
name='position',
field=models.PositiveIntegerField(default=0, max_length=10),
),
]

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-08-12 12:12
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('projects', '0002_candidate_position'),
]
operations = [
migrations.AlterField(
model_name='candidate',
name='position',
field=models.PositiveIntegerField(default=0),
),
]

@ -203,6 +203,7 @@ class Candidate(models.Model):
answer = models.ForeignKey(Answer, related_name='candidates')
project = models.ForeignKey(Project, related_name='candidates')
status = models.BooleanField(default=False)
position = models.PositiveIntegerField(default=0)
def __str__(self):
return self.answer.user.get_full_name()

@ -3,41 +3,43 @@
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge, chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<!--<meta name='viewport' content='initial-scale=1.0, user-scalable=no, maximum-scale=1'>-->
<title>Archilance</title>
{% load compress %}
{% compress css %}
<link rel='stylesheet' href='{% static "css/bootstrap.css" %}'>
<link rel='stylesheet' href='{% static "css/font-awesome.min.css" %}'>
<link rel='stylesheet' href='{% static "css/reset.css" %}'>
<link rel='stylesheet' href='{% static "lib/bootstrap-select/css/bootstrap-select.css" %}'>
<link rel='stylesheet' href='{% static "lib/select2/select2.css" %}'> <!-- Tmp -->
<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" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.css" />
<link rel='stylesheet' href='{% static "css/main.css" %}'>
<link rel='stylesheet' href='{% static "css/extra.css" %}'> <!-- Our additional CSS -->
<link rel='stylesheet' href='{% static "css/dev-colors.css" %}'> <!-- Dev-time only, temporary!!! -->
{% endcompress %}
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge, chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<!--<meta name='viewport' content='initial-scale=1.0, user-scalable=no, maximum-scale=1'>-->
<title>Archilance</title>
{% load compress %}
{% compress css %}
<link rel='stylesheet' href='{% static "css/bootstrap.css" %}'>
<link rel='stylesheet' href='{% static "css/font-awesome.min.css" %}'>
<link rel='stylesheet' href='{% static "css/reset.css" %}'>
<link rel='stylesheet' href='{% static "lib/bootstrap-select/css/bootstrap-select.css" %}'>
<link rel='stylesheet' href='{% static "lib/select2/select2.css" %}'> <!-- Tmp -->
<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" type="text/css"
href="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.css"/>
<link rel='stylesheet' href='{% static "css/main.css" %}'>
<link rel='stylesheet' href='{% static "css/extra.css" %}'> <!-- Our additional CSS -->
<link rel='stylesheet' href='{% static "css/dev-colors.css" %}'> <!-- Dev-time only, temporary!!! -->
{% endcompress %}
</head>
<body>
{% if messages %}
{% for message in messages %}
<div class="c" style="position: relative; padding: 10px; margin-bottom: 6px; z-index: 100">{{ message|safe }}</div>
<div class="c"
style="position: relative; padding: 10px; margin-bottom: 6px; z-index: 100">{{ message|safe }}</div>
{% endfor %}
{% 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 }}
@ -73,8 +75,14 @@
{% endblock %}
<script type="text/javascript">
var SocketHandlerMain = function (userId) {
var url = 'ws://127.0.0.1:8888/chat/' + userId + '/';
var SocketHandlerMain = function (userId) {
var domain = '{{ request.META.HTTP_HOST }}';
var port = '{{ request.META.SERVER_PORT }}';
var queryString = '{{ request.get_full_path }}';
if (queryString.indexOf('/chat') != 0) {
domain = domain.replace(':' + port, '');
var url = 'ws://' + domain + ':8888/chat/' + userId + '/';
var sock = new WebSocket(url);
var intervalId;
sock.onopen = function () {
@ -88,14 +96,14 @@
var notificationData = JSON.parse(event.data);
$.jGrowl("Вам пришло новое сообщение!" + notificationData.msg, {sticky: true});
};
}
$(function () {
var userId = '{{ request.user.pk }}';
if (userId) {
var socketMain = new SocketHandlerMain(userId);
}
});
}
$(function () {
var userId = '{{ request.user.pk }}';
if (userId) {
var socketMain = new SocketHandlerMain(userId);
}
});
</script>
</body>
</html>

@ -17,7 +17,7 @@
{% else %}
<div class="col-lg-12 select-reg polsF1">
<select class="selectpicker3" name="group_id">
<option>Выберете вашу роль</option>
<option>Выберете вашу роль </option>
<option value="Исполнители">Исполнитель</option>
<option value="Заказчики">Заказчик</option>
</select>
@ -25,12 +25,12 @@
{% endif %}
</div>
<div class="col-lg-12 select-reg">
<input type="text" name="{{ form.username.name }}" class="box-sizing email-reg"
<input type="text" name="{{ form.username.name }}" value="{{ form.username.value }}" 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="Электронная почта">
value="{{ form.email.value }}" placeholder="Электронная почта">
</div>
<div class="col-lg-12 select-reg">
<input type="password" name="{{ form.password1.name }}" class="box-sizing pass-reg"
@ -51,13 +51,13 @@
<div class="btn-group" role="group">
<div class="pull-left -social -fb">
<a href="{% url 'social:begin' 'facebook' %}?user_type=contractor">
<a href="{% url 'social:begin' 'facebook' %}?user_type={% if request.GET.type == 'customer' %}Заказчики{% else %}Исполнители{% endif %}">
<img src="http://nepesh.com/static/img/social/fb.png" alt="fb">
</a>
</div>
<div class="pull-left -social -tw">
<a href="{% url 'social:begin' 'twitter' %}?user_type=contractor">
<a href="{% url 'social:begin' 'twitter' %}?user_type={% if request.GET.type == 'customer' %}Заказчики{% else %}Исполнители{% endif %}">
<img src="http://nepesh.com/static/img/social/tw.png" alt="tw">
</a>
</div>

@ -1,18 +1,37 @@
from django.shortcuts import redirect, render_to_response
from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template, render_to_string
from social.pipeline.partial import partial
from django.contrib.auth.models import Group
from users.models import ContractorResume
def send_user_mail(user):
ctx_dict = {
'user': user,
}
subject, from_email, to = 'Регистрация черз социальные сети', 'mukhtar@mukhtar', user.email
text_content = render_to_string('register_social_mail.txt', ctx_dict)
html_content = get_template('register_social_mail.html').render(ctx_dict)
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
@partial
def test_contractor(backend, details, response, user,is_new=False, *args, **kwargs):
def success_social_register(backend, details, response, user,is_new=False, *args, **kwargs):
if is_new:
group_name = 'Исполнители'
group_name = backend.strategy.session_get('user_type')
# group_name = 'Исполнители'
g = Group.objects.get(name=group_name)
g.user_set.add(user)
if group_name == 'Исполнители':
resume = ContractorResume.objects.create(text='Здесь должна быть описание вашего резюме')
user.contractor_resume = resume
user.save()
#Отправка письма на почту
send_user_mail(user)
@partial
def add_email_for_user(backend, details, response, is_new=False, *args, **kwargs):

@ -89,7 +89,7 @@
</div>
</div>
</div>
{% if contractor.is_owner_team %}
<div class="projectsBlock disTab">
<div class="col-lg-12">
<div class="col-lg-3 divCol3">
@ -276,6 +276,7 @@
</div>
</div>
{% endif %}
{% include 'partials/footer.html' %}
</div>
</div>

@ -271,12 +271,13 @@
<div class="col-lg-9">
<div class="top-summary">
<p class="name-summ">{{ user.get_full_name }}</p>
<div id="resume-success"></div>
{% if contractor.contractor_resume.resume_file %}
<a href="{{ contractor.contractor_resume.resume_file.url }}"
<a style="display:{% if contractor.contractor_resume.resume_file %}block{% else %}none{% endif %};"href="{% if contractor.contractor_resume.resume_file %}{{ contractor.contractor_resume.resume_file.url }}{% endif %}"
class="download-summ">скачать резюме</a>
{% endif %}
<p class="who-summ">
{# Мужчина, 24 года, {{ user.date_of_birth }}#}
Мужчина, 24 года, {{ user.date_of_birth }}#}
</p>
<div class="list-summ-block">
<div class="col-lg-4">
@ -557,6 +558,7 @@
var csrftoken = $.cookie('csrftoken');
$("#upload-resume").on('change',function(e){
$("#resume-success").html("");
var formData = new FormData($(this).closest("form"));
formData.append('resume_file', e.target.files[0]);
console.log(formData);
@ -573,6 +575,8 @@
processData: false,
contentType: false,
success: function(data){
$("#resume-success").html("Файл для резюме успешно загружен!");
$(".download-summ").css('display','block').attr('href',data.resume_file);
console.log(data);
},
error: function(jqXHR){

@ -0,0 +1,2 @@
Регистрация через соцсети
{{ user.username }}

@ -0,0 +1,2 @@
Регистрация через соцсети
{{ user.username }}
Loading…
Cancel
Save