views.py
4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Create your views here.
from django.views import generic
from django.contrib.auth.mixins import LoginRequiredMixin
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse, reverse_lazy
from django.shortcuts import get_object_or_404, redirect, render
from amadeus.permissions import has_subject_permissions, has_resource_permissions
from .forms import PDFFileForm
from log.mixins import LogMixin
from topics.models import Topic
from pendencies.forms import PendenciesForm
class PDFFileCreateView(LoginRequiredMixin, LogMixin , generic.CreateView):
form_class = PDFFileForm
template_name = 'pdf_file/create.html'
login_url = reverse_lazy("users:login")
redirect_field_name = 'next'
def dispatch(self, request, *args, **kwargs):
slug = self.kwargs.get('slug', '')
topic = get_object_or_404(Topic, slug = slug)
if not has_subject_permissions(request.user, topic.subject):
return redirect(reverse_lazy('subjects:home'))
return super(PDFFileCreateView, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
slug = self.kwargs.get('slug', '')
topic = get_object_or_404(Topic, slug = slug)
pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
slug = self.kwargs.get('slug', '')
topic = get_object_or_404(Topic, slug = slug)
pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
if (form.is_valid() and pendencies_form.is_valid()):
return self.form_valid(form, pendencies_form)
else:
return self.form_invalid(form, pendencies_form)
def get_initial(self):
initial = super(PDFFileCreateView, self).get_initial()
slug = self.kwargs.get('slug', '')
topic = get_object_or_404(Topic, slug = slug)
initial['subject'] = topic.subject
return initial
def form_invalid(self, form, pendencies_form):
return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
def form_valid(self, form, pendencies_form):
self.object = form.save(commit = False)
slug = self.kwargs.get('slug', '')
topic = get_object_or_404(Topic, slug = slug)
self.object.topic = topic
self.object.order = topic.resource_topic.count() + 1
if not self.object.topic.visible and not self.object.topic.repository:
self.object.visible = False
self.object.save()
pend_form = pendencies_form.save(commit = False)
pend_form.resource = self.object
if not pend_form.action == "":
pend_form.save()
self.log_context['category_id'] = self.object.topic.subject.category.id
self.log_context['category_name'] = self.object.topic.subject.category.name
self.log_context['category_slug'] = self.object.topic.subject.category.slug
self.log_context['subject_id'] = self.object.topic.subject.id
self.log_context['subject_name'] = self.object.topic.subject.name
self.log_context['subject_slug'] = self.object.topic.subject.slug
self.log_context['topic_id'] = self.object.topic.id
self.log_context['topic_name'] = self.object.topic.name
self.log_context['topic_slug'] = self.object.topic.slug
self.log_context['pdf_file_id'] = self.object.id
self.log_context['pdf_file_name'] = self.object.name
self.log_context['pdf_file_slug'] = self.object.slug
super(PDFFileCreateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
return redirect(self.get_success_url())
def get_context_data(self, **kwargs):
context = super(PDFFileCreateView, self).get_context_data(**kwargs)
context['title'] = _('Create PDF File')
slug = self.kwargs.get('slug', '')
topic = get_object_or_404(Topic, slug = slug)
context['topic'] = topic
context['subject'] = topic.subject
return context
def get_success_url(self):
messages.success(self.request, _('The PDF File "%s" was added to the Topic "%s" of the virtual environment "%s" successfully!')%(self.object.name, self.object.topic.name, self.object.topic.subject.name))
return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})