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
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
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
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'))
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
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
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
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)
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)