@@ -361,91 +360,5 @@
{% endblock %}
{% block js_block %}
-
-
+
{% endblock %}
diff --git a/projects/migrations/0037_auto_20160704_1444.py b/projects/migrations/0037_auto_20160704_1444.py
new file mode 100644
index 0000000..32fefbe
--- /dev/null
+++ b/projects/migrations/0037_auto_20160704_1444.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-07-04 11:44
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0036_auto_20160630_1846'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='order',
+ name='contractor',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='orders', to=settings.AUTH_USER_MODEL),
+ ),
+ ]
diff --git a/projects/serializers.py b/projects/serializers.py
index 3c40c7c..f8fa4b8 100755
--- a/projects/serializers.py
+++ b/projects/serializers.py
@@ -1,6 +1,6 @@
from rest_framework.serializers import ModelSerializer
-from .models import Project, Realty, BuildingClassfication, ConstructionType
+from .models import Project, Realty, BuildingClassfication, ConstructionType, Order
from common.serializers import LocationSerializer
from specializations.serializers import SpecializationSerializer
from users.serializers import UserSerializer
@@ -45,6 +45,19 @@ class RealtySerializer(ModelSerializer):
)
+class OrderSerializer(ModelSerializer):
+ class Meta:
+ model = Order
+
+ fields = (
+ 'contractor',
+ 'created',
+ 'project',
+ 'secure',
+ 'status',
+ )
+
+
class ProjectSerializer(ModelSerializer):
customer = UserSerializer()
specialization = SpecializationSerializer()
diff --git a/users/filters.py b/users/filters.py
index 12af244..82a0753 100755
--- a/users/filters.py
+++ b/users/filters.py
@@ -2,13 +2,13 @@ from rest_framework_filters import FilterSet, RelatedFilter, AllLookupsFilter
from .models import User
class UserFilterSet(FilterSet):
- # id = AllLookupsFilter()
- # email = AllLookupsFilter()
- # first_name = AllLookupsFilter()
- # is_active = AllLookupsFilter()
- # is_admin = AllLookupsFilter()
- # last_name = AllLookupsFilter()
- # projects = RelatedFilter('projects.filters.ProjectFilterSet')
+ id = AllLookupsFilter()
+ email = AllLookupsFilter()
+ first_name = AllLookupsFilter()
+ is_active = AllLookupsFilter()
+ is_admin = AllLookupsFilter()
+ last_name = AllLookupsFilter()
+ projects = RelatedFilter('projects.filters.ProjectFilterSet')
class Meta:
model = User
diff --git a/work_sell/admin.py b/work_sell/admin.py
index 6eb2c2c..beb929c 100644
--- a/work_sell/admin.py
+++ b/work_sell/admin.py
@@ -1,4 +1,5 @@
from django.contrib import admin
-from .models import WorkSell
+from .models import WorkSell, WorkSellPhoto
admin.site.register(WorkSell)
+admin.site.register(WorkSellPhoto)
diff --git a/work_sell/migrations/0005_auto_20160704_1449.py b/work_sell/migrations/0005_auto_20160704_1449.py
new file mode 100644
index 0000000..7826eec
--- /dev/null
+++ b/work_sell/migrations/0005_auto_20160704_1449.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-07-04 11:49
+from __future__ import unicode_literals
+
+from django.db import migrations
+import sorl.thumbnail.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('work_sell', '0004_worksell_price'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='worksell',
+ name='img',
+ field=sorl.thumbnail.fields.ImageField(upload_to='worksell/worksell'),
+ ),
+ ]
diff --git a/work_sell/migrations/0006_worksellphoto.py b/work_sell/migrations/0006_worksellphoto.py
new file mode 100644
index 0000000..08d2f2c
--- /dev/null
+++ b/work_sell/migrations/0006_worksellphoto.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-07-04 15:54
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import sorl.thumbnail.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('work_sell', '0005_auto_20160704_1449'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='WorkSellPhoto',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('img', sorl.thumbnail.fields.ImageField(upload_to='worksell/worksell')),
+ ('worksell', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='work_sell.WorkSell')),
+ ],
+ options={
+ 'verbose_name': 'Изображение Готовая работа',
+ 'verbose_name_plural': 'Изображения Готовые работы',
+ },
+ ),
+ ]
diff --git a/work_sell/models.py b/work_sell/models.py
index 77128ce..e614d3b 100644
--- a/work_sell/models.py
+++ b/work_sell/models.py
@@ -1,16 +1,33 @@
from django.db import models
+from sorl.thumbnail import ImageField
from users.models import User
+
class WorkSell(models.Model):
name = models.CharField(max_length=255)
description = models.TextField(blank=True)
- img = models.ImageField(upload_to='worksell/worksell')
+ img = ImageField(upload_to='worksell/worksell')
price = models.DecimalField(max_digits=10, decimal_places=0, default=0)
contractor = models.ForeignKey(User, related_name='work_sell')
def __str__(self):
return self.name
+ def is_author_for_work(self):
+ pass
+
class Meta:
verbose_name = 'Готовая работа'
verbose_name_plural = 'Готовые работы'
+
+
+class WorkSellPhoto(models.Model):
+ img = ImageField(upload_to='worksell/worksell')
+ worksell = models.ForeignKey(WorkSell, related_name='photos')
+
+ def __str__(self):
+ return self.worksell.name
+
+ class Meta:
+ verbose_name = 'Изображение Готовая работа'
+ verbose_name_plural = 'Изображения Готовые работы'
diff --git a/work_sell/templates/worksell_detail.html b/work_sell/templates/worksell_detail.html
new file mode 100644
index 0000000..a1e8818
--- /dev/null
+++ b/work_sell/templates/worksell_detail.html
@@ -0,0 +1,219 @@
+{% extends 'partials/base.html' %}
+{% load staticfiles %}
+{% load thumbnail %}
+{% block content %}
+
+
+
+
+
+
+
+
+

+
+
+
+
45%
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ object.text }}
+
+
+
+
+
+
+
+
+
+ {% for photo in object.photos.all %}
+
+ {% endfor %}
+
+
+
+
+
+ {% for photo in object.photos.all %}
+
+ {% endfor %}
+
+
+
+
+
+
+
+ {% include 'partials/footer.html' %}
+
+
+
+
+{% endblock %}
+{% block js_block %}
+
+
+ {% endblock %}
diff --git a/work_sell/templates/worksells_list.html b/work_sell/templates/worksells_list.html
new file mode 100644
index 0000000..13db17a
--- /dev/null
+++ b/work_sell/templates/worksells_list.html
@@ -0,0 +1,310 @@
+{% extends 'partials/base.html' %}
+{% load staticfiles %}
+{% load thumbnail %}
+{% block content %}
+
+
+
+
+
+
+
+
+

+
+
+
+
45%
+
+
+
+
+
+
+
+
+
+
+
+
Тип работ:
+
Специализации:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Тип работ:
+
Специализации:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Расширенный поиск
+
+
+
+
+
+
+
Тип работ:
+
Специализации:
+
+
Специализации:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% for work in object_list %}
+
+
+
+ {% thumbnail work.img "265x265" crop="center" as im %}
+
+ {% endthumbnail %}
+
+
+
+
+
+
+ {% thumbnail work.img "265x265" crop="center" as im %}
+
+ {% endthumbnail %}
+
+
+
+
+ {% endfor %}
+
+
+
+
+ {% include 'partials/footer.html' %}
+
+
+{% endblock %}
diff --git a/work_sell/urls.py b/work_sell/urls.py
new file mode 100644
index 0000000..6db4aaf
--- /dev/null
+++ b/work_sell/urls.py
@@ -0,0 +1,13 @@
+from django.conf import urls
+
+from .views import (
+ WorkSellsView,
+ WorkSellDetail,
+)
+
+app_name = 'work_sell'
+
+urlpatterns = [
+ urls.url(r'^$', WorkSellsView.as_view(), name='list'),
+ urls.url(r'^(?P
\d+)/$', WorkSellDetail.as_view(), name='detail'),
+]
diff --git a/work_sell/views.py b/work_sell/views.py
index 91ea44a..4f33be4 100644
--- a/work_sell/views.py
+++ b/work_sell/views.py
@@ -1,3 +1,14 @@
from django.shortcuts import render
+from django.views.generic import ListView, DetailView
-# Create your views here.
+from .models import WorkSell
+
+
+class WorkSellsView(ListView):
+ model = WorkSell
+ template_name = 'worksells_list.html'
+
+
+class WorkSellDetail(DetailView):
+ model = WorkSell
+ template_name = 'worksell_detail.html'