Commit b5c04ff0c60992adb9500b7b4f52fd9a3b188492

Authored by Gustavo Bernardo
1 parent e6b8578a

ViewLink done, fixed issues with create link and finished, included permissions …

…in views, updated some fields, solved minor issues. [Issues: #120,#121,#122]
Showing 1 changed file with 53 additions and 8 deletions   Show diff stats
links/views.py
@@ -4,42 +4,87 @@ from django.core.urlresolvers import reverse_lazy @@ -4,42 +4,87 @@ from django.core.urlresolvers import reverse_lazy
4 from django.contrib import messages 4 from django.contrib import messages
5 from django.utils.translation import ugettext_lazy as _ 5 from django.utils.translation import ugettext_lazy as _
6 from django.shortcuts import get_object_or_404,redirect 6 from django.shortcuts import get_object_or_404,redirect
  7 +from django.contrib.auth.mixins import LoginRequiredMixin
  8 +from rolepermissions.mixins import HasRoleMixin
7 9
  10 +from courses.models import Topic
8 from .models import Link 11 from .models import Link
9 from .forms import * 12 from .forms import *
10 13
11 # Create your views here. 14 # Create your views here.
12 -class CreateLink(generic.CreateView): 15 +class CreateLink(LoginRequiredMixin, HasRoleMixin, generic.CreateView):
  16 + allowed_roles = ['professor', 'system_admin']
13 template_name = 'links/create_link.html' 17 template_name = 'links/create_link.html'
14 form_class = CreateLinkForm 18 form_class = CreateLinkForm
15 success_url = reverse_lazy('course:manage') 19 success_url = reverse_lazy('course:manage')
16 context_object_name = 'form' 20 context_object_name = 'form'
17 21
18 def form_valid(self, form): 22 def form_valid(self, form):
19 - form.save() 23 + self.object = form.save(commit = False)
  24 + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  25 + self.object.topic = topic
20 messages.success(self.request, _('Link created successfully!')) 26 messages.success(self.request, _('Link created successfully!'))
21 - messages.error(self.request, _("An error occurred when trying to create the link"))  
22 - return super(CreateLink, self).form_valid(form) 27 + #messages.error(self.request, _("An error occurred when trying to create the link"))
  28 + self.object.save()
  29 + #return self.success_url
  30 + return self.get_success_url()
23 def get_context_data(self,**kwargs): 31 def get_context_data(self,**kwargs):
24 context = {} 32 context = {}
25 context['links'] = Link.objects.all() 33 context['links'] = Link.objects.all()
26 context['form'] = CreateLinkForm 34 context['form'] = CreateLinkForm
  35 + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  36 + context["topic"] = topic
27 return context 37 return context
28 - 38 + def get_success_url(self):
  39 + self.success_url = redirect('course:links:render_link', id = self.object.id)
  40 + return self.success_url
29 def deleteLink(request,linkname): 41 def deleteLink(request,linkname):
30 link = get_object_or_404(Link,name = linkname) 42 link = get_object_or_404(Link,name = linkname)
31 link.delete() 43 link.delete()
32 template_name = 'links/delete_link.html' 44 template_name = 'links/delete_link.html'
33 messages.success(request,_("Link deleted Successfully!")) 45 messages.success(request,_("Link deleted Successfully!"))
34 - messages.error(request, _("An error occurred when trying to delete the link")) 46 + #messages.error(request, _("An error occurred when trying to delete the link"))
35 return redirect('course:manage') 47 return redirect('course:manage')
  48 +
  49 +def render_link(request, id):
  50 + template_name = 'links/render_link.html'
  51 + context = {
  52 + 'link': get_object_or_404(Link, id = id)
  53 + }
  54 + return render(request, template_name, context)
  55 +
36 #Referencia no delete link para adicionar quando resolver o problema do context {% url 'course:delete' link.name %} 56 #Referencia no delete link para adicionar quando resolver o problema do context {% url 'course:delete' link.name %}
37 -class UpdateLink(generic.UpdateView): 57 +class UpdateLink(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
  58 + allowed_roles = ['professor', 'system_admin']
38 template_name = 'links/update_link.html' 59 template_name = 'links/update_link.html'
39 form_class = UpdateLinkForm 60 form_class = UpdateLinkForm
40 - success_url = reverse_lazy('course:manage') 61 + success_url = reverse_lazy('course:links:render_link')
41 def form_valid(self, form): 62 def form_valid(self, form):
42 form.save() 63 form.save()
43 messages.success(self.request, _('Link updated successfully!')) 64 messages.success(self.request, _('Link updated successfully!'))
44 65
45 return super(UpdateLink, self).form_valid(form) 66 return super(UpdateLink, self).form_valid(form)
  67 +
  68 + def get_object(self, queryset=None):
  69 + self.object = get_object_or_404(Link, slug = self.kwargs.get('slug'))
  70 + print(self.object.link_description)
  71 + return self.object
  72 + def get_success_url(self):
  73 + self.success_url = redirect('course:links:render_link', id = self.object.id)
  74 + return self.success_url
  75 +class ViewLink(LoginRequiredMixin,HasRoleMixin,generic.DetailView):
  76 + allowed_roles = ['professor', 'system_admin']
  77 + template_name = 'links/view_link.html'
  78 + success_url = reverse_lazy('course:links:render_link')
  79 + context_object_name = 'link'
  80 + def get_context_data(self,**kwargs):
  81 + context = {}
  82 + link = Link.objects.get(slug = self.kwargs.get('slug'))
  83 + context['link'] = link
  84 + return context
  85 + def get_success_url(self):
  86 + self.success_url = redirect('course:links:render_link', id = self.object.id)
  87 + return self.success_url
  88 + def get_queryset(self):
  89 + self.queryset = Link.objects.filter(slug = self.kwargs.get('slug'))
  90 + return self.queryset