forms.py 832 Bytes
import base64
import StringIO

from django import forms
from django.utils.translation import ugettext_lazy as _

from PIL import Image

from .models import Badge


class BadgeForm(forms.ModelForm):
    image = forms.ImageField(label=_(u'Image'))

    class Meta:
        model = Badge
        fields = (
            'title', 'description', 'image', 'user_attr', 'comparison',
            'value', 'awardees'
        )

    def save(self, commit=True):

        instance = super(BadgeForm, self).save(commit=False)

        img = Image.open(self.cleaned_data['image'])
        img = img.resize((50, 50), Image.ANTIALIAS)
        f = StringIO.StringIO()
        img.save(f, 'png')
        instance.image_base64 = f.getvalue().encode('base64')
        f.close()

        if commit:
            instance.save()

        return instance