From 9c4ea158cc4b36e567442b9e20108d241c16feb1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 13 Apr 2017 16:32:43 -0300 Subject: [PATCH] Modified news forms to include crop fields --- news/forms.py | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/news/forms.py b/news/forms.py index 932b8a8..b0a0b39 100644 --- a/news/forms.py +++ b/news/forms.py @@ -3,10 +3,50 @@ from django.utils.translation import ugettext_lazy as _ from .models import News from resubmit.widgets import ResubmitFileWidget - +from os.path import join +from PIL import Image +import os +from amadeus import settings class NewsForm(forms.ModelForm): MAX_UPLOAD_SIZE = 5*1024*1024 + + #Cropping image + x = forms.FloatField(widget=forms.HiddenInput(),required=False) + y = forms.FloatField(widget=forms.HiddenInput(),required=False) + width = forms.FloatField(widget=forms.HiddenInput(),required=False) + height = forms.FloatField(widget=forms.HiddenInput(),required=False) + + def save(self, commit=True): + super(NewsForm, self).save(commit=False) + self.deletepath = "" + + x = self.cleaned_data.get('x') + y = self.cleaned_data.get('y') + w = self.cleaned_data.get('width') + h = self.cleaned_data.get('height') + + if self.instance.image : + image = Image.open(self.instance.image) + if not x is None: + cropped_image = image.crop((x, y, w+x, h+y)) + resized_image = cropped_image.resize((700, 200), Image.ANTIALIAS) + + folder_path = join(settings.MEDIA_ROOT, 'news') + #check if the folder already exists + if not os.path.isdir(folder_path): + os.makedirs(folder_path) + + if ("news" not in self.instance.image.path): + self.deletepath = self.instance.image.path + + resized_image.save(self.instance.image.path) + + self.instance.save() + if (self.deletepath): + os.remove(self.deletepath) + return self.instance + class Meta: model = News fields = ['title','image','content'] -- libgit2 0.21.2