Commit 89ceed5d35c43a974c5b685d96bcb989122d73ce

Authored by Gustavo Bernardo
1 parent 3acf26d5

Finished create link, solved minor issues, finished function to set the image li…

…nk and show it [Issues: #197,#198,#120]
Showing 1 changed file with 28 additions and 7 deletions   Show diff stats
links/views.py
@@ -6,12 +6,16 @@ from django.utils.translation import ugettext_lazy as _ @@ -6,12 +6,16 @@ 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 7 from django.contrib.auth.mixins import LoginRequiredMixin
8 from rolepermissions.mixins import HasRoleMixin 8 from rolepermissions.mixins import HasRoleMixin
  9 +from core.mixins import NotificationMixin
  10 +from django.urls import reverse
  11 +from django.core.files.base import ContentFile
  12 +
9 13
  14 +from .image_crawler import *
10 from courses.models import Topic 15 from courses.models import Topic
11 from .models import Link 16 from .models import Link
12 from .forms import * 17 from .forms import *
13 -from core.mixins import NotificationMixin  
14 -from django.urls import reverse 18 +
15 19
16 # Create your views here. 20 # Create your views here.
17 class CreateLink(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.CreateView): 21 class CreateLink(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.CreateView):
@@ -20,19 +24,36 @@ class CreateLink(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.Cr @@ -20,19 +24,36 @@ class CreateLink(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.Cr
20 form_class = CreateLinkForm 24 form_class = CreateLinkForm
21 success_url = reverse_lazy('course:manage') 25 success_url = reverse_lazy('course:manage')
22 context_object_name = 'form' 26 context_object_name = 'form'
  27 + def form_invalid(self,form):
  28 + context = super(CreateLink, self).form_invalid(form)
  29 + context.status_code = 400
  30 +
  31 + return context
23 32
24 def form_valid(self, form): 33 def form_valid(self, form):
25 self.object = form.save(commit = False) 34 self.object = form.save(commit = False)
26 topic = get_object_or_404(Topic, slug = self.kwargs.get('slug')) 35 topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
27 self.object.topic = topic 36 self.object.topic = topic
28 - messages.success(self.request, _('Link created successfully!'))  
29 -  
30 self.object.save() 37 self.object.save()
  38 + self.link = Link.objects.get(slug = self.object.slug)
  39 + self.formato,self.baixado = get_images(self.link.link_url,self.link.slug)
  40 + self.caminho = 'links/static/images/%s'%(self.link.slug)+'%s'%(self.formato)
  41 +
31 super(CreateLink, self).createNotification(message="created a Link at "+ self.object.topic.name, actor=self.request.user, 42 super(CreateLink, self).createNotification(message="created a Link at "+ self.object.topic.name, actor=self.request.user,
32 - resource_name=self.object.name, resource_link= reverse('course:view_topic', args=[self.object.topic.slug]), 43 + resource_name=self.object.name, resource_link= reverse('course:view_topic', args=[self.object.topic.slug]),
33 users=self.object.topic.subject.students.all()) 44 users=self.object.topic.subject.students.all())
34 - 45 + self.setImage()
35 return self.get_success_url() 46 return self.get_success_url()
  47 + def setImage(self):
  48 + if self.baixado:
  49 + with open(self.caminho,'rb') as f:
  50 + data = f.read()
  51 + nome = '%s'%(self.link.slug)+"%s"%(self.formato)
  52 + self.link.image.save(nome,ContentFile(data))
  53 + else:
  54 + with open('links/static/images/default.jpg','rb') as f:
  55 + data = f.read()
  56 + self.link.image.save('default.jpg',ContentFile(data))
36 def get_context_data(self,**kwargs): 57 def get_context_data(self,**kwargs):
37 context = {} 58 context = {}
38 context['links'] = Link.objects.all() 59 context['links'] = Link.objects.all()
@@ -48,7 +69,7 @@ def deleteLink(request,linkname): @@ -48,7 +69,7 @@ def deleteLink(request,linkname):
48 link.delete() 69 link.delete()
49 template_name = 'links/delete_link.html' 70 template_name = 'links/delete_link.html'
50 messages.success(request,_("Link deleted Successfully!")) 71 messages.success(request,_("Link deleted Successfully!"))
51 - 72 +
52 return redirect('course:manage') 73 return redirect('course:manage')
53 74
54 def render_link(request, id): 75 def render_link(request, id):