X-Git-Url: https://git.mdrn.pl/prawokultury.git/blobdiff_plain/44090c986d9a16f6913047c25319c446bb9308ad..891a1e056e6066b28e000df16d69b21946338a57:/migdal/forms.py diff --git a/migdal/forms.py b/migdal/forms.py new file mode 100755 index 0000000..5a9d5d0 --- /dev/null +++ b/migdal/forms.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +from django import forms +from django.utils.translation import ugettext_lazy as _, get_language +from migdal.models import Entry +from migdal.settings import TYPE_SUBMIT +from slughifi import slughifi +from django.core.mail import mail_managers +from django import template + + +def get_submit_form(*args, **kwargs): + lang = get_language() + + class SubmitForm(forms.ModelForm): + class Meta: + model = Entry + fields = ['title_%s' % lang, 'lead_%s' % lang, + 'author', 'author_email', 'categories'] + required = ['title_%s' % lang] + + def __init__(self, *args, **kwargs): + super(SubmitForm, self).__init__(*args, **kwargs) + self.fields['title_%s' % lang].required = True + self.fields['lead_%s' % lang].required = True + + def clean(self): + data = super(SubmitForm, self).clean() + data['type'] = TYPE_SUBMIT + orig_slug = slughifi(data.get('title_%s' % lang, '')) + slug = orig_slug + number = 2 + while Entry.objects.filter(**{'slug_%s' % lang: slug}).exists(): + slug = "%s-%s" % (orig_slug, number) + number += 1 + data['slug_%s' % lang] = slug + self.cleaned_data = data + return data + + def save(self, *args, **kwargs): + entry = super(SubmitForm, self).save(commit=False) + # Something's wrong with markup fields, they choke on None here. + for f in 'lead_en', 'lead_pl', 'body_en', 'body_pl': + if getattr(entry, f) is None: + setattr(entry, f, '') + for f in 'slug_%s' % lang, 'type': + setattr(entry, f, self.cleaned_data[f]) + entry.save() + entry = super(SubmitForm, self).save(*args, **kwargs) + mail_managers(u"Nowy wpis", + template.loader.get_template( + 'migdal/mail/manager_new_entry.txt').render( + template.Context({'object': entry}))) + + return SubmitForm(*args, **kwargs) \ No newline at end of file