from django.shortcuts import render, get_object_or_404, redirect from django.contrib import messages from django.contrib.auth.models import Group from django.views.generic import ListView, DetailView, View, UpdateView, CreateView from django.views.generic.base import TemplateView from django.core.urlresolvers import reverse from archilance.mixins import BaseMixin from .models import User, ContractorFinancialInfo from .mixins import CheckForUserMixin from .forms import UserEditForm, ContractorFinancicalInfoForm class UserListView(ListView): model = User template_name = 'users_list.html' context_object_name = 'users' class ContractorListView(ListView): model = User template_name = 'contractor_list.html' context_object_name = 'contractor' class ContractorProfileDetailView(DetailView): model = User template_name = 'contractor_profile.html' context_object_name = 'contractor' class ContractorOfficeDetailView(DetailView): model = User template_name = 'contractor_office.html' context_object_name = 'contractor' class CustomerProfileOpenProjectsView(BaseMixin, DetailView): model = User template_name = 'customer_profile_open_projects.html' context_object_name = 'customer' def get_context_data(self, **kwargs): c = super().get_context_data(**kwargs) c['projects'] = self.object.projects.filter(state='active') return c class CustomerProfileTrashedProjectsView(BaseMixin, DetailView): model = User template_name = 'customer_profile_trashed_projects.html' context_object_name = 'customer' def get_context_data(self, **kwargs): c = super().get_context_data(**kwargs) c['projects'] = self.object.projects.filter(state='trashed') return c class CustomerProfileCurrentProjectsView(BaseMixin, DetailView): model = User template_name = 'customer_profile_current_projects.html' context_object_name = 'customer' class CustomerProfileReviewsView(BaseMixin, DetailView): model = User template_name = 'customer_profile_reviews.html' context_object_name = 'customer' class ContractorProfileEditView(CheckForUserMixin, View): form_class = UserEditForm template_name = 'contractor_profile_edit.html' def get(self, request, *args, **kwargs): instance = get_object_or_404(User, pk=request.user.pk) form = self.form_class(instance=instance) return render(request, self.template_name, {'form': form}) def post(self, request, *args, **kwargs): instance = request.user form = self.form_class(request.POST, request.FILES, instance=instance) if form.is_valid(): # import code; code.interact(local=dict(globals(), **locals())) form.save() messages.info(request, 'Данные успешно отредактированы') return redirect(reverse('users:contractor-edit', kwargs={'pk': request.user.pk})) return render(request, self.template_name, {'form': form}) class ContractorFinancialInfoEdit(CheckForUserMixin, View): template_name = 'contractor_financical_info_edit.html' form_class = ContractorFinancicalInfoForm def get(self, request, *args, **kwargs): instance = request.user.contractor_financial_info # import code; code.interact(local=dict(globals(), **locals())) form = self.form_class(instance=instance) return render(request, self.template_name, {'form': form}) def post(self, request, *args, **kwargs): instance = request.user.contractor_financial_info form = self.form_class(request.POST, request.FILES, instance=instance) if form.is_valid(): financical_instance = form.save() request.user.contractor_financial_info = financical_instance request.user.save() messages.info(request, 'Данные успешно отредактированы') return redirect(reverse('users:contractor-financical', kwargs={'pk': request.user.pk})) return render(request, self.template_name,{'form': form})