-
-
- {{ form.errors }}
+ {{ project_form.errors }}
@@ -50,12 +46,12 @@
Тип работы:
@@ -76,9 +72,11 @@
- {# {{ form.specialization }}#}
-
+
+{# #}
+
+ {{ project_form.specialization }}
-
+
diff --git a/projects/views.py b/projects/views.py
index 75c1d9a..ea6bf1f 100644
--- a/projects/views.py
+++ b/projects/views.py
@@ -1,4 +1,4 @@
-from django.http import HttpResponseForbidden
+from django.http import HttpResponseForbidden, HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import ListView, DetailView, CreateView, View, TemplateView
@@ -52,19 +52,19 @@ class ProjectDetailView(FormMixin, DetailView):
return super().form_valid(form)
-class ProjectCreateView(CreateView):
- model = 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`
-
- def form_valid(self, form):
- project = form.instance
- project.user = self.request.user
- project.save()
-
- return super().form_valid(form)
+# class ProjectCreateView(CreateView):
+# model = 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`
+#
+# def form_valid(self, form):
+# project = form.instance
+# project.user = self.request.user
+# project.save()
+#
+# return super().form_valid(form)
class PortfolioCreateView(PermissionRequiredMixin, CreateView):
@@ -73,9 +73,36 @@ class PortfolioCreateView(PermissionRequiredMixin, CreateView):
permission_required = ('projects.add_portfolio',)
success_url = '/projects/'
-# import code; code.interact(local=dict(globals(), **locals()))
+class ProjectCreateView(PermissionRequiredMixin, View):
+ permission_required = ('projects.add_project',)
+ project_form = ProjectForm
+ realty_form = RealtyForm
+ template_name = 'projects/project_form.html'
+
+ def get(self, request, *args, **kwargs):
+ project_form = self.project_form()
+ realty_form = self.realty_form(prefix='realty_form')
+ return render(request, self.template_name, {'project_form': project_form , 'realty_form': realty_form})
+
+ def post(self, request, *args, **kwargs):
+ project_form = self.project_form(request.POST)
+ realty_form = self.realty_form(request.POST, prefix='realty_form')
+ if project_form.is_valid() and realty_form.is_valid():
+ return self.form_valid(request, project_form, realty_form)
+ return render(request, self.template_name, {'project_form': project_form , 'realty_form': realty_form})
+
+ def form_valid(self, request, project_form, realty_form):
+ realty = realty_form.save(commit=False)
+ realty.user = request.user
+ realty.save()
+ project = project_form.save(commit=False)
+ project.user = request.user
+ project.realty = realty
+ project.save()
+ return HttpResponseRedirect('/projects/')
+
+
-from django.http import HttpResponseRedirect
class TestView(View):
template_name = 'projects/test_form.html'
form_class = RealtyForm
diff --git a/review/__init__.py b/review/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/review/admin.py b/review/admin.py
new file mode 100644
index 0000000..31b5855
--- /dev/null
+++ b/review/admin.py
@@ -0,0 +1,4 @@
+from django.contrib import admin
+from .models import Review
+
+admin.site.register(Review)
diff --git a/review/apps.py b/review/apps.py
new file mode 100644
index 0000000..5de2983
--- /dev/null
+++ b/review/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class ReviewConfig(AppConfig):
+ name = 'review'
diff --git a/review/migrations/0001_initial.py b/review/migrations/0001_initial.py
new file mode 100644
index 0000000..aed362d
--- /dev/null
+++ b/review/migrations/0001_initial.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-05-31 08:46
+from __future__ import unicode_literals
+
+from django.conf import settings
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Review',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('text', models.TextField()),
+ ('stars', models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(5)])),
+ ('is_secured', models.BooleanField(default=False)),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to=settings.AUTH_USER_MODEL)),
+ ],
+ ),
+ ]
diff --git a/review/migrations/0002_auto_20160531_0906.py b/review/migrations/0002_auto_20160531_0906.py
new file mode 100644
index 0000000..4e62d16
--- /dev/null
+++ b/review/migrations/0002_auto_20160531_0906.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-05-31 09:06
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0012_auto_20160530_1355'),
+ ('review', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='review',
+ options={'verbose_name': 'Отзыв', 'verbose_name_plural': 'Отзывы'},
+ ),
+ migrations.AddField(
+ model_name='review',
+ name='project',
+ field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to='projects.Project'),
+ preserve_default=False,
+ ),
+ ]
diff --git a/review/migrations/__init__.py b/review/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/review/models.py b/review/models.py
new file mode 100644
index 0000000..db574df
--- /dev/null
+++ b/review/models.py
@@ -0,0 +1,16 @@
+from django.db import models
+from django.core.validators import MaxValueValidator, MinValueValidator
+
+class Review(models.Model):
+ text = models.TextField()
+ project = models.ForeignKey("projects.Project", related_name='reviews')
+ user = models.ForeignKey("users.User", related_name='reviews')
+ stars = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)])
+ is_secured = models.BooleanField(default=False)
+
+ def __str__(self):
+ return self.pk
+
+ class Meta:
+ verbose_name = 'Отзыв'
+ verbose_name_plural = 'Отзывы'
diff --git a/review/tests.py b/review/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/review/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/review/views.py b/review/views.py
new file mode 100644
index 0000000..91ea44a
--- /dev/null
+++ b/review/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/worksell/__init__.py b/worksell/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/worksell/admin.py b/worksell/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/worksell/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/worksell/apps.py b/worksell/apps.py
new file mode 100644
index 0000000..0c6ce4d
--- /dev/null
+++ b/worksell/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class WorksellConfig(AppConfig):
+ name = 'worksell'
diff --git a/worksell/migrations/__init__.py b/worksell/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/worksell/models.py b/worksell/models.py
new file mode 100644
index 0000000..05636ed
--- /dev/null
+++ b/worksell/models.py
@@ -0,0 +1,9 @@
+from django.db import models
+
+class WorkSell(models.Model):
+ name = models.CharField(max_length=255)
+ description = models.TextField(blank=True)
+ img = models.ImageField(upload_to='worksell/worksell')
+
+ def __str__(self):
+ return self.name
diff --git a/worksell/tests.py b/worksell/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/worksell/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/worksell/views.py b/worksell/views.py
new file mode 100644
index 0000000..91ea44a
--- /dev/null
+++ b/worksell/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.