diff --git a/api/views.py b/api/views.py
index f7301a3..170964a 100755
--- a/api/views.py
+++ b/api/views.py
@@ -34,14 +34,14 @@ class MessageViewSet(ModelViewSet):
serializer_class = MessageSerializer
filter_class = MessageFilterSet
- def get_queryset(self):
- queryset = Message.objects.all()
- search_param = self.request.query_params.get('operand', None)
- # queryset = queryset.filter(Q(sender=self.request.user.pk) | Q(recipent=self.request.user.pk))
- # import code; code.interact(local=dict(globals(), **locals()))
- if search_param:
- queryset = queryset.filter(Q(sender=self.request.user.pk) | Q(recipent=self.request.user.pk))
- return queryset
+ def get_queryset(self):
+ queryset = Message.objects.all()
+ search_param = self.request.query_params.get('operand', None)
+ # queryset = queryset.filter(Q(sender=self.request.user.pk) | Q(recipent=self.request.user.pk))
+ # import code; code.interact(local=dict(globals(), **locals()))
+ if search_param:
+ queryset = queryset.filter(Q(sender=self.request.user.pk) | Q(recipent=self.request.user.pk))
+ return queryset
diff --git a/archilance/settings/base.py b/archilance/settings/base.py
index 5502678..0aed8fc 100644
--- a/archilance/settings/base.py
+++ b/archilance/settings/base.py
@@ -40,12 +40,13 @@ THIRD_PARTY_APPS = [
LOCAL_APPS = [
'api',
'common',
+ 'work_sell',
'archilance',
'projects',
'specializations',
'users',
'reviews',
- 'work_sell',
+
'chat',
]
diff --git a/assets/js/chat.js b/assets/js/chat.js
index eca3529..fe6129c 100644
--- a/assets/js/chat.js
+++ b/assets/js/chat.js
@@ -109,6 +109,8 @@ $(function () {
dataType: 'json',
success: function (json) {
$.each(json.results, function (i, v) {
+ console.log(v.sender.id);
+ console.log(v.recipent.id);
inbox.innerHTML += '
+
+
diff --git a/users/templates/contractor_chat.html b/users/templates/contractor_chat.html
deleted file mode 100644
index fc30eb2..0000000
--- a/users/templates/contractor_chat.html
+++ /dev/null
@@ -1,582 +0,0 @@
-{% extends 'partials/base.html' %}
-{% load staticfiles %}
-{% load common_tags %}
-{% block content %}
-{% include 'partials/header.html' %}
-
-
-
-
Чат
-
-
-
-
-
-
-
Заказы
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
- Испонитель: Группа Икс
-
-
- Иванов Петр Иванович
- Сергей Пенкин
- Александ Смирнов
- Иванов Петр
-
-
- Чаты: Иванов, Петров, Пенкин
-
-
-
- Полное описание заказа
-
-
-
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
- Испонитель: Группа Икс
-
-
- Иванов Петр Иванович
- Сергей Пенкин
- Александ Смирнов
- Иванов Петр
-
-
- Чаты: Иванов, Петров, Пенкин
-
-
-
- Полное описание заказа
-
-
-
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
- Испонитель: Группа Икс
-
-
- Иванов Петр Иванович
- Сергей Пенкин
- Александ Смирнов
- Иванов Петр
-
-
- Чаты: Иванов, Петров, Пенкин
-
-
-
- Полное описание заказа
-
-
-
-
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-
-
-
-
-
-
Прикрепить файл
-
- Не более 10 файлов с общим объемом 500мб
-
-
-
отправить
-
-
-
-
-
-
- Начало:
- Срок сдачи:
-
-
- 13.0.2016
- 13.0.2016
-
-
-
-
-
Для заметок
-
-
сохранить
-
-
-
-
-
-
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-
-
-
-
-
-
Прикрепить файл
-
- Не более 10 файлов с общим объемом 500мб
-
-
-
отправить
-
-
-
-
-
-
-
-
Заказы
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
-
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-
-
-
-
-
-
Прикрепить файл
-
- Не более 10 файлов с общим объемом 500мб
-
-
-
отправить
-
-
-
-
Этапы работы
-
-
1 / Согласование условий
-
- Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
-
-
-
-
-
- Этап 1 Название этапа
-
-
- Результаты этапа: Готовый чертеж 1
-
-
-
до 16.03.2015
-
30 000
-
-
-
-
-
-
- Этап 2 Название этапа
-
-
- Результаты этапа: Готовый чертеж 1
-
-
-
до 16.03.2015
-
30 000
-
-
-
-
-
-
2 / Резервирование
-
- Резервирование заказчиком суммы оплаты по заказ. Деньги перечисляются и хранятся на сайте.
-
-
- Сумма еще не зарезервирована
- Сумма за этап1, Зарезервирована
-
-
-
-
3 / Выполнение работы
-
- Процесс выполнения задания в заказе до получения заказчиком итогового результата работы.
-
-
-
-
-
- {% include 'partials/footer.html' %}
-
-
-{% endblock %}
diff --git a/users/templates/contractor_profile.html b/users/templates/contractor_profile.html
index ff950e4..a413f05 100644
--- a/users/templates/contractor_profile.html
+++ b/users/templates/contractor_profile.html
@@ -4,49 +4,48 @@
{% block content %}
{% include 'partials/header.html' %}
-
+
-
-
-
+
+
+
- {% load specializtions_tags %}
+ {% load specializtions_tags %}
{% specialization_widget contractor.pk %}
@@ -73,10 +72,10 @@
{% ratings_widget contractor.pk %}
{% if contractor.cro %}
-
+
{% endif %}
@@ -100,20 +99,35 @@
-
+
-
+
+
+
+
+
+ {% include 'portfolio_create_form.html' %}
+
+
+
+
+
{% for p in user.portfolio.all %}
-
@@ -132,45 +146,58 @@
{% endfor %}
-
+
-
+
+
+
+
+
+ {% include 'worksell_create_form.html' %}
+
+
+
{% for ws in user.work_sell.all %}
-
-
-
-
-
-
{{ ws }}
-
{% endfor %}
@@ -179,7 +206,7 @@
-
+
@@ -252,7 +279,7 @@
Загрузить файл
@@ -298,7 +325,7 @@
Загрузить файл
-
+
- 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.
+ 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.
-
+
{% include 'partials/footer.html' %}
@@ -374,3 +405,26 @@
{% endblock %}
+
+
+{% block js_block %}
+
+{% endblock %}
diff --git a/users/templates/customer_chat.html b/users/templates/customer_chat.html
deleted file mode 100644
index 252d488..0000000
--- a/users/templates/customer_chat.html
+++ /dev/null
@@ -1,312 +0,0 @@
-{% extends 'partials/base.html' %}
-{% load staticfiles %}
-{% load common_tags %}
-{% block content %}
-{% include 'partials/header.html' %}
-
-
-
-
-
Чат
-
-
-
-
-
-
-
Заказы
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
- Испонитель: Группа Икс
-
-
- Иванов Петр Иванович
- Сергей Пенкин
- Александ Смирнов
- Иванов Петр
-
-
- Чаты: Иванов, Петров, Пенкин
-
-
-
- Полное описание заказа
-
-
-
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
- Испонитель: Группа Икс
-
-
- Иванов Петр Иванович
- Сергей Пенкин
- Александ Смирнов
- Иванов Петр
-
-
- Чаты: Иванов, Петров, Пенкин
-
-
-
- Полное описание заказа
-
-
-
-
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
-
-
-
-
-
-
Прикрепить файл
-
- Не более 10 файлов с общим объемом 500мб
-
-
-
отправить
-
-
-
-
-
-
- Начало:
- Срок сдачи:
-
-
- 13.0.2016
- 13.0.2016
-
-
-
-
-
Для заметок
-
-
сохранить
-
-
-
-
-
-
-
-
-
Заказы
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
-
-
-
- Дизай-проект квартиры на набережной 200 m2
-
-
-
-
-
-
-
-
-
- Иванов Петр Иванович
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet
-
-
-
-
- Вы
-
-
- 13.0.2016 / 21:05
-
-
-
- Lorem ipsum dolor sit amet
-
-
-
-
-
Прикрепить файл
-
- Не более 10 файлов с общим объемом 500мб
-
-
-
отправить
-
-
-
-
Этапы работы
-
-
1 / Согласование условий
-
- Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
-
-
-
-
-
- Этап 1 Название этапа
-
-
- Результаты этапа: Готовый чертеж 1
-
-
-
до 16.03.2015
-
30 000
-
-
-
-
-
-
- Этап 2 Название этапа
-
-
- Результаты этапа: Готовый чертеж 1
-
-
-
до 16.03.2015
-
30 000
-
-
-
-
-
-
2 / Резервирование
-
- Резервирование заказчиком суммы оплаты по заказ.
-
- Сумма еще не зарезервирована
- Сумма за этап1, Зарезервирована
-
-
-
-
3 / Выполнение работы
-
- Процесс выполнения задания в заказе
-
-
-
-
- {% include 'partials/footer.html' %}
-
-
-{% endblock %}
diff --git a/users/templates/portfolio_create_form.html b/users/templates/portfolio_create_form.html
new file mode 100644
index 0000000..beb2de8
--- /dev/null
+++ b/users/templates/portfolio_create_form.html
@@ -0,0 +1,82 @@
+{% load common_tags %}
+
+
{% csrf_token %}
+
+
+
Название заказа {{ worksell_form.name.errors.as_text }}
+
+
+
+
+
Подробно опишите задание {{ worksell_form.description.errors.as_text }}
+
{{ worksell_form.description.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Бюджет{{ worksell_form.budget.errors.as_text }}
+
+
+
+
+
+ {{ worksell_form.budget_type }}
+
+
+
+
+
+
Срок выполнения{{ worksell_form.budget.errors.as_text }}
+
+
+
+
+
+ {{ worksell_form.term_type }}
+
+
+
+
+
+
Вид строительства
+ {{ worksell_form.construction_type}}
+
+
+
+
Классификация здания
+ {{ worksell_form.building_classification}}
+
+
+
+
+
+
+
+
+
+
diff --git a/users/templates/worksell_create_form.html b/users/templates/worksell_create_form.html
new file mode 100644
index 0000000..28ea2cc
--- /dev/null
+++ b/users/templates/worksell_create_form.html
@@ -0,0 +1,82 @@
+{% load common_tags %}
+
+
{% csrf_token %}
+
+
+
Название заказа {{ worksell_form.name.errors.as_text }}
+
+
+
+
+
Подробно опишите задание {{ worksell_form.description.errors.as_text }}
+
{{ worksell_form.description.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Бюджет{{ worksell_form.budget.errors.as_text }}
+
+
+
+
+
+ {{ worksell_form.budget_type }}
+
+
+
+
+
+
Срок выполнения{{ worksell_form.budget.errors.as_text }}
+
+
+
+
+
+ {{ worksell_form.term_type }}
+
+
+
+
+
+
Вид строительства
+ {{ worksell_form.construction_type}}
+
+
+
+
Классификация здания
+ {{ worksell_form.building_classification}}
+
+
+
+
+
+
+
+
+
+
diff --git a/users/urls.py b/users/urls.py
index d004649..d12a052 100755
--- a/users/urls.py
+++ b/users/urls.py
@@ -12,8 +12,6 @@ from .views import (
CustomerProfileTrashedProjectsView,
ContractorFinancialInfoEdit,
CustomerProfileEditView,
- CustomerChat,
- ContractorChat,
# UserDetailView,
# UserInfoListView,
UserListView,
@@ -38,7 +36,5 @@ urlpatterns = [
# urls.url(r'^(?P
\d+)/$', UserView.as_view(), name='user_view'),
urls.url(r'contractors/(?P\d+)/edit/$', ContractorProfileEditView.as_view(), name='contractor-edit'),
urls.url(r'customers/(?P\d+)/edit/$', CustomerProfileEditView.as_view(), name='customers-edit'),
- urls.url(r'customer/chat/$', CustomerChat.as_view(), name='customer-chat'),
- urls.url(r'contractor/chat/$', ContractorChat.as_view(), name='contractor-chat'),
urls.url(r'contractors/(?P\d+)/financialinfo/edit/$', ContractorFinancialInfoEdit.as_view(), name='contractor-financical'),
]
diff --git a/users/views.py b/users/views.py
index aeeb4e9..1ce4004 100644
--- a/users/views.py
+++ b/users/views.py
@@ -8,11 +8,13 @@ from django.core.urlresolvers import reverse
from archilance.mixins import BaseMixin
from common.utils import get_or_none
from specializations.models import Specialization
+from work_sell.forms import WorkSellForm
from .models import User, ContractorFinancialInfo
from .mixins import CheckForUserMixin
from .forms import UserEditForm, ContractorFinancicalInfoForm
+
class UserListView(ListView):
model = User
template_name = 'users_list.html'
@@ -27,9 +29,15 @@ class ContractorListView(ListView):
class ContractorProfileDetailView(DetailView):
model = User
+ worksell_form_class = WorkSellForm
template_name = 'contractor_profile.html'
context_object_name = 'contractor'
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context['worksell_form'] = self.worksell_form_class
+ return context
+
class ContractorOfficeDetailView(DetailView):
model = User
@@ -139,16 +147,3 @@ class ContractorFinancialInfoEdit(CheckForUserMixin, View):
return render(request, self.template_name,{'form': form})
-
-class CustomerChat(View):
- template_name = 'customer_chat.html'
-
- def get(self, request, *args, **kwargs):
- return render(request, self.template_name)
-
-
-class ContractorChat(View):
- template_name = 'contractor_chat.html'
-
- def get(self, request, *args, **kwargs):
- return render(request, self.template_name)
diff --git a/work_sell/forms.py b/work_sell/forms.py
index 4483fed..86979b8 100644
--- a/work_sell/forms.py
+++ b/work_sell/forms.py
@@ -1,9 +1,22 @@
from django import forms
+from common.models import Location
from .models import WorkSell
+
class WorkSellForm(forms.ModelForm):
class Meta:
model = WorkSell
fields = '__all__'
+
+ widgets = {
+ 'construction_type': forms.Select(attrs={'class':'selectpicker'}),
+ 'building_classification': forms.Select(attrs={'class':'selectpicker'}),
+ }
+
+ def __init__(self, *args, **kwargs):
+ # self.request = kwargs.pop('request')
+ super().__init__(*args, **kwargs)
+
+ self.fields['location'].queryset = Location.objects.root_nodes()[0].get_descendants()
diff --git a/work_sell/migrations/0008_auto_20160706_1249.py b/work_sell/migrations/0008_auto_20160706_1249.py
new file mode 100644
index 0000000..569d9b3
--- /dev/null
+++ b/work_sell/migrations/0008_auto_20160706_1249.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-07-06 09:49
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mptt.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0038_auto_20160706_1249'),
+ ('common', '0003_mainpage'),
+ ('specializations', '0002_auto_20160602_1203'),
+ ('work_sell', '0007_auto_20160705_1514'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='worksell',
+ name='price',
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='budget',
+ field=models.DecimalField(decimal_places=0, default=0, max_digits=10, null=True),
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='budget_by_agreement',
+ field=models.BooleanField(default=False),
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='building_classification',
+ field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.BuildingClassfication'),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='construction_type',
+ field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.ConstructionType'),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='location',
+ field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='common.Location'),
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='specialization',
+ field=mptt.fields.TreeForeignKey(default=5, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='specializations.Specialization'),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='term',
+ field=models.IntegerField(default=0),
+ ),
+ migrations.AddField(
+ model_name='worksell',
+ name='term_type',
+ field=models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20),
+ ),
+ ]
diff --git a/work_sell/models.py b/work_sell/models.py
index 89d9ee0..e3e467c 100644
--- a/work_sell/models.py
+++ b/work_sell/models.py
@@ -1,15 +1,27 @@
+from mptt.models import TreeForeignKey
+from sorl.thumbnail import ImageField
+
from django.db import models
from django.utils import timezone
-from sorl.thumbnail import ImageField
+
from users.models import User
+from projects.models import BuildingClassfication, ConstructionType, TERMS
+from specializations.models import Specialization
class WorkSell(models.Model):
name = models.CharField(max_length=255)
description = models.TextField(blank=True)
img = ImageField(upload_to='worksell/worksell')
- price = models.DecimalField(max_digits=10, decimal_places=0, default=0)
+ budget = models.DecimalField(max_digits=10, decimal_places=0, default=0, null=True)
+ budget_by_agreement = models.BooleanField(default=False)
+ specialization = TreeForeignKey(Specialization, related_name='worksells')
+ term = models.IntegerField(default=0)
+ term_type = models.CharField(max_length=20, choices=TERMS, default='hour')
contractor = models.ForeignKey(User, related_name='work_sell')
+ building_classification = models.ForeignKey(BuildingClassfication, related_name='worksells')
+ construction_type = models.ForeignKey(ConstructionType, related_name='worksells')
+ location = TreeForeignKey('common.Location', related_name='worksells', null=True, blank=True)
created = models.DateTimeField(default=timezone.now)
def __str__(self):
diff --git a/work_sell/templates/worksell_create.html b/work_sell/templates/worksell_create.html
new file mode 100644
index 0000000..afcca69
--- /dev/null
+++ b/work_sell/templates/worksell_create.html
@@ -0,0 +1,4 @@
+{% csrf_token %}
+ {{ form.as_p }}
+
+
diff --git a/work_sell/templates/worksells_list.html b/work_sell/templates/worksells_list.html
index 586545a..00003fe 100644
--- a/work_sell/templates/worksells_list.html
+++ b/work_sell/templates/worksells_list.html
@@ -3,87 +3,7 @@
{% load thumbnail %}
{% block content %}
-
-
-
-
-
-
-
-
-
-
-
-
45%
-
-
-
-
+{% include 'partials/header.html' %}
@@ -93,33 +13,25 @@
-
Тип работ:
Специализации:
+
-
- Mustard
-
+
-
- Mustard
-
+
-
- Mustard
-
+
-
- Mustard
-
-
+
+
Тип работ:
diff --git a/work_sell/urls.py b/work_sell/urls.py
index 6db4aaf..bc1261e 100644
--- a/work_sell/urls.py
+++ b/work_sell/urls.py
@@ -3,11 +3,13 @@ from django.conf import urls
from .views import (
WorkSellsView,
WorkSellDetail,
+ WorkSellCreateView,
)
app_name = 'work_sell'
urlpatterns = [
urls.url(r'^$', WorkSellsView.as_view(), name='list'),
+ urls.url(r'^create/$', WorkSellCreateView.as_view(), name='create'),
urls.url(r'^(?P
\d+)/$', WorkSellDetail.as_view(), name='detail'),
]
diff --git a/work_sell/views.py b/work_sell/views.py
index 615a489..7209dc6 100644
--- a/work_sell/views.py
+++ b/work_sell/views.py
@@ -2,6 +2,7 @@ from django.shortcuts import render
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from .models import WorkSell
+from .forms import WorkSellForm
class WorkSellsView(ListView):
@@ -22,6 +23,8 @@ class WorkSellDetail(DetailView):
class WorkSellCreateView(CreateView):
model = WorkSell
+ form_class = WorkSellForm
+ template_name = 'worksell_create.html'
class WorkSellUpdateView(CreateView):