remotes/origin/setup
ArturBaybulatov 10 years ago
commit a60286d70c
  1. 2
      archilance/settings/base.py
  2. 53
      projects/templates/projects/project_form.html
  3. 59
      projects/views.py
  4. 0
      review/__init__.py
  5. 4
      review/admin.py
  6. 5
      review/apps.py
  7. 30
      review/migrations/0001_initial.py
  8. 27
      review/migrations/0002_auto_20160531_0906.py
  9. 0
      review/migrations/__init__.py
  10. 16
      review/models.py
  11. 3
      review/tests.py
  12. 3
      review/views.py
  13. 0
      worksell/__init__.py
  14. 3
      worksell/admin.py
  15. 5
      worksell/apps.py
  16. 0
      worksell/migrations/__init__.py
  17. 9
      worksell/models.py
  18. 3
      worksell/tests.py
  19. 3
      worksell/views.py

@ -40,6 +40,8 @@ LOCAL_APPS = [
'projects', 'projects',
'specializations', 'specializations',
'users', 'users',
'review',
'worksell',
] ]

@ -9,22 +9,18 @@
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<div class="chatBlock new-rass new-rass2 disTab"> <div class="chatBlock new-rass new-rass2 disTab">
{{ project_form.errors }}
{{ form.errors }}
<div class="col-lg-9"> <div class="col-lg-9">
<p class="new-pp new-pp3">Формирование заказа</p> <p class="new-pp new-pp3">Формирование заказа</p>
<div class="textAreaBlock2 text-nn box-sizing disTab"> <div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Название заказа</p> <p>Название заказа</p>
<input type="text" class="box-sizing" name="{{ form.name.name }}"/> <input type="text" class="box-sizing" name="{{ project_form.name.name }}"/>
{{ form.name.errors }} {{ project_form.name.errors }}
</div> </div>
<div class="textAreaBlock2 text-nn box-sizing disTab"> <div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Подробно опишите задание</p> <p>Подробно опишите задание</p>
<textarea name="{{ form.text.name }}" id="text-new"></textarea> <textarea name="{{ project_form.text.name }}" id="text-new"></textarea>
</div> </div>
</div> </div>
<div class="col-lg-3 wrChat1"> <div class="col-lg-3 wrChat1">
@ -50,12 +46,12 @@
<p class="type-work">Тип работы:</p> <p class="type-work">Тип работы:</p>
<div class="mail-block type-work-inset"> <div class="mail-block type-work-inset">
<div class="inset-mb"> <div class="inset-mb">
<label><input type="radio" value="1" name="{{ form.type_work.name }}"><span></span></label> <label><input type="radio" value="1" name="{{ project_form.type_work.name }}"><span></span></label>
<p>Проектирование</p> <p>Проектирование</p>
</div> </div>
<div class="inset-mb"> <div class="inset-mb">
<label><input type="radio" value="2" name="{{ form.type_work.name }}"><span></span></label> <label><input type="radio" value="2" name="{{ project_form.type_work.name }}"><span></span></label>
<p>Техническое сопровождение</p> <p>Техническое сопровождение</p>
</div> </div>
</div> </div>
@ -76,9 +72,11 @@
<div class="polsF1 disTab"> <div class="polsF1 disTab">
<div class="col-lg-3"> <div class="col-lg-3">
{# {{ form.specialization }}#}
<select id="specialization1" name="{{ form.specialization.name }}"> {# <select id="specialization1" name="{{ project_form.specialization.name }}">#}
</select> {# </select>#}
{{ project_form.specialization }}
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<select class="selectpicker"> <select class="selectpicker">
@ -108,7 +106,7 @@
</div> </div>
<div class="searchF1 polsF1 polsFF"> <div class="searchF1 polsF1 polsFF">
<div class="col-lg-4"> <div class="col-lg-4">
<input type="text" name="{{ form.price.name }}" class="box-sizing surr"> <input type="text" name="{{ project_form.price.name }}" class="box-sizing surr">
<select class="selectpicker2 valul"> <select class="selectpicker2 valul">
<option>&#36;</option> <option>&#36;</option>
<option>&#36;</option> <option>&#36;</option>
@ -174,24 +172,24 @@
</div> </div>
<div class="polsF1 polsF2 disTab"> <div class="polsF1 polsF2 disTab">
<div class="col-lg-3"> <div class="col-lg-3">
<select class="selectpicker"> <select class="selectpicker" >
<option>Mustard</option> <option>Mustard</option>
<option>Ketchup</option> <option>Ketchup</option>
<option>Relish</option> <option>Relish</option>
</select> </select>
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<input type="text" class="box-sizing surr surr2"> <input type="text" class="box-sizing surr surr2" name="{{ realty_form.name.name }}">
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<select class="selectpicker"> <select class="selectpicker" name="{{ realty_form.building_classification.name }}">
<option>Mustard</option> <option>Mustard</option>
<option>Ketchup</option> <option>Ketchup</option>
<option>Relish</option> <option>Relish</option>
</select> </select>
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<select class="selectpicker"> <select class="selectpicker" name="{{ realty_form.type_construction.name }}">
<option>Mustard</option> <option>Mustard</option>
<option>Ketchup</option> <option>Ketchup</option>
<option>Relish</option> <option>Relish</option>
@ -203,14 +201,14 @@
</div> </div>
<div class="polsF1 polsF2 disTab"> <div class="polsF1 polsF2 disTab">
<div class="col-lg-3"> <div class="col-lg-3">
<select class="selectpicker"> <select class="selectpicker" name="{{ realty_form.country.name }}">
<option>Страна</option> <option>Страна</option>
<option>Ketchup</option> <option>Ketchup</option>
<option>Relish</option> <option>Relish</option>
</select> </select>
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<select class="selectpicker"> <select class="selectpicker" {{ realty_form.city.name }}>
<option>Город</option> <option>Город</option>
<option>Ketchup</option> <option>Ketchup</option>
<option>Relish</option> <option>Relish</option>
@ -222,18 +220,21 @@
</div> </div>
</div> </div>
{# <div class="searchF1 polsF1 polsFF links-filter">#} <div class="searchF1 polsF1 polsFF links-filter">
{# <a href="javascript:void(0)">Разместить проект</a>#} <input style="border-radius: 40px;
{# <a href="javascript:void(0)">Сохранить</a>#} font-family: 'pfdintextcomppro-regular', sans-serif;color: black;font-size: 16px;padding: 17px 33px 17px 33px;
{##} float: left;margin: 0 15px 48px 15px;border: 1px solid #DFDFDF;text-transform: uppercase;
{# </div>#} letter-spacing: 2px;color: #42B476;border: 1px solid #42B476" type="submit" value="Разместить проект" />
<a href="javascript:void(0)">Сохранить</a>
</div>
</div> </div>
</div> </div>
</div> </div>
<input type="submit" value="Submit"/>
</form> </form>

@ -1,4 +1,4 @@
from django.http import HttpResponseForbidden from django.http import HttpResponseForbidden, HttpResponseRedirect
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import ListView, DetailView, CreateView, View, TemplateView from django.views.generic import ListView, DetailView, CreateView, View, TemplateView
@ -52,19 +52,19 @@ class ProjectDetailView(FormMixin, DetailView):
return super().form_valid(form) return super().form_valid(form)
class ProjectCreateView(CreateView): # class ProjectCreateView(CreateView):
model = Project # model = Project
# permission_required = ('projects.add_project',) # # permission_required = ('projects.add_project',)
raise_exception = True # raise_exception = True
form_class = ProjectForm # form_class = ProjectForm
success_url = '/projects/' # TODO: Use `reverse_lazy('projects-list')` from `django.core.urlresolvers` # success_url = '/projects/' # TODO: Use `reverse_lazy('projects-list')` from `django.core.urlresolvers`
#
def form_valid(self, form): # def form_valid(self, form):
project = form.instance # project = form.instance
project.user = self.request.user # project.user = self.request.user
project.save() # project.save()
#
return super().form_valid(form) # return super().form_valid(form)
class PortfolioCreateView(PermissionRequiredMixin, CreateView): class PortfolioCreateView(PermissionRequiredMixin, CreateView):
@ -73,9 +73,36 @@ class PortfolioCreateView(PermissionRequiredMixin, CreateView):
permission_required = ('projects.add_portfolio',) permission_required = ('projects.add_portfolio',)
success_url = '/projects/' 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): class TestView(View):
template_name = 'projects/test_form.html' template_name = 'projects/test_form.html'
form_class = RealtyForm form_class = RealtyForm

@ -0,0 +1,4 @@
from django.contrib import admin
from .models import Review
admin.site.register(Review)

@ -0,0 +1,5 @@
from django.apps import AppConfig
class ReviewConfig(AppConfig):
name = 'review'

@ -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)),
],
),
]

@ -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,
),
]

@ -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 = 'Отзывы'

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

@ -0,0 +1,5 @@
from django.apps import AppConfig
class WorksellConfig(AppConfig):
name = 'worksell'

@ -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

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.
Loading…
Cancel
Save