change projects app

remotes/origin/setup
Mukhtar 10 years ago
parent d14c827953
commit e0547daaac
  1. 39
      projects/migrations/0005_auto_20160524_1053.py
  2. 80
      projects/migrations/0006_auto_20160524_1208.py
  3. 32
      projects/models.py
  4. 266
      projects/templates/projects/project_detail.html
  5. 263
      projects/templates/projects/project_form.html
  6. 4
      projects/views.py
  7. 35
      templates/base.html
  8. 2
      templates/base2.html
  9. 21
      users/migrations/0003_user_created_at.py
  10. 25
      users/migrations/0004_auto_20160524_1053.py
  11. 25
      users/migrations/0005_auto_20160524_1054.py
  12. 4
      users/models.py

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-24 10:53
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('projects', '0004_auto_20160519_1338'),
]
operations = [
migrations.AlterModelOptions(
name='portfolio',
options={'verbose_name': 'Портфолио', 'verbose_name_plural': 'Портфолио'},
),
migrations.AlterModelOptions(
name='portfoliophoto',
options={'verbose_name': 'Фото портфолио', 'verbose_name_plural': 'Фото портфолио'},
),
migrations.AddField(
model_name='answer',
name='created',
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 53, 28, 347882)),
),
migrations.AlterField(
model_name='answer',
name='cost_type',
field=models.CharField(choices=[('rur', 'rur'), ('usd', 'usd'), ('eur', 'eur')], default='RUR', max_length=5),
),
migrations.AlterField(
model_name='answer',
name='term_type',
field=models.CharField(choices=[('hour', 'hour'), ('day', 'day'), ('month', 'month')], default='HOUR', max_length=10),
),
]

@ -0,0 +1,80 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-24 12:08
from __future__ import unicode_literals
import datetime
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('projects', '0005_auto_20160524_1053'),
]
operations = [
migrations.CreateModel(
name='Candidate',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('status', models.BooleanField(default=False)),
],
options={
'verbose_name': 'Кандидат',
'verbose_name_plural': 'Кандидаты',
},
),
migrations.AddField(
model_name='project',
name='budget',
field=models.CharField(blank=True, max_length=20),
),
migrations.AddField(
model_name='project',
name='cro',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='project',
name='secure_transaction',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='project',
name='term_cost',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='project',
name='type_work',
field=models.CharField(choices=[('1', 'проектирование'), ('2', 'техническое сопровождение')], default='1', max_length=20),
),
migrations.AlterField(
model_name='answer',
name='cost_type',
field=models.CharField(choices=[('rur', 'rur'), ('usd', 'usd'), ('eur', 'eur')], default='rur', max_length=5),
),
migrations.AlterField(
model_name='answer',
name='created',
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 12, 8, 51, 751897)),
),
migrations.AlterField(
model_name='answer',
name='term_type',
field=models.CharField(choices=[('hour', 'hour'), ('day', 'day'), ('month', 'month')], default='hour', max_length=10),
),
migrations.AddField(
model_name='candidate',
name='project',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='candidates', to='projects.Project'),
),
migrations.AddField(
model_name='candidate',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='candidates', to=settings.AUTH_USER_MODEL),
),
]

@ -1,3 +1,4 @@
from datetime import datetime
from django.db import models
from users.models import User
@ -5,15 +6,21 @@ from specializations.models import Specialization
class Project(models.Model):
TYPE_WORK_CHOICES = (
('1', 'проектирование'),
('2', 'техническое сопровождение')
)
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
specialization = models.ForeignKey(Specialization, related_name='projects')
text = models.TextField(blank=True)
user = models.ForeignKey(User, related_name='projects')
# budget = models.CharField()
# cro = models.BooleanField(default=False)
# type_work = models.CharField()
budget = models.CharField(max_length=20, blank=True)
cro = models.BooleanField(default=False)
type_work = models.CharField(max_length=20, choices=TYPE_WORK_CHOICES, default='1')
term_cost = models.BooleanField(default=False)
secure_transaction = models.BooleanField(default=False)
def __str__(self):
return self.name
@ -37,12 +44,13 @@ class Answer(models.Model):
)
cost = models.DecimalField(max_digits=10, decimal_places=2)
cost_type = models.CharField(max_length=5, choices=COST_TYPE_CHOICES, default='RUR')
cost_type = models.CharField(max_length=5, choices=COST_TYPE_CHOICES, default='rur')
text = models.TextField()
term = models.DecimalField(max_digits=10, decimal_places=2)
term_type = models.CharField(max_length=10, choices=TERM_TYPE_CHOICES, default='HOUR')
term_type = models.CharField(max_length=10, choices=TERM_TYPE_CHOICES, default='hour')
project = models.ForeignKey(Project, related_name='answers')
user = models.ForeignKey(User, related_name='answers')
created = models.DateTimeField(default=datetime.now())
def __str__(self):
return self.text
@ -52,6 +60,18 @@ class Answer(models.Model):
verbose_name_plural = 'Ответы к проектам'
class Candidate(models.Model):
user = models.ForeignKey(User, related_name='candidates')
project = models.ForeignKey(Project, related_name='candidates')
status = models.BooleanField(default=False)
def __str__(self):
pass
class Meta:
verbose_name = 'Кандидат'
verbose_name_plural = 'Кандидаты'
class Portfolio(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()

@ -1,11 +1,115 @@
{% extends "base.html" %}
{#{% block content %}#}
{#{% endblock %}#}
{% block content %}
<h1>{{ object }}</h1>
<h2>{{ object.user }}</h2>
{% for answer in object.answers.all %}
<h2>{{ answer| safe }}</h2>
{% endfor %}
<div class="container mainScore">
<div class="row">
<div class="col-lg-12">
<p class="titleScore">{{ object }}</p>
</div>
<div class="doneBlock disTab">
<div class="triangle1"></div>
<div class="col-lg-4">
<a href="#" class="aLinkExe"><div class="imgExecutor">
<img src="img/profile.jpg" alt="execitor-image">
</div></a>
<p class="nameExecutor">
<a href="#">{{ object.get_full_name }}</a>
</p>
<p class="navv2">На сайте {{ object.user.created }}</p>
<ul class="rettList restList3">
<li>
<a href="javascript:void(0)">Отзывы:
<span> + 385</span>
<small> 0</small>
<mark> - 0</mark>
</a>
</li>
</ul>
</div>
<div class="col-lg-3 col-lg-offset-1">
<div class="dashedCol4 dashedCol44 dashedColColor">
<p class="specUser">
Специализации:
</p>
<div class="insetSpec">
<span>Интерьеры</span>
</div>
<div class="insetSpec">
<span>Визуализация/3D</span>
</div>
</div>
</div>
<div class="col-lg-4 retts">
<ul class="desListPro">
<li>
13.0.2016
</li>
<li>
Техническое сопровождение
</li>
</ul>
<div class="sroUser sroExecutor sroPro">
<div class="iconSRO"></div>
<p>Есть допуск СРО</p>
</div>
</div>
</div>
<div class="infoProjectBlock disTab">
<div class="triangle2"></div>
<div class="col-lg-10 col-lg-offset-1">
<ul class="listProjectIn">
<li>
<span>Местоположение:</span> Россия, Москва
</li>
<li>
<span>Классификация здания:</span> Коттедж
</li>
<li>
<span>Вид строительства:</span> Новое
</li>
</ul>
</div>
<div class="col-lg-10 col-lg-offset-1">
<p class="textProIn">
{{ object.text }}
</p>
</div>
<div class="col-lg-10 col-lg-offset-1">
<a href="javascript:void(0)" class="linkProIn linkProIn1">
Редактировать
</a>
<a href="javascript:void(0)" class="linkProIn linkProIn2">
снять с публикачии
</a>
</div>
</div>
<div class="exBigBlock disTab">
<div class="col-lg-12">
<p class="titleEx">Исполнители</p>
</div>
<div class="col-lg-12 exButton">
<div class="btn-group" role="group" aria-label="...">
<button type="button" class="btn btn-default">
Новые <span>+7</span>
</button>
<button type="button" class="btn btn-default">
Кандидаты <span>7</span>
</button>
<button type="button" class="btn btn-default">
Отказал <span>7</span>
</button>
</div>
</div>
</div>
<div class="col-lg-12 compareBlock">
<div class="col-lg-2 col-lg-offset-5">
<p>Сравнить кандидатов</p>
</div>
</div>
{% if perms.projects.add_answer %}
<h4>Оставить ответ</h4>
@ -22,4 +126,154 @@
<input type="submit" value="Создать" />
</form>
{% endif %}
{% endblock %}s
<div class="col-lg-12 exNew">
<p>Новые исполнители</p>
</div>
<div class="candidateBlock disTab">
{% for answer in object.answers.all %}
<div class="candidate">
<div class="col-lg-4">
<a href="#" class="aLinkExe"><div class="imgExecutor">
<img src="img/profile.jpg" alt="execitor-image">
</div></a>
<p class="nameExecutor">
<a href="#">Иванов Петр Иванович [ivanov_petr]</a>
</p>
<p class="navv2">На сайте 8 лет и 3 месяца</p>
<div class="statusUser">Свободен</div>
</div>
<div class="col-lg-3 retts">
<ul class="rettList restList2">
<li>Рейтинг: <span> 1245</span></li>
<li>Безопасные сделки: <span> 5</span></li>
<li>
<a href="javascript:void(0)">Отзывы:
<span> + 385</span>
<small> 0</small>
<mark> - 0</mark>
</a>
</li>
</ul>
<div class="sroUser sroExecutor">
<div class="iconSRO"></div>
<p>Есть допуск СРО</p>
</div>
</div>
<div class="col-lg-2 listCens">
<p>Цена:
<span> {{ answer.cost }}</span>
<i class="fa fa-rub"></i>
</p>
<p>
Срок: <span>{{ answer.term }} {{ answer.term_type }}</span>
</p>
<p>Опубликован:{{ answer.created }}</p>
</div>
<div class="col-lg-3 retts">
<a href="javascript:void(0)" class="candLink candLink1">
Кандидат
</a>
<a href="javascript:void(0)" class="candLink candLink2">
предложить проект
</a>
<a href="javascript:void(0)" class="candLink candLink3">
отказ
</a>
</div>
<div class="gallMini disTab">
<div class="col-lg-3">
<div class="insetCol box-sizing disTab">
<div class="imgGal">
<div class="imgFigure"></div>
</div>
</div>
</div>
<div class="col-lg-3">
<div class="insetCol box-sizing disTab">
<div class="imgGal">
<div class="imgFigure"></div>
</div>
</div>
</div>
<div class="col-lg-3">
<div class="insetCol box-sizing disTab">
<div class="imgGal">
<div class="imgFigure"></div>
</div>
</div>
</div>
<div class="col-lg-3">
<div class="insetCol box-sizing disTab">
<div class="imgGal">
<div class="imgFigure"></div>
</div>
</div>
</div>
</div>
<div class="commBlock44 disTab">
<div class="comm44 disTab">
<div class="col-lg-10 col-lg-offset-1">
<p class="nameComm">
Иванов Петр Иванович
</p>
<span class="dateComm44">
13.0.2016 / 21:05
</span>
<div class="stars box-sizing">
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star" aria-hidden="true"></span>
</div>
<p class="textComm44">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar tempor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus sapien nunc eget odio.
</p>
</div>
</div>
<div class="comm44 disTab">
<div class="col-lg-10 col-lg-offset-1">
<p class="nameComm nameCommAct">
Иванов Петр Иванович
</p>
<span class="dateComm44">
13.0.2016 / 21:05
</span>
<p class="textComm44">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar tempor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus sapien nunc eget odio.
</p>
<a href="javascript:void(0)" class="answerComm">
Ответить
</a>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="col-lg-12 pagin">
<nav>
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
</a>
</li>
<li class="active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>...</li>
<li><a href="#">17</a></li>
<li>
<a href="#" aria-label="Next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
</a>
</li>
</ul>
</nav>
</div>
{% endblock %}

@ -1,31 +1,244 @@
{% extends "base.html" %}
{% block content %}
<h1>Добавление</h1>
<form method="post" action="">
{{ form.errors }}
{% csrf_token %}
{% for field in form %}
<div class="row">
{{ field.label }}
{{ field }}
</div>
{% endfor %}
{# <h1>Добавление</h1>#}
{# <form method="post" action="">#}
{##}
{# {{ form.errors }}#}
{# {% csrf_token %}#}
{##}
{# {% for field in form %}#}
{# <div class="col-lg-12">#}
{# <input type="text" class="searchInp box-sizing" placeholder="{{ field.label }}" name=" {{ field.name }}">#}
{# <div class="row">#}
{# {{ field.label }}#}
{# {{ field }}#}
{# </div>#}
{##}
{# {% endfor %}#}
<input type="submit" value="Создать" />
{# <input type="text" name="{{ form.name.name }}" class="col-xs-10 form-control" placeholder="Название" />#}
{# <p>{{ form.name.errors.as_text }}</p>#}
{# <input type="text" name="{{ form.price.name }}" class="col-xs-10 form-control" placeholder="Цена" />#}
{# <p>{{ form.price.errors.as_text }}</p>#}
{# <textarea name="{{ form.text.name }}"></textarea>#}
{# <p>{{ form.text.errors.as_text }}</p>#}
{# #}
{# <button type="submit" class="btn registr_button">Добавить</button>#}
{# <input type="submit" value="Создать" />#}
{# </form>#}
{% block content %}
<div class="col-lg-12 allProjects">
<p class="titleScore">Новый заказ</p>
</div>
<div class="chatBlock new-rass new-rass2 disTab">
{{ form.errors }}
<form action="" method="post"> {% csrf_token %}
<div class="col-lg-9">
<p class="new-pp new-pp3">Формирование заказа</p>
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Название заказа</p>
<input type="text" class="box-sizing" name="{{ form.name.name }}" />
</div>
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Подробно опишите задание</p>
<textarea name="{{ form.text.name }}" id="text-new"></textarea>
</div>
</div>
<div class="col-lg-3 wrChat1">
<div class="messageBlock box-sizing disTab">
<p>Дополнительно</p>
</div>
<div class="col-lg-12 documentsChat">
<form action="" method="post">
<div class="upload">
<input type="file" name="upload"/>
<p>+ добавить файл (до 100 файлов)</p>
</div>
</form>
{% endblock %}s
<ul class="list-new-new">
<li>
Архитерурное 2.jpg
<span>7мб</span>
<div></div>
</li>
<li>
Архитерурное 2.jpg
<span>7мб</span>
<div></div>
</li>
</ul>
</div>
<p class="type-work">Тип работы:</p>
<div class="mail-block type-work-inset">
<div class="inset-mb">
<label><input type="radio" name="radio1"><span></span></label>
<p>Проектирование</p>
</div>
<div class="inset-mb">
<label><input type="radio" name="radio1"><span></span></label>
<p>Техническое сопровождение</p>
</div>
</div>
<div class="textAreaBlock2 box-sizing disTab">
<a href="javascriptt:void(0)" class="new-link new-lw">+ Добавить раздел</a>
</div>
</div>
</div>
<div class="col-lg-12 new-filter">
<div class="filter clearfix">
<div class="titleF1 disTab">
<div class="col-lg-3">Специализация проекта:</div>
<div class="col-lg-3"></div>
<div class="col-lg-3"></div>
<div class="col-lg-3"></div>
</div>
<div class="polsF1 disTab">
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
<div class="titleF1 titleF2 disTab">
<div class="col-lg-4">Бюджет</div>
<div class="col-lg-8"></div>
</div>
<div class="searchF1 polsF1 polsFF">
<div class="col-lg-4">
<input type="text" class="box-sizing surr">
<select class="selectpicker2 valul">
<option>&#36;</option>
<option>&#36;</option>
<option>&#36;</option>
</select>
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>За проект</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-5 dog-new">
<label><input type="checkbox" name="dogovor"><span></span></label>
<p>или по договоренности</p>
</div>
</div>
<div class="searchF1 polsF1 polsFF make-new">
<label><input type="checkbox" name="dogovor"><span></span></label>
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p>
</div>
<div class="titleF1 titleF2 disTab">
<div class="col-lg-12">Способ оплаты</div>
</div>
<div class="searchF1 polsF1 polsFF radio-afer">
<div class="col-lg-6">
<label><input type="radio" name="afer"><span></span></label>
<p class="text-afer">
Безопасная сделка (с резервированием бюджета)
</p>
<p class="des-afer">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro vel suscipit eaque quidem voluptate aperiam enim aut libero, excepturi architecto maxime, placeat maiores, odio itaque, ex consectetur dignissimos dicta officia.
</p>
</div>
<div class="col-lg-6">
<label><input type="radio" name="afer"><span></span></label>
<p class="text-afer">
Прямая оплата Исполнителю на его кошелек/счет
</p>
<p class="des-afer">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro vel suscipit eaque quidem voluptate aperiam enim aut libero, excepturi architecto maxime, placeat maiores, odio itaque, ex consectetur dignissimos dicta officia.
</p>
</div>
</div>
<div class="resSearchF1">
<div class="col-lg-3">
<p class="titleResF1">Расширенный поиск</p>
<button class="resButtonF1">
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>
</button>
</div>
<div class="col-lg-9">
<div class="borderS1"></div>
</div>
</div>
<div class="slideRes disTab activeSlide">
<div class="titleF1 disTab">
<div class="col-lg-3">Выбор объекта:</div>
<div class="col-lg-3">Наименование:</div>
<div class="col-lg-3">Классификация здания:</div>
<div class="col-lg-3">Вид строительства:</div>
</div>
<div class="polsF1 polsF2 disTab">
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-3">
<input type="text" class="box-sizing surr surr2">
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
<div class="titleF1 disTab">
<div class="col-lg-12">Местоположение:</div>
</div>
<div class="polsF1 polsF2 disTab">
<div class="col-lg-3">
<select class="selectpicker">
<option>Страна</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-3">
<select class="selectpicker">
<option>Город</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
<div class="col-lg-6 make-new">
<label><input type="checkbox" name="dogovor"><span></span></label>
<p>Требуется допуск СРО</p>
</div>
</div>
<div class="searchF1 polsF1 polsFF links-filter">
<a href="javascript:void(0)">Разместить проект</a>
<a href="javascript:void(0)">Сохранить</a>
</div>
</form>
</div>
</div>
</div>
{% endblock %}

@ -52,9 +52,9 @@ class ProjectDetailView(FormMixin, DetailView):
return super().form_valid(form)
class ProjectCreateView(PermissionRequiredMixin, CreateView):
class ProjectCreateView(CreateView):
model = Project
permission_required = ('projects.add_project',)
# permission_required = ('projects.add_project',)
raise_exception = True
form_class = ProjectForm
success_url = '/projects/' # TODO: Use `reverse_lazy('projects-list')` from `django.core.urlresolvers`

@ -6,17 +6,19 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Archilance</title>
<link rel="stylesheet" href="{% static 'css/reset.css' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
<link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/css/bootstrap-select.min.css">
<link rel="stylesheet" href="{% static 'css/reset.css' %}">
<link rel="stylesheet" href="{% static 'css/main.css' %}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/css/bootstrap-select.min.css">
<link rel="stylesheet" href="{% static 'css/swiper.min.css' %}">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrTop disTab">
<div class="wrTop disTab">
<div class="container-fluid topMain">
<div class="row">
<div class="col-lg-3">
@ -36,12 +38,13 @@
<div class="imgProfile"></div>
<div class="infoProfile disTab">
<div class="btn-group" role="group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-menu-hamburger" aria-hidden="true"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">Войти заказчиком</a></li>
<li><a href="#">Войти исполнителем</a></li>
<li><a href="{% url 'auth_login' %}">Войти заказчиком</a></li>
<li><a href="{% url 'auth_login' %}">Войти исполнителем</a></li>
<li><a href="#">Сообщения</a></li>
<li><a href="#">Счет</a></li>
<li><a href="#">Настройки</a></li>
@ -57,10 +60,12 @@
</div>
</div>
</div>
</div>
<div class="container mainScore mainBlock2">
</div>
<div class="container mainScore">
<div class="row">
{% block content %} {% endblock %}
{% block content %}
{% endblock %}
<footer class="disTab">
<div class="col-lg-4">
<div class="logoF" onclick="window.location='/'"></div>
@ -112,11 +117,11 @@
</div>
</footer>
</div>
</div>
<script src="{% static 'js/jquery-2.2.3.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/bootstrap-select.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/i18n/defaults-*.min.js"></script>
<script src="{% static 'js/main.js' %}"></script>
</div>
<script src="{% static 'js/jquery-2.2.3.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/bootstrap-select.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/i18n/defaults-*.min.js"></script>
<script src="{% static 'js/main.js' %}"></script>
</body>
</html>

@ -46,6 +46,8 @@
<div class="row">
<p class="welcomeMain">Основная задача сайта</p>
<p>Authed? {{ user.is_authenticated }}</p>
{{ user }}
{{ user.groups.all }}
</div>
</div>
<div class="container-fluid">

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-24 10:52
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0002_team_groups'),
]
operations = [
migrations.AddField(
model_name='user',
name='created_at',
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 52, 56, 737277)),
),
]

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-24 10:53
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0003_user_created_at'),
]
operations = [
migrations.RemoveField(
model_name='team',
name='groups',
),
migrations.AlterField(
model_name='user',
name='created_at',
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 53, 15, 497921)),
),
]

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-24 10:54
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0004_auto_20160524_1053'),
]
operations = [
migrations.RemoveField(
model_name='user',
name='created_at',
),
migrations.AddField(
model_name='user',
name='created',
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 54, 13, 805566)),
),
]

@ -1,3 +1,4 @@
from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, AbstractUser, Group, PermissionsMixin
@ -33,6 +34,7 @@ class User(AbstractBaseUser, PermissionsMixin):
last_name = models.CharField(max_length=255, blank=True)
email = models.EmailField(max_length=255, unique=True, db_index=True)
is_active = models.BooleanField(default=True)
created = models.DateTimeField(default=datetime.now())
@property
def is_staff(self):
@ -62,7 +64,7 @@ class Team(models.Model):
name = models.CharField(max_length=255)
users = models.ManyToManyField(User, related_name ='teams', blank=True)
owner = models.OneToOneField(User, related_name='team', null=True)
groups = models.ManyToManyField(Group, related_name='teams', blank=True)
# groups = models.ManyToManyField(Group, related_name='teams', blank=True)
def __str__(self):
return self.name

Loading…
Cancel
Save