You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

136 lines
4.3 KiB

from django.http import HttpResponseForbidden
from django.core.urlresolvers import reverse
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import ListView, DetailView, CreateView
from django.views.generic.edit import FormMixin
from .models import Project, Portfolio
from .forms import ProjectForm, PortfolioForm, AnswerForm, RealtyForm
class ProjectListView(ListView):
model = Project
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context
class ProjectDetailView(FormMixin, DetailView):
model = Project
form_class = AnswerForm
def get_success_url(self):
return reverse('projects:detail', kwargs={'pk': self.object.pk})
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = self.get_form()
return context
def get_form_kwargs(self, **kwargs):
kwargs = super().get_form_kwargs(**kwargs)
kwargs.update({'project_id': self.object.pk})
return kwargs
def post(self, request, *args, **kwargs):
if not request.user.is_authenticated():
return HttpResponseForbidden()
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
answer = form.instance
answer.user = self.request.user
answer.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):
model = Portfolio
form_class = PortfolioForm
permission_required = ('projects.add_portfolio',)
success_url = '/projects/'
# import code; code.interact(local=dict(globals(), **locals()))
class TestProjectView(CreateView):
model = Project
form_class = ProjectForm
template_name = 'projects/test.html'
success_url = '/projects/'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['realty_form'] = RealtyForm(prefix='form_2')
return context
# def get(self, request, *args, **kwargs):
# self.object = None
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
realty_form = RealtyForm(self.request.POST)
import code; code.interact(local=dict(globals(), **locals()))
if form.is_valid():
return self.form_valid(form, realty_form)
else:
return self.form_invalid(form, realty_form)
# import code; code.interact(local=dict(globals(), **locals()))
def form_valid(self, form, realty_form):
status = 'form_valid'
realty = realty_form.instance
realty.user = self.request.user
realty.save()
project = form.instance
project.user = self.request.user
project.realty = realty
project.save()
# import code; code.interact(local=dict(globals(), **locals()))
def form_invalid(self, form, realty_form):
status = 'form_invalid'
return self.render_to_response(
self.get_context_data(form=form,
realty_form=realty_form))
from django.shortcuts import render
from .forms import PortfolioPhotoFormSet
def manage_articles(request):
form = PortfolioForm
portfolio_photo_form = PortfolioPhotoFormSet()
if request.method == "POST":
form = PortfolioForm(request.POST)
portfolio_photo_form = PortfolioPhotoFormSet(request.POST, request.FILES)
import code; code.interact(local=dict(globals(), **locals()))
return render(request, 'projects/testport.html', {'form': form, 'portfolio_photo_form': portfolio_photo_form})