Пример #1
0
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
Пример #2
0
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
Пример #3
0
            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)
Пример #4
0
    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
Пример #5
0
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', )
Пример #6
0
    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 = (
Пример #7
0
        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)

Пример #8
0
        # 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)
Пример #9
0
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)
Пример #10
0
class CaravanForm(get_form(_CaravanForm, attachable=False)):
    pass
Пример #11
0
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', )
Пример #12
0
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)
Пример #13
0
# -*- 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)
Пример #14
0
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',)
Пример #15
0
# -*- 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)