#ARC-35 #ARC-14

remotes/origin/PR-39
ArturBaybulatov 10 years ago
parent 7ceafb015f
commit 9a66398585
  1. 7
      README.md
  2. 20
      projects/migrations/0012_project_rejected_answers_count.py
  3. 1
      projects/models.py
  4. 27
      projects/templates/project_detail.html
  5. 10
      projects/views.py

@ -14,6 +14,13 @@ python manage.py makemigrations projects specializations users && \
python manage.py migrate python manage.py migrate
``` ```
Enable solr-thumbnail:
```
python manage.py makemigrations thumbnail
python manage.py migrate
```
``` ```
python manage.py runserver python manage.py runserver
``` ```

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-08-19 09:32
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('projects', '0011_merge'),
]
operations = [
migrations.AddField(
model_name='project',
name='rejected_answers_count',
field=models.PositiveIntegerField(default=0),
),
]

@ -87,6 +87,7 @@ class Project(models.Model):
name = models.CharField(max_length=255) name = models.CharField(max_length=255)
price_and_term_required = models.BooleanField(default=False) price_and_term_required = models.BooleanField(default=False)
realty = models.ForeignKey(Realty, blank=True, null=True, related_name='projects') realty = models.ForeignKey(Realty, blank=True, null=True, related_name='projects')
rejected_answers_count = models.PositiveIntegerField(default=0)
specialization = TreeForeignKey(Specialization, related_name='projects') specialization = TreeForeignKey(Specialization, related_name='projects')
state = models.CharField(default='active', max_length=20, choices=STATES) state = models.CharField(default='active', max_length=20, choices=STATES)
term = models.IntegerField(default=0) term = models.IntegerField(default=0)

@ -453,7 +453,7 @@
{% elif request.user.is_customer and project.answers.exists %} {% elif request.user.is_customer and project in request.user.projects.all %}
@ -466,30 +466,34 @@
<div class="col-lg-12 exButton"> <div class="col-lg-12 exButton">
<div class="btn-group" role="group" aria-label="..."> <div class="btn-group" role="group" aria-label="...">
<button type="button" class="btn btn-default"> <button type="button" class="btn btn-default">
Новые <span>+7</span> Новые <span>{{ project.answers.count|sub:project.candidates.count }}</span>
</button> </button>
<button type="button" class="btn btn-default"> <button type="button" class="btn btn-default">
Кандидаты <span>7</span> Кандидаты <span>{{ project.candidates.count }}</span>
</button> </button>
<button type="button" class="btn btn-default"> <button type="button" class="btn btn-default">
Отказал <span>7</span> Отказал <span>{{ project.rejected_answers_count }}</span>
</button> </button>
</div> </div>
</div> </div>
</div> </div>
{% if project.answers.exists %}
{% if project.candidates.count > 1 %}
<div class="col-lg-12 compareBlock"> <div class="col-lg-12 compareBlock">
<div class="col-lg-2 col-lg-offset-5"> <div class="col-lg-2 col-lg-offset-5">
<p><a href="{% url 'projects:comparison' project.pk %}">Сравнить кандидатов</a></p> <p><a href="{% url 'projects:comparison' project.pk %}">Сравнить кандидатов</a></p>
</div> </div>
</div> </div>
{% endif %}
<div class="col-lg-12 exNew"> <div class="col-lg-12 exNew">
<p>Новые исполнители</p> <p>Новые исполнители</p>
</div> </div>
{% for answer in project.answers.all %} {% for answer in project.answers.all %}
<div class="candidateBlock disTab"> <div class="candidateBlock disTab">
<div class="candidate"> <div class="candidate">
@ -633,6 +637,17 @@
{% endif %}
{% include 'partials/footer.html' %} {% include 'partials/footer.html' %}
</div> </div>
</div> </div>

@ -4,7 +4,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMix
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse, reverse_lazy from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import Q from django.db.models import Q, F
from django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse, Http404 from django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse, Http404
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic import ListView, DetailView, CreateView, DeleteView, View, UpdateView, TemplateView, FormView from django.views.generic import ListView, DetailView, CreateView, DeleteView, View, UpdateView, TemplateView, FormView
@ -181,8 +181,13 @@ class ContractorRejectProjectAnswerView(BaseMixin, View):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
answer = get_object_or_404(request.user.contractor_answers, pk=kwargs.get('pk')) answer = get_object_or_404(request.user.contractor_answers, pk=kwargs.get('pk'))
project = answer.project
answer.delete() answer.delete()
project.rejected_answers_count = F('rejected_answers_count') + 1
project.save()
messages.info(request, 'Вы успешно отказались от проекта') messages.info(request, 'Вы успешно отказались от проекта')
redirect_to = request.POST.get('next') redirect_to = request.POST.get('next')
@ -204,6 +209,9 @@ class CustomerRejectProjectAnswerView(BaseMixin, View):
answer.delete() answer.delete()
project.rejected_answers_count = F('rejected_answers_count') + 1
project.save()
messages.info(request, 'Вы успешно отказали пользователю в проекте') messages.info(request, 'Вы успешно отказали пользователю в проекте')
redirect_to = request.POST.get('next') redirect_to = request.POST.get('next')

Loading…
Cancel
Save