views.py
3.59 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
from django.shortcuts import get_object_or_404, redirect, render
from django.views import generic
from django.contrib import messages
from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.mixins import LoginRequiredMixin
from amadeus.permissions import has_subject_permissions, has_resource_permissions
from topics.models import Topic
from pendencies.forms import PendenciesForm
from .forms import FileLinkForm
from .models import FileLink
class CreateView(LoginRequiredMixin, generic.edit.CreateView):
login_url = reverse_lazy("users:login")
redirect_field_name = 'next'
template_name = 'file_links/create.html'
form_class = FileLinkForm
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(CreateView, 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(CreateView, 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.show_window = True
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()
return redirect(self.get_success_url())
def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs)
context['title'] = _('Create File Link')
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 File Link "%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})