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 4 from django.contrib import messages
5 5 from django.utils.translation import ugettext_lazy as _
6 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 11 from .models import Link
9 12 from .forms import *
10 13  
11 14 # Create your views here.
12   -class CreateLink(generic.CreateView):
  15 +class CreateLink(LoginRequiredMixin, HasRoleMixin, generic.CreateView):
  16 + allowed_roles = ['professor', 'system_admin']
13 17 template_name = 'links/create_link.html'
14 18 form_class = CreateLinkForm
15 19 success_url = reverse_lazy('course:manage')
16 20 context_object_name = 'form'
17 21  
18 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 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 31 def get_context_data(self,**kwargs):
24 32 context = {}
25 33 context['links'] = Link.objects.all()
26 34 context['form'] = CreateLinkForm
  35 + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  36 + context["topic"] = topic
27 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 41 def deleteLink(request,linkname):
30 42 link = get_object_or_404(Link,name = linkname)
31 43 link.delete()
32 44 template_name = 'links/delete_link.html'
33 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 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 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 59 template_name = 'links/update_link.html'
39 60 form_class = UpdateLinkForm
40   - success_url = reverse_lazy('course:manage')
  61 + success_url = reverse_lazy('course:links:render_link')
41 62 def form_valid(self, form):
42 63 form.save()
43 64 messages.success(self.request, _('Link updated successfully!'))
44 65  
45 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
... ...