class CosinnusGroupForm(get_form(_CosinnusGroupForm, attachable=False)): def dispatch_init_group(self, name, group): if name == 'media_tag': return group return InvalidArgument def dispatch_init_user(self, name, user): if name == 'media_tag': return user return InvalidArgument
class UserProfileForm( get_form(_UserProfileForm, attachable=False, extra_forms={'user': UserChangeForm})): def dispatch_init_group(self, name, group): if name == 'media_tag': return group return InvalidArgument def dispatch_init_user(self, name, user): if name == 'media_tag': return user return InvalidArgument
msg = _('The given URL does not seem to be valid.') validate = URLValidator(message=msg) validate(url) return url def clean(self): """ Insert the filename as title if no title is given """ fileupload = self.cleaned_data.get('file', None) url = self.cleaned_data.get('url', None) title = self.cleaned_data.get('title', None) is_container = self.cleaned_data.get('is_container', None) # url or file is required if not url and not fileupload and not is_container: raise ValidationError(_('Must supply either a URL or File')) if not title: if fileupload: self.cleaned_data.update({'title': fileupload._name},) self.errors.pop('title', None) if url: self.cleaned_data.update({'title': url},) self.errors.pop('title', None) return super(_FileForm, self).clean() FileForm = get_form(_FileForm, attachable=False) class FileListForm(forms.Form): # required=False to handle the validation in the view select = forms.MultipleChoiceField(required=False)
def __init__(self, *args, **kwargs): super(_PollForm, self).__init__(*args, **kwargs) # if a Poll has been voted on, no more options can be edited. remove their fields to avoid data injection has_active_votes = self.instance.options.filter( votes__isnull=False).count() > 0 if has_active_votes or self.instance and self.instance.state != Poll.STATE_VOTING_OPEN: for remove_field in self.LOCKED_FIELDS_WHILE_ACTIVE_VOTES: del self.fields[remove_field] def clean(self, *args, **kwargs): cleaned_data = super(_PollForm, self).clean(*args, **kwargs) return cleaned_data PollForm = get_form(_PollForm) class OptionForm(forms.ModelForm): class Meta(object): model = Option fields = ('description', ) # 'image',) # Images are disabled for now def clean_description(self): description = self.cleaned_data.get('description', '') description = description.strip() if not description: raise forms.ValidationError( _('You must write a description for this poll option!')) return description
class _TodoEntryAddForm(TodoEntryForm): new_list = forms.CharField(label='New list name', required=False) class Meta: model = TodoEntry fields = ('title', 'due_date', 'new_list', 'todolist', 'assigned_to', 'priority', 'note', 'tags') widgets = { 'due_date': DateTimeL10nPicker(), 'completed_date': DateTimeL10nPicker(), } TodoEntryAddForm = get_form(_TodoEntryAddForm, attachable=False) class _TodoEntryUpdateForm(_TodoEntryAddForm): class Meta(_TodoEntryAddForm.Meta): fields = ('title', 'due_date', 'new_list', 'todolist', 'assigned_to', 'completed_by', 'completed_date', 'priority', 'note', 'tags') TodoEntryUpdateForm = get_form(_TodoEntryUpdateForm, attachable=False) class TodoEntryAssignForm(TodoEntryForm): class Meta: model = TodoEntry fields = ('assigned_to', )
class Meta(object): model = Event fields = ('title', 'suggestion', 'from_date', 'to_date', 'note', 'street', 'zipcode', 'city', 'public', 'image', 'url') def __init__(self, *args, **kwargs): super(_EventForm, self).__init__(*args, **kwargs) instance = kwargs.get('instance') if instance: self.fields['suggestion'].queryset = Suggestion.objects.filter( event=instance) else: del self.fields['suggestion'] EventForm = get_form(_EventForm) class _DoodleForm(_EventForm): from_date = forms.SplitDateTimeField(required=False) to_date = forms.SplitDateTimeField(required=False) DoodleForm = get_form(_DoodleForm) class SuggestionForm(forms.ModelForm): class Meta(object): model = Suggestion fields = (
widgets = { 'due_date': DateTimeL10nPicker(), 'completed_date': DateTimeL10nPicker(), } def clean(self): super(_TodoEntryAddForm, self).clean() # hack to circumvent django still throwing validation errors in my face on a blank select # even though the field is required=False if self.cleaned_data.get('assigned_to', None) is None: self.instance.assigned_to = None del self._errors['assigned_to'] return self.cleaned_data TodoEntryAddForm = get_form(_TodoEntryAddForm) class _TodoEntryUpdateForm(_TodoEntryAddForm): class Meta(_TodoEntryAddForm.Meta): fields = ('title', 'note', 'due_date', 'new_list', 'todolist', 'assigned_to', 'completed_by', 'completed_date', 'priority') widgets = { 'due_date': DateTimeL10nPicker(), 'completed_date': DateTimeL10nPicker(), } TodoEntryUpdateForm = get_form(_TodoEntryUpdateForm)
# if no end time was set, always set 23:59 for "end of day" if date and not self.data.get('to_date_1', None): date = date.replace(hour=23, minute=59) return date def __init__(self, *args, **kwargs): super(_EventForm, self).__init__(*args, **kwargs) instance = kwargs.get('instance') if instance: self.fields['suggestion'].queryset = Suggestion.objects.filter( event=instance) else: del self.fields['suggestion'] EventForm = get_form(_EventForm) class SuggestionForm(forms.ModelForm): class Meta: model = Suggestion fields = ('from_date', 'to_date',) class VoteForm(forms.Form): suggestion = forms.IntegerField(required=True, widget=HiddenInput) choice = forms.ChoiceField(choices=Vote.VOTE_CHOICES, required=True) def get_label(self): pk = self.initial.get('suggestion', None)
from __future__ import unicode_literals from django import forms from cosinnus.forms.group import GroupKwargModelFormMixin from cosinnus.forms.tagged import get_form from cosinnus.forms.user import UserKwargModelFormMixin from cosinnus_etherpad.models import Etherpad class _EtherpadForm(GroupKwargModelFormMixin, UserKwargModelFormMixin, forms.ModelForm): class Meta: model = Etherpad fields = ('title', 'description', 'tags', 'media_tag') def __init__(self, *args, **kwargs): super(_EtherpadForm, self).__init__(*args, **kwargs) if self.instance.pk: self.fields['title'].widget.attrs['readonly'] = True def clean_title(self): if self.instance.pk: return self.instance.title else: return self.cleaned_data['title'] EtherpadForm = get_form(_EtherpadForm, attachable=False)
class CaravanForm(get_form(_CaravanForm, attachable=False)): pass
from cosinnus.forms.group import GroupKwargModelFormMixin from cosinnus.forms.tagged import get_form from cosinnus.forms.user import UserKwargModelFormMixin from cosinnus_note.models import Comment, Note class _NoteForm(GroupKwargModelFormMixin, UserKwargModelFormMixin, FormAttachable): class Meta: model = Note fields = ( 'title', 'text', 'tags', 'video', 'image', ) #: A django-multiform :class:`MultiModelForm`. Includs support for `group` and #: `attached_objects_querysets` arguments being passed to the underlying main #: form (:class:`_NoteForm`) NoteForm = get_form(_NoteForm) class CommentForm(forms.ModelForm): class Meta: model = Comment fields = ('text', )
from cosinnus.forms.tagged import get_form, BaseTaggableObjectForm from cosinnus.forms.user import UserKwargModelFormMixin from cosinnus.forms.select2 import TagSelect2Field from cosinnus_etherpad.models import Etherpad from cosinnus.forms.attached_object import FormAttachableMixin class _EtherpadForm(GroupKwargModelFormMixin, UserKwargModelFormMixin, FormAttachableMixin, BaseTaggableObjectForm): class Meta(object): model = Etherpad fields = ('title', 'description', 'media_tag') # TODO: Uncomment this to re-enable protecting the title of a pad #def __init__(self, *args, **kwargs): #super(_EtherpadForm, self).__init__(*args, **kwargs) #if self.instance.pk: # self.fields['title'].widget.attrs['readonly'] = True # TODO: Uncomment this to re-enable protecting the title of a pad # def clean_title(self): # if self.instance.pk: # return self.instance.title # else: # return self.cleaned_data['title'] EtherpadForm = get_form(_EtherpadForm)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from builtins import object from cosinnus.forms.tagged import BaseTaggableObjectForm from cosinnus.forms.user import UserKwargModelFormMixin from cosinnus.forms.tagged import get_form from cosinnus_stream.models import Stream class _StreamForm(UserKwargModelFormMixin, BaseTaggableObjectForm): class Meta(object): model = Stream fields = ('title', 'group', 'models',) def clean_models(self): models = self.data.getlist('models') return ','.join(models) StreamForm = get_form(_StreamForm)
class _OfferForm(GroupKwargModelFormMixin, UserKwargModelFormMixin, FormAttachableMixin, BaseTaggableObjectForm): class Meta(object): model = Offer fields = ('type', 'title', 'description', 'phone_number', 'is_active', 'categories') def clean(self, *args, **kwargs): cleaned_data = super(_OfferForm, self).clean(*args, **kwargs) return cleaned_data def get_categories_grouped(self): return get_categories_grouped(OfferCategory.objects.all()) OfferForm = get_form(_OfferForm) class OfferNoFieldForm(forms.ModelForm): class Meta(object): model = Offer fields = () class CommentForm(forms.ModelForm): class Meta(object): model = Comment fields = ('text',)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from builtins import object from django import forms from django.utils.translation import ugettext_lazy as _ from cosinnus.conf import settings from cosinnus.forms.group import AsssignPortalMixin from cosinnus.forms.tagged import get_form from cosinnus.models.idea import CosinnusIdea class _CosinnusIdeaForm(AsssignPortalMixin, forms.ModelForm): class Meta(object): model = CosinnusIdea fields = [ 'title', 'description', 'image', 'public', ] CosinnusIdeaForm = get_form(_CosinnusIdeaForm, attachable=False)