示例#1
0
class FormProject(AjaxModelForm):
    class Meta:
        model = Project
        fields = ('id', 'name', 'short_description', 'description', 'contacts',
                  'tags', 'logo')

    _field_labels = {
        'name': _('Name'),
        'short_description': _('Short description'),
        'description': _('Description'),
        'contacts': _('Contacts'),
        'tags': _('Tags'),
        'logo': _('Logo'),
        'partners_logo': _('Logo of your partners'),
    }

    description = forms.CharField(widget=MarkItUpWidget())
    contacts = forms.CharField(required=False, widget=ContactsWidget())
    tags = forms.Field(
        required=False,
        widget=TaggitWidget(autocomplete_url="/project/search_tags/"))
    logo = FileuploadField(required=False, widget=SingleFileUploadWidget)
    partners_logo = FileuploadField(required=False)

    def __init__(self, *a, **kw):
        self.helper = MooHelper(form_id='form_project')
        return super(FormProject, self).__init__(*a, **kw)

    def save(self, *a, **kw):
        proj = super(FormProject, self).save(*a, **kw)
        UploadedFile.bind_files(
            self.cleaned_data.get('partners_logo', '').split('|'), proj)
        return proj

    def clean_logo(self):
        return clean_autocomplete_field(self.cleaned_data['logo'],
                                        UploadedFile)

    def clean(self):
        super(FormProject, self).clean()
        try:
            if not self.cleaned_data['id']:
                self.validation(
                    'name', u'O sistema já possui um projeto com este nome',
                    Project.objects.filter(
                        Q(name__iexact=self.cleaned_data['name'])
                        | Q(slug=slugify(self.cleaned_data['name']))).count())
        except Exception as err:
            logger.error('Validation Error: {}'.format(err))
        finally:
            return self.cleaned_data
示例#2
0
class FormProfile(AjaxModelForm):
    about_me = forms.CharField(required=False, widget=MarkItUpWidget())
    name = forms.CharField(required=False)
    geometry = forms.CharField(required=False, widget=MapButtonWidget)
    #geometry = forms.CharField(required=False, widget=forms.HiddenInput())
    contacts = forms.CharField(required=False, widget=ContactsWidget())
    photo = FileuploadField(required=False)

    class Meta:
        model = User
        fields = ['name', 'about_me', 'id', 'geometry', 'contacts']

    _field_labels = {
        'name': _('Full name'),
        'about_me': _('About me'),
        'photo': _('Photo'),
        'geometry': _('Location'),
        'contacts': _('Contacts'),
    }

    def __init__(self, *a, **kw):
        self.helper = MooHelper(form_id='form-profile')
        self.helper.form_action = reverse('profile_update_public_settings')
        super(FormProfile, self).__init__(*a, **kw)
        inst = kw.get('instance', None)
        if inst and not inst.name:
            self.fields['public_name'].initial = inst.user.name

    def save(self, *args, **kwargs):
        profile = super(FormProfile, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('photo', '').split('|'), profile)
        return profile
示例#3
0
class CommunityForm(AjaxModelForm):
    class Meta:
        model = Community
        fields = ('name', 'population', 'description', 'tags', 'geometry',
                  'files')

    _field_labels = {
        'name': _('Name'),
        'description': _('Description'),
        'population': _('Population'),
        'tags': _('Tags'),
        'files': _(' '),
    }

    description = forms.CharField(widget=MarkItUpWidget())
    geometry = forms.CharField(widget=forms.HiddenInput())
    files = FileuploadField(required=False)
    tags = forms.Field(
        widget=TaggitWidget(autocomplete_url="/community/search_tags/"),
        required=False)

    def __init__(self, *a, **kw):
        self.helper = MooHelper(form_id="community_form")
        return super(CommunityForm, self).__init__(*a, **kw)

    @notify_on_update
    def save(self, *args, **kwargs):
        comm = super(CommunityForm, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), comm)
        return comm
示例#4
0
class FormResource(AjaxModelForm):
    description = forms.CharField(widget=MarkItUpWidget())
    kind = forms.CharField(required=False, widget=AutocompleteWithFavorites(
            ResourceKind, '/resource/search_by_kind/',
            ResourceKind.favorites(number=10), can_add=True))
    contact = forms.CharField(required=False, widget=MarkItUpWidget())
    tags = forms.Field(required=False, widget=TaggitWidget(
            autocomplete_url="/resource/search_tags/"))
    community = AutoCompleteSelectMultipleField('community', help_text='',
        required=False)
    files = FileuploadField(required=False)

    class Meta:
        model = Resource
        fields = ('name', 'description', 'kind', 'contact', 'tags', 'community',
            'id', 'files')

    _field_labels = {
        'name': _('Name'),
        'description': _('Description'),
        'kind': _('Kind'),
        'contact': _('Contact'),
        'tags': _('Tags'),
        'community': _('Community'),
        'files': _('Images'), }

    def __init__(self, *args, **kwargs):
        self.helper = MooHelper(form_id='form_resource')
        r = super(FormResource, self).__init__(*args, **kwargs)
        self.fields['name'].initial = ''
        return r

    @notify_on_update
    def save(self, *args, **kwargs):
        resource = super(FormResource, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), resource)
        return resource

    def clean_kind(self):
        field_data = self.cleaned_data['kind']
        model = ResourceKind
        can_add = self.fields['kind'].widget.can_add
        try:
            if not field_data or field_data == 'None':
                if can_add and self.data.get('kind_autocomplete', ''):
                    new_kind = model(name=self.data['kind_autocomplete'])
                    new_kind.save()
                    return new_kind
                else:
                    return model()
            else:
                return model.objects.get(pk=field_data)
        except:
            raise forms.ValidationError(_('invalid field data'))
示例#5
0
class NeedForm(AjaxModelForm):
    class Meta:
        model = Need
        fields = need_form_fields

    _field_labels = need_form_field_labels

    class Media:
        js = ('lib/jquery.imagetick-original.js', )

    description = forms.CharField(widget=MarkItUpWidget())

    contacts = forms.CharField(required=False, widget=ContactsWidget())

    tags = forms.Field(
        widget=TaggitWidget(autocomplete_url="/need/tag_search"),
        required=False)

    categories = forms.ModelMultipleChoiceField(
        queryset=NeedCategory.objects.all().order_by('name'),
        widget=ImageSwitchMultiple(
            get_image_tick=NeedCategory.get_image,
            get_image_no_tick=NeedCategory.get_image_off))

    target_audiences = forms.Field(widget=Tagsinput(
        TargetAudience, autocomplete_url="/need/target_audience_search"))

    files = FileuploadField(required=False)

    videos = VideosField(required=False)

    project_id = forms.CharField(widget=forms.HiddenInput(), required=False)

    def __init__(self, *a, **kw):
        self.helper = MooHelper(form_id="need_form")
        return super(NeedForm, self).__init__(*a, **kw)

    @notify_on_update
    def save(self, *args, **kwargs):
        need = super(NeedForm, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), need)

        videos = json.loads(self.cleaned_data.get('videos', ''))
        Video.save_videos(videos, need)

        # Add to project if a project id was given.
        project_id = self.cleaned_data.get('project_id', None)
        if project_id:
            project = get_object_or_None(Project, pk=int(project_id))
            if project:
                project.save_related_object(need, self.user)

        return need
示例#6
0
class CommunityForm(AjaxModelForm):
    class Meta:
        model = Community
        fields = ('name', 'short_description', 'population', 'description',
                  'tags', 'contacts', 'geometry', 'files', 'videos',
                  'project_id')

    _field_labels = {
        'name': _('Name'),
        'short_description': _('Short description'),
        'population': _('Population'),
        'description': _('Description'),
        'contacts': _('Contacts'),
        'tags': _('Tags'),
        'files': ' ',
        'videos': _('Videos'),
    }

    description = forms.CharField(widget=MarkItUpWidget())
    geometry = forms.CharField(widget=forms.HiddenInput())
    files = FileuploadField(required=False)
    videos = VideosField(required=False)
    contacts = forms.CharField(required=False, widget=ContactsWidget())
    tags = forms.Field(
        widget=TaggitWidget(autocomplete_url="/community/search_tags/"),
        required=False)
    project_id = forms.CharField(widget=forms.HiddenInput(), required=False)

    def __init__(self, *a, **kw):
        self.helper = MooHelper(form_id="community_form")
        return super(CommunityForm, self).__init__(*a, **kw)

    @notify_on_update
    def save(self, *args, **kwargs):
        comm = super(CommunityForm, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), comm)

        videos = json.loads(self.cleaned_data.get('videos', ''))
        Video.save_videos(videos, comm)

        # Add the community to project if a project id was given.
        project_id = self.cleaned_data.get('project_id', None)
        if project_id:
            project = get_object_or_None(Project, pk=int(project_id))
            if project:
                project.save_related_object(comm, self.user)

        return comm
示例#7
0
class NeedForm(AjaxModelForm):
    class Meta:
        model = Need
        fields = need_form_fields

    _field_labels = need_form_field_labels

    class Media:
        js = ('lib/jquery.imagetick-original.js', )

    community = AutoCompleteSelectMultipleField('community',
                                                help_text='',
                                                required=False)

    description = forms.CharField(widget=MarkItUpWidget())

    categories = forms.ModelMultipleChoiceField(
        queryset=NeedCategory.objects.all().order_by('name'),
        widget=ImageSwitchMultiple(
            get_image_tick=NeedCategory.get_image,
            get_image_no_tick=NeedCategory.get_image_off))

    target_audiences = forms.Field(widget=Tagsinput(
        TargetAudience, autocomplete_url="/need/target_audience_search"))

    tags = forms.Field(
        widget=TaggitWidget(autocomplete_url="/need/tag_search"),
        required=False)

    files = FileuploadField(required=False)

    def __init__(self, *a, **kw):
        self.helper = MooHelper(form_id="need_form")
        return super(NeedForm, self).__init__(*a, **kw)

    @notify_on_update
    def save(self, *args, **kwargs):
        need = super(NeedForm, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), need)
        return need
示例#8
0
class FormOrganization(AjaxModelForm):
    class Meta:
        model = Organization
        fields = ('id', 'name', 'short_description', 'description', 'contacts',
                  'tags', 'target_audiences', 'categories', 'logo',
                  'logo_category', 'logo_choice', 'project_id', 'videos')

    _field_labels = {
        'name': _('Name'),
        'short_description': _('Short description'),
        'description': _('Description'),
        'contacts': _('Contacts'),
        'tags': _('Tags'),
        'target_audiences': _('Target audiences'),
        'categories': _('Categories'),
        'files': _('Images'),
        'logo': _('Logo'),
        'videos': _('Videos'),
    }

    description = forms.CharField(required=False, widget=MarkItUpWidget())
    contacts = forms.CharField(required=False, widget=ContactsWidget())
    tags = forms.Field(
        widget=TaggitWidget(autocomplete_url="/organization/search_tags/"),
        required=False)
    target_audiences = forms.Field(
        required=False,
        widget=Tagsinput(TargetAudience,
                         autocomplete_url="/need/target_audience_search"))
    categories = forms.MultipleChoiceField(
        required=False,
        choices=CATEGORIES,
        widget=forms.CheckboxSelectMultiple(
            attrs={'class': 'org-widget-categories'}))
    files = FileuploadField(required=False)
    videos = VideosField(required=False)
    logo = LogoField(required=False)
    logo_choice = forms.CharField(required=False, widget=forms.HiddenInput())
    logo_category = forms.CharField(required=False, widget=forms.HiddenInput())
    project_id = forms.CharField(widget=forms.HiddenInput(), required=False)

    def __init__(self, *args, **kwargs):
        self.helper = MooHelper(form_id='form_organization')
        return super(FormOrganization, self).__init__(*args, **kwargs)

    def clean(self):
        super(FormOrganization, self).clean()
        try:
            self.validation(
                'name', u'O sistema já possui uma organização com este nome',
                Organization.objects.filter(
                    (Q(name__iexact=self.cleaned_data['name'])
                     | Q(slug=slugify(self.cleaned_data['name'])))
                    & ~Q(pk=self.cleaned_data['id'])).count())
        except Exception as err:
            logger.error('Validation Error: {}'.format(err))
        finally:
            return self.cleaned_data

    @notify_on_update
    def save(self, *args, **kwargs):
        org = super(FormOrganization, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), org)

        videos = json.loads(self.cleaned_data.get('videos', ''))
        Video.save_videos(videos, org)

        # Add to project if a project id was given.
        project_id = self.cleaned_data.get('project_id', None)
        if project_id:
            project = get_object_or_None(Project, pk=int(project_id))
            if project:
                project.save_related_object(org, self.user)

        return org

    def clean_logo(self):
        return clean_autocomplete_field(self.cleaned_data['logo'],
                                        UploadedFile)

    def clean_logo_category(self):
        return clean_autocomplete_field(self.cleaned_data['logo_category'],
                                        OrganizationCategory)
示例#9
0
class FormOrganization(AjaxModelForm):
    description = forms.CharField(required=False, widget=MarkItUpWidget())
    community = AutoCompleteSelectMultipleField('community', help_text='',
        required=False)
    contact = forms.CharField(required=False, widget=MarkItUpWidget())
    target_audiences = forms.Field(required=False,
        widget=Tagsinput(
            TargetAudience,
            autocomplete_url="/need/target_audience_search"))
    categories = forms.MultipleChoiceField(required=False, choices=CATEGORIES,
        widget=forms.CheckboxSelectMultiple(
            attrs={'class': 'org-widget-categories'}))
    files = FileuploadField(required=False)
    logo = LogoField(required=False)
    logo_choice = forms.CharField(required=False, widget=forms.HiddenInput())
    logo_category = forms.CharField(required=False, widget=forms.HiddenInput())
    tags = forms.Field(
        widget=TaggitWidget(autocomplete_url="/organization/search_tags/"),
        required=False)

    class Meta:
        model = Organization
        fields = ['name', 'description', 'community', 'link', 'contact',
                  'target_audiences', 'categories', 'tags', 'id', 'logo',
                  'logo_category', 'logo_choice']

    _field_labels = {
        'name': _('Name'),
        'description': _('Description'),
        'community': _('Community'),
        'contact': _('Contact'),
        'tags': _('Tags'),
        'target_audiences': _('Target Audiences'),
        'categories': _('Categories'),
        'files': _('Images'),
        'logo': _('Logo')
    }

    def __init__(self, *args, **kwargs):
        self.helper = MooHelper(form_id='form_organization')
        return super(FormOrganization, self).__init__(*args, **kwargs)

    def clean(self):
        super(FormOrganization, self).clean()
        try:
            self.validation('name',
                    u'O sistema já possui uma organização com este nome',
                    Organization.objects.filter((
                        Q(name__iexact=self.cleaned_data['name']) |
                        Q(slug=slugify(self.cleaned_data['name']))) &
                        ~Q(pk=self.cleaned_data['id'])
                    ).count())
        except Exception as err:
            logger.error('Validation Error: {}'.format(err))
        finally:
            return self.cleaned_data

    @notify_on_update
    def save(self, *args, **kwargs):
        org = super(FormOrganization, self).save(*args, **kwargs)
        UploadedFile.bind_files(
            self.cleaned_data.get('files', '').split('|'), org)
        return org

    def clean_logo(self):
        return clean_autocomplete_field(self.cleaned_data['logo'],
                                        UploadedFile)

    def clean_logo_category(self):
        return clean_autocomplete_field(self.cleaned_data['logo_category'],
                                        OrganizationCategory)