diff --git a/projects/migrations/0010_auto_20160816_1831.py b/projects/migrations/0010_auto_20160816_1831.py new file mode 100644 index 0000000..59f968e --- /dev/null +++ b/projects/migrations/0010_auto_20160816_1831.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-16 15:31 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0009_project_is_archive'), + ] + + operations = [ + migrations.RemoveField( + model_name='project', + name='is_archive', + ), + migrations.AddField( + model_name='answer', + name='is_archive', + field=models.BooleanField(default=False), + ), + ] diff --git a/projects/models.py b/projects/models.py index cc7065b..6d8f98d 100644 --- a/projects/models.py +++ b/projects/models.py @@ -93,7 +93,6 @@ class Project(models.Model): term_type = models.CharField(max_length=20, choices=TERMS, default='hour') text = models.TextField(blank=True) work_type = models.IntegerField(default=1, choices=WORK_TYPES) - is_archive = models.BooleanField(default=False) def __str__(self): return self.name @@ -127,6 +126,7 @@ class Answer(models.Model): secure_deal_only = models.BooleanField(default=False) term = models.IntegerField(default=0) term_type = models.CharField(max_length=10, choices=TERMS, default='hour') + is_archive = models.BooleanField(default=False) content_type = models.ForeignKey(ContentType, limit_choices_to=Q(app_label='users', model='user') | Q(app_label='users', model='team')) object_id = models.IntegerField() diff --git a/projects/urls.py b/projects/urls.py index d219e03..ecbfed6 100644 --- a/projects/urls.py +++ b/projects/urls.py @@ -16,6 +16,7 @@ from .views import ( ProjectComparisonView, ProjectDetailWithAnswerView, ProjectFilterView, + ContractorAnswerArchiveView, sort_candidates, ) @@ -28,6 +29,7 @@ urlpatterns = [ urls.url(r'^create/$', CustomerProjectCreateView.as_view(), name='customer-project-create'), urls.url(r'^(?P\d+)/edit/$', CustomerProjectEditView.as_view(), name='customer-project-edit'), urls.url(r'^(?P\d+)/trash/$', CustomerProjectTrashView.as_view(), name='customer-project-trash'), + urls.url(r'^answer/move/archive/$', ContractorAnswerArchiveView.as_view(), name='contractor-answer-archive'), urls.url(r'^portfolio/(?P\d+)/trash/$', ContractorPortfolioTrashView.as_view(), name='contractor-portfolio-trash'), urls.url(r'^(?P\d+)/restore/$', CustomerProjectRestoreView.as_view(), name='customer-project-restore'), urls.url(r'^(?P\d+)/delete/$', CustomerProjectDeleteView.as_view(), name='customer-project-delete'), diff --git a/projects/views.py b/projects/views.py index 116be52..3815632 100644 --- a/projects/views.py +++ b/projects/views.py @@ -192,8 +192,9 @@ class ProjectFilterView(BaseMixin, View): for k in keywords: projects = projects.filter(Q(name__icontains=k) | Q(text__icontains=k)) - projects = projects.filter(cro=cro) - + # projects = projects.filter(cro=cro) + + if work_type: projects = projects.filter(work_type=work_type) @@ -429,6 +430,18 @@ class CustomerProjectEditView(BaseMixin, View): return render(request, self.template_name, context) +class ContractorAnswerArchiveView(View): + + def post(self, request, *args, **kwargs): + project_pk = request.POST.get('project_pk') + user_pk = request.POST.get('user_pk') + answer = Answer.objects.filter(project_id=project_pk,object_id=user_pk, content_type__model='user').first() + answer.is_archive = True + answer.save() + redirect_to = request.POST.get('next') + return redirect(redirect_to) + + class ContractorPortfolioTrashView(View): form_class = ContractorPortfolioTrashForm diff --git a/templates/registration/registration_complete.html b/templates/registration/registration_complete.html index d349892..9ad6d44 100644 --- a/templates/registration/registration_complete.html +++ b/templates/registration/registration_complete.html @@ -7,6 +7,9 @@

Регистрация прошла успешно

+

Вам необходимо активировать этот аккаунт. Перейдите по ссылке в письме, + которое вам отправлено на почту +

{% include 'partials/footer.html' %} diff --git a/users/templates/contractor_office_open_projects.html b/users/templates/contractor_office_open_projects.html index e00994b..97de5d7 100644 --- a/users/templates/contractor_office_open_projects.html +++ b/users/templates/contractor_office_open_projects.html @@ -12,7 +12,7 @@

Личный кабинет

- {% include 'partials/contractor_profile_tabs.html' with contractor_pk=request.user.pk active='open' %} + {% include 'partials/contractor_profile_tabs.html' with contractor_pk=request.user.pk active='open' all_project_count=projects_count %}
Все @@ -22,11 +22,11 @@
@@ -69,14 +69,23 @@ {{ proj.budget }}

diff --git a/users/templates/contractor_office_open_projects_archive.html b/users/templates/contractor_office_open_projects_archive.html new file mode 100644 index 0000000..27b2fdd --- /dev/null +++ b/users/templates/contractor_office_open_projects_archive.html @@ -0,0 +1,98 @@ +{% extends 'partials/base.html' %} + +{% load staticfiles %} +{% load specializtions_tags %} +{% load thumbnail %} + +{% block content %} + {% include 'partials/header.html' %} + +
+
+
+

Личный кабинет

+
+ {% include 'partials/contractor_profile_tabs.html' with contractor_pk=request.user.pk active='open' all_project_count=projects_count %} +
+ +
+ + +
+
+
+ {% for proj in open_projects %} +
+
+ +

+ {{ proj }} +

+
+
    +
  • + Объект "{{ proj.realty.name }}" +
  • +
  • + 0 ответ от имени группы +
  • +
+

+

+
    +
  • + {{ proj.created }} +
  • +
  • + 0 +
  • +
  • + 0 +
  • +
  • + {{ proj.customer.username }} +
  • +
+
+
+

+ {{ proj.budget }} +

+ +
+
+ {% endfor %} +
+ + {% include 'partials/footer.html' %} +
+
+{% endblock %} diff --git a/users/templates/partials/contractor_profile_tabs.html b/users/templates/partials/contractor_profile_tabs.html index 0c5cd24..81d36da 100644 --- a/users/templates/partials/contractor_profile_tabs.html +++ b/users/templates/partials/contractor_profile_tabs.html @@ -17,7 +17,7 @@
0
-
0
+
{{ all_project_count}}
  • diff --git a/users/views.py b/users/views.py index 5fe77dc..15700d9 100644 --- a/users/views.py +++ b/users/views.py @@ -387,6 +387,36 @@ class ContractorOfficeDetailView(DetailView): class ContractorOfficeOpenProjectsView(BaseMixin,View): template_name = 'contractor_office_open_projects.html' + def get(self, request, *args, **kwargs): + context = self.get_context_data(**_.merge({},request.GET, kwargs)) + contractor = get_object_or_404(User.contractor_objects,pk=kwargs.get('pk')) + owner = request.GET.get('owner') + # import code; code.interact(local=dict(globals(), **locals())) + if owner and owner == 'private': + all_project_ids = [a.project.pk for a in contractor.contractor_answers.filter(is_archive=False)] + elif owner and owner == 'teams': + all_project_ids = [a.project.pk for a in contractor.team.answers.filter(is_archive=False)] + else: + team_project_ids = [a.project.pk for a in contractor.team.answers.filter(is_archive=False)] + contractor_project_ids = [a.project.pk for a in contractor.contractor_answers.filter(is_archive=False)] + all_project_ids = contractor_project_ids + team_project_ids + + open_projects = Project.objects.filter(pk__in=all_project_ids) + archive_contractor_count = contractor.contractor_answers.filter(is_archive=True).count() + archive_team_count = contractor.team.answers.filter(is_archive=True).count() + archive_count = archive_contractor_count + archive_team_count + context.update({ + 'open_projects': open_projects, + 'projects_count': len(open_projects), + 'current_projects_count': len(open_projects), + 'archive_count': archive_count, + }) + return render(request, self.template_name, context) + + +class ContractorOfficeOpenProjectsArchiveView(BaseMixin,View): + template_name = 'contractor_office_open_projects_archive.html' + def get(self, request, *args, **kwargs): context = self.get_context_data(**_.merge({},request.GET, kwargs)) contractor = get_object_or_404(User.contractor_objects,pk=kwargs.get('pk')) @@ -404,6 +434,7 @@ class ContractorOfficeOpenProjectsView(BaseMixin,View): open_projects = Project.objects.filter(pk__in=all_project_ids) context.update({ 'open_projects': open_projects, + 'projects_count': len(open_projects), }) return render(request, self.template_name, context)