class UploadForm(forms.Form): Documents = MultiFileField(min_num=1, max_num=3) # If you need to files media files, you can use this: Documents = MultiFileField( min_num=1, max_num=1000, # max_file_size=1024*1024*5, )
def test_field_not_required(self): """ Field should be valid if empty and not required """ field = MultiFileField(min_num=2, max_num=4, required=False) try: field.clean('') field.clean(None) field.clean({}) field.clean(tuple()) except forms.ValidationError: self.fail('Field should not be required')
class MeetingAdditionForm(forms.ModelForm): def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.form_class = 'form-horizontal' self.helper.form_tag = False self.helper.include_media = False self.helper.layout = Layout( TabHolder( Tab('Basic Info', 'meeting_type', 'location', Field('datetime', css_class='dtp'), 'duration'), Tab( 'Attendance', 'attendance', ), Tab( 'Agenda', 'agenda', ), Tab('Open Minutes', 'minutes', 'attachments'), Tab('Closed Minutes', 'minutes_private', 'attachments_private'), ), FormActions(Submit('save', 'Save Changes'), )) super(MeetingAdditionForm, self).__init__(*args, **kwargs) duration = NaturalDurationField(human_values=True, required=True) attendance = AutoCompleteSelectMultipleField('Users', required=False) datetime = SplitDateTimeField(required=True, initial=datetime.datetime.today()) location = forms.ModelChoiceField( queryset=Location.objects.filter(available_for_meetings=True), label="Location", required=False) attachments = MultiFileField( max_file_size=1024 * 1024 * 20, # 20 MB required=False) attachments_private = MultiFileField( max_file_size=1024 * 1024 * 20, # 20 MB label="Closed Attachments", required=False) minutes = forms.CharField(widget=PagedownWidget(), required=False) agenda = forms.CharField(widget=PagedownWidget(), required=False) minutes_private = forms.CharField(widget=PagedownWidget(), label="Closed Minutes", required=False) class Meta: model = Meeting widgets = { 'datetime': forms.widgets.DateInput(attrs={"class": "datepick"}), } fields = ('meeting_type', 'location', 'datetime', 'attendance', 'duration', 'agenda', 'minutes', 'minutes_private')
class PostFormEdit(forms.ModelForm): postcategory = forms.MultipleChoiceField( choices=CATEGORY_CHOICES, required=True, widget=forms.CheckboxSelectMultiple ) image_file = forms.FileField(required=False) postimage = MultiFileField(min_num=1, required=False) postimagesmall = MultiFileField(min_num=1, required=False) class Meta: model = Post fields = ('title', 'postcategory', 'status', 'published_date', 'image_file', 'content', 'postimage', 'postimagesmall')
class EMailFormMG(forms.Form): """Docstring""" def __init__(self, *args, **kwargs): user = kwargs.pop('user', None) super(EMailFormMG, self).__init__(*args, **kwargs) if not user.is_superuser: self.fields['group'].queryset = user.groups.all() group = forms.ModelChoiceField(queryset=Group.objects.all(), label=_("Gruppe")) name = forms.CharField(label=_("Von (Name)"), max_length=50) sender = forms.EmailField(label=_("Von (Email)")) tag = forms.CharField(max_length=100, label=_("Tag")) subject = forms.CharField(max_length=100, label=_("Betreff")) img_url = forms.URLField(required=False, label=_("Header")) remove_points = forms.IntegerField(label=_("Punktabzug")) open_points = forms.IntegerField(label=_("Öffnungspunkte")) click_points = forms.IntegerField(label=_("Klickpunkte")) message = forms.CharField(widget=TinyMCE()) template = forms.ModelChoiceField(queryset=MailTemplate.objects.all(), label=_("Template")) attachement = MultiFileField(min_num=1, max_num=6, max_file_size=1024**3 * 5, required=False, label="Anhänge")
class OnlineAttachmentForm(forms.Form): sender_name = forms.CharField( label=_("Your Name"), widget=forms.TextInput(attrs={ "class": "form-control", "placeholder": _("Your Name") }), required=True) sender_email = forms.EmailField( label=_("Contact Email"), required=True, max_length=230, widget=forms.TextInput(attrs={ "class": "form-control", "placeholder": _("Email address") })) text = forms.CharField( label=_("Remarks"), widget=forms.Textarea( attrs={ "placeholder": _("Information, remarks about the documents"), "class": "form-control" }), required=False) documents = MultiFileField( label=_("Requested documents"), help_text=_("You can add multiple documents at the same time."), min_num=1)
class CompanyEditForm(forms.Form): name = forms.CharField(max_length=255,required=True) logo = forms.ImageField(required=False) cover_photo = forms.ImageField(required=False) slogan = forms.CharField(max_length=255,required=True) # is_active = forms.BooleanField(required=False) email = forms.EmailField() phones = forms.CharField(max_length=255,required=True) voen = forms.CharField(max_length=255,required=True) bank_account = forms.CharField(max_length=255,required=True) attachments = MultiFileField(min_num=1, max_num=7, max_file_size=1024*1024*5,required=False) region = forms.ChoiceField(choices=[], required=True) address = forms.CharField(max_length=255,required=True) businnes_type = forms.MultipleChoiceField(choices=[], required=True) businnes_types_parent = forms.MultipleChoiceField(choices=[],required=False) position = GeopositionField() practices = forms.CharField(widget=forms.Textarea,required=False) def __init__(self,*args, **kwargs): super(CompanyEditForm, self).__init__(*args, **kwargs) self.user = kwargs.pop('user', None) print(self.user) regions_obj = Region.objects.filter() businnes_types_obj = Businnes.objects.filter(active=True).filter(parent=None) businnes_types_parent = Businnes.objects.exclude(parent=None).filter(active=True) self.fields['businnes_types_parent'].choices = [[x.id, x.name] for x in businnes_types_parent] self.fields['region'].choices = [[x.id, x.name] for x in regions_obj] self.fields['businnes_type'].choices = [[x.id, x.name] for x in businnes_types_obj]
class CustomerForm(forms.ModelForm): c_id = forms.CharField(label="", widget=forms.TextInput(attrs={'placeholder': 'Customer ID', 'class':'form-control mb-4','title':'Enter Only Numeric values','pattern':'[0-9]+'})) c_name = forms.CharField(label="", widget=forms.TextInput(attrs={'placeholder': 'Customer Name', 'class':'form-control mb-4','pattern':'[A-Za-z ]+','title':'Enter Characters Only'})) #image = forms.FileField(label="") class Meta: model = CustomerDetails fields = ('c_name', 'c_id') #'image', ) files = MultiFileField(min_num=1, max_num=5, max_file_size=1024 * 1024 * 5) def save(self, commit=True): instance = super(CustomerForm, self).save(commit) for each in self.cleaned_data['files']: Attachment.objects.create(file=each, customerdetails=instance) return instance def clean(self): cleaned_data = self.cleaned_data uid = cleaned_data.get('c_id') matching_id = CustomerDetails.objects.filter(c_id = uid) if self.instance: matching_id = matching_id.exclude(pk=self.instance.pk) if matching_id.exists(): msg = u"User ID: %s already exist." % uid raise forms.ValidationError(msg) else: return self.cleaned_data
class ApplyForm(forms.ModelForm): attachments = MultiFileField( label="Обоснование проекта, резюме, смета, рекомендации", min_num=1, max_num=5) email = forms.EmailField(required=True) def __init__(self, *args, **kwargs): super(ApplyForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.form_method = 'POST' self.helper.layout = Layout( Fieldset( "Вы можете отправить заявку на адрес <a scr='mailto:[email protected]'>[email protected]</a> или воспользовавшись формой:", 'second_name', 'first_name', 'email', HTML(""" <p>Пожалуйста, используйте текстовые форматы (rtf, doc/docx, odt). Вы можете отправить файлы по отдельности или объединить их в несколько документов (файл с Вашим проектом желательно оставить анонимным).</p> """), Field('attachments', css_class='file', type='file', data_show_upload="false"), HTML("{% csrf_token %}"), FormActions( Submit('purchase', 'ОТПРАВИТЬ', css_class='btn-primary btn-block')))) class Meta: model = Apply fields = [ "first_name", "second_name", "email", "attachments", ]
class AttachmentForm(forms.Form): MINIMUM_ATTACHEMENTS = app_settings.MINIMUM_ATTACHEMENTS_PER_COMMENT MAXIMUM_ATTACHEMENTS = app_settings.MAXIMUM_ATTACHEMENTS_PER_COMMENT MAXIMUM_FILE_SIZE = app_settings.MAXIMUM_FILE_SIZE_PER_ATTACHEMENTS if MINIMUM_ATTACHEMENTS != 0: if MINIMUM_ATTACHEMENTS != MAXIMUM_ATTACHEMENTS: ATTACHMENTS_HELP_TEXT = _('Between %s and %s files') % ( MINIMUM_ATTACHEMENTS, MAXIMUM_ATTACHEMENTS) else: ATTACHMENTS_HELP_TEXT = _( 'Maximum %s files') % MAXIMUM_ATTACHEMENTS else: ATTACHMENTS_HELP_TEXT = _('Maximum %s files') % MAXIMUM_ATTACHEMENTS ATTACHMENTS_HELP_TEXT += " " + _('(under <%s each)') % filesizeformat( MAXIMUM_FILE_SIZE) attachments = MultiFileField( min_num=MINIMUM_ATTACHEMENTS, max_num=MAXIMUM_ATTACHEMENTS, max_file_size=app_settings.MAXIMUM_FILE_SIZE_PER_ATTACHEMENTS, help_text=ATTACHMENTS_HELP_TEXT) def __init__(self, *args, **kwargs): super(AttachmentForm, self).__init__(*args, **kwargs) self.fields['attachments'].required = self.MINIMUM_ATTACHEMENTS > 0
class AdverForm(forms.ModelForm): # def __init__(self, *args, **kwargs): # # user = kwargs.pop('user') # super(AdverForm, self).__init__(*args, **kwargs) # print(user.userprofiletable_set.get().adress_state) # # state = user.userprofiletable_set.get().adress_state # city = user.userprofiletable_set.get().adress_city # # # if state and city: # self.fields['state'].initial = state # self.fields['city'].initial = city class Meta: model = Goods fields = ('category', 'subcategory', 'types', 'name', 'description', 'price', 'state', 'city') # exclude = ['user','is_active','creation_date','is_sell'] files = MultiFileField(max_num=10, max_file_size=4024 * 4024 * 5, required=False, label='Фото') def save(self, commit=True): instance = super(AdverForm, self).save(commit) for each in self.cleaned_data['files']: GoodsImageGallery.objects.create(file=each, good=instance, user=instance.user) return instance
class MultiUploadForm(forms.ModelForm): file = MultiFileField(min_num=1, max_num=4, max_file_size=1024 * 1024 * 5) class Meta: exclude = ('story',) model = Images
class VotaInteligenteAnswerForm(ModelForm): class Meta: model = VotaInteligenteAnswer labels = { 'content': _(u'Réponse'), } widgets = { 'content': forms.Textarea( attrs={'class': 'form-control center-block', 'cols': '25', 'rows':'8', 'style': 'width:100%;'}), 'message': forms.HiddenInput(), 'person': forms.HiddenInput() } files = MultiFileField(min_num=0, max_num=3, required=False, max_file_size=1024*1024*5, label= 'Fichiers joints:') def save(self, commit=True): instance = super(VotaInteligenteAnswerForm, self).save(commit) message = self.cleaned_data['message'] for each in self.cleaned_data['files']: attachment = Attachment.objects.create() attachment.modelName = 'answer' attachment.file = each attachment.messageId = message attachment.author_id = instance.person_id attachment.save() return instance
class ApplyForm(forms.ModelForm): attachments = MultiFileField(label = "Обоснование проекта, резюме, смета, рекомендации (максмум - 5 файлов)", min_num=1, max_num=5) email = forms.EmailField(required=True) def __init__(self, *args, **kwargs): super(ApplyForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.form_method = 'POST' self.helper.layout = Layout(Fieldset( "Отправте заявку, воспользовавшись формой:", 'second_name', 'first_name', 'email', HTML(""" <p>Пожалуйста, используйте текстовой формат для файла проекта (rtf, doc, docx, odt)</p> """), Field('attachments', css_class='file', type='file', data_show_upload="false", data_show_preview="false", data_msg_placeholder="Выбирите файлы для загрузки"), HTML("{% csrf_token %}"), FormActions(Submit('purchase', 'ОТПРАВИТЬ', css_class='btn-primary btn-block')) )) class Meta: model = Apply fields = [ "first_name", "second_name", "email", "attachments", ]
class UploadTestForm(forms.Form): """ Representing the test Django form. """ attachments = MultiFileField( min_num=1, max_num=3, max_file_size=1024*1024*5 )
class UploadFileForm(forms.Form): """Form for uploading files""" upfile = MultiFileField( min_num=1, max_num=24, max_file_size=1014*1024*24, label='Activity file', error_messages={'required': ERROR_NO_UPLOAD_FILE_SELECTED} )
class UploadForm(forms.Form): # attachments = MultiFileField(min_num=1, max_num=500, max_file_size=1024*1024*5) attachments = MultiFileField(min_num=1, max_num=500) class Meta: model = Attachment fields = ( 'photobatch', )
class VariableInputForm(forms.Form): """ The VariableInputForm class is a form for users re-submission. A number of fields are required from user to select or upload. **selected_peaks** - selected peaks from the datatables (peaks from database chosen for analysis). **new_peak_File** - (optional) user's peak file upload field where it can be 1 or more files. **cut_off** - a threshold cut off to determine proximal and distal. **heatmap** - an option to generate heatmap axis ordering. ( Independent: proximal and distal each separately show clustering. Follow prioximal: distal will not cluster and distal heatmap axis ordering will follow proximal heatmap axis ordering. Follow distal: proximal will not cluster and proximal heatmap axis ordering will follow distal heatmap axis ordering. ) """ selected_peaks = forms.CharField(widget=forms.Textarea( attrs={ 'readonly': 'readonly', 'rows': 6, 'cols': 22, 'style': 'resize:none;' })) # uploaded peak files from user USERPEAK_CHOICES = () uploaded_peak_File = forms.MultipleChoiceField(choices=USERPEAK_CHOICES, required=False) new_peak_File = MultiFileField( min_num=0, required=False, label='Upload custom peak file', help_text='File must be in the form of <br /> chrNum\tstart\tend') path = os.path.join(settings.STATIC_ROOT, 'csv', 'cutoffs.csv') with open(path, 'rb') as csvfile: reader = csv.reader(csvfile) cutoff_list = map(tuple, reader) cutoff_tuple = tuple(cutoff_list) CUTOFF_CHOICES = cutoff_tuple cut_off = forms.ChoiceField( choices=CUTOFF_CHOICES, required=True, help_text='Threshold to separate proximal and distal elements') PLOT_CHOICES = (('Independent', 'Independent'), ('Follow proximal', 'Follow proximal'), ('Follow distal', 'Follow distal')) heatmap = forms.ChoiceField( choices=PLOT_CHOICES, required=True, label='Heatmaps clustering', help_text= 'Option to cluster the proximal and distal heatmaps independently or based on one of the heatmap' ) pvalue = forms.FloatField(label="P-Value cut off", max_value=1, min_value=0)
class PostForm(forms.ModelForm): class Meta: model = Post fields = ('title', 'text', 'video') files = MultiFileField(min_num=0, max_num=10, max_file_size=1024 * 1024 * 5, required=False)
class SocialPostForm(forms.ModelForm): text = forms.CharField(widget=forms.Textarea, label='') attachments = MultiFileField(required=False, max_num=10, max_file_size=1024 * 1024 * 25, label='') class Meta: model = SocialPost fields = ['text']
class UploadFormMulti(forms.Form): # NOTE Max size right now: 10MB maxsize = 10 * 1024 * 1024 attachments = MultiFileField(min_num=1, max_num=100, max_file_size=maxsize) def save(self, commit=True): instance = super(ContactForm, self).save(commit) for each in self.cleaned_data['files']: Attachment.objects.create(file=each, data=instance) return instance
class UploadPhotosAdminForm(forms.ModelForm): album = forms.ModelChoiceField( label=_("Album"), required=True, queryset=Album.objects.all()) images = MultiFileField(label=_('Images'), max_num=100, min_num=1) class Meta: model = Photo exclude = ['order', 'file']
class FileUploadForm(forms.Form): file = MultiFileField(max_file_size=1000000 * getattr( settings, 'CRADMIN_TEMPORARYFILEUPLOADSTORE_MAX_FILE_SIZE_MB', 1000)) collectionid = forms.IntegerField(required=False) minutes_to_live = forms.IntegerField(min_value=1, required=False) singlemode = forms.BooleanField(required=False) accept = forms.CharField(required=False) max_filename_length = forms.IntegerField(min_value=0, required=False) max_filesize_bytes = forms.IntegerField(min_value=0, required=False) unique_filenames = forms.BooleanField(required=False)
class MultiUploadForm2(forms.ModelForm): file = MultiFileField(min_num=1, max_num=4, max_file_size=1024 * 1024 * 5) class Meta: exclude = ('story', 'description') model = Image labels = { 'file': '*Images', }
class TicketSubmissionForm(forms.Form): subject = forms.CharField(max_length=100) description = forms.CharField( widget=forms.Textarea, label="Please describe your problem or request in detail.") attachments = MultiFileField(max_file_size=1024 * 1024 * 20, required=False) # 20 MB limit class Meta: layout = [("Field", "subject"), ("Field", "description"), ("Field", "attachments")]
class GridForm(forms.Form): param_input_file = forms.FileField(label="Input file (.in)", help_text="Please set receptor_file and box_file parameters to ./[filename]<br>" "Please set vdw_definition_file parameter to /mirror/dock6/parameters/[vdw_definition_file]", validators=[dock6_in_extension_validator]) param_other_files = MultiFileField(label="Other input resources", help_text="These are files specified in your (.in) input file.<br>File types: (.pdb, .mol2)", min_num=1, validators=[multi_grid_other_resources_validator]) param_output_prefix = forms.CharField(required=False, label="Output file prefix", help_text="If specified, the output file will be named as [output_prefix].out", widget=forms.TextInput(attrs={'placeholder': 'output_prefix'})) param_terse = forms.BooleanField(required=False, label="-t", help_text='Terse program output') param_verbose = forms.BooleanField(required=False, label="-v", help_text="Verbose program output") def clean_param_output_prefix(self): output_prefix = self.cleaned_data['param_output_prefix'] return get_valid_filename(output_prefix) def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(GridForm, self).__init__(*args, **kwargs) toolset = ToolSet.objects.get(p2ctool_name="dock6") self.fields['mpi_cluster'] = MPIModelChoiceField(queryset=get_mpi_queryset_for_task_submission(self.user), label="MPI Cluster", toolset=toolset, help_text="Getting an empty list? Try <a href='{0}'>creating an MPI Cluster</a> first.".format( reverse('create_mpi'))) self.helper = FormHelper() self.helper.form_tag = False self.helper.layout = Layout( # crispy_forms layout Field('mpi_cluster', wrapper_class='col-xs-12'), Fieldset( 'Input', Field('param_input_file', wrapper_class='col-xs-12'), Field('param_other_files', wrapper_class='col-xs-12 col-md-8'), css_class='col-xs-12' ), Fieldset( 'Output', AppendedText('param_output_prefix', '.out', wrapper_class='col-xs-12 col-md-8'), css_class='col-xs-12' ), Fieldset( 'Other parameters', Field('param_terse', wrapper_class='col-xs-12'), Field('param_verbose', wrapper_class='col-xs-12'), css_class=' col-xs-12' ) )
class CommentForm(forms.ModelForm): class Meta: model = Comment fields = ( 'author', 'text', ) files = MultiFileField(min_num=1, max_num=1, max_file_size=1024 * 1024 * 5, required=False)
class RecetteForm(forms.ModelForm): required_css_class = 'required' class Meta: model = Recette fields = ['titre', 'type', 'difficulte', 'cout', 'temps_prepa', 'temps_cuisson', 'temps_repos','ingredients','etape'] files = MultiFileField(min_num=1, max_num=3, max_file_size=1024 * 1024 * 5) def save(self, commit=True): instance = super(RecetteForm, self).save(commit) for each in self.cleaned_data['files']: RecetteImage.objects.create(file=each, recette=instance) return instance
class ContactForm(forms.ModelForm): class Meta: model = Message fields = ['author_name', 'author_email', 'content'] # not attachments! files = MultiFileField(min_num=1, max_num=3, max_file_size=1024 * 1024 * 5) def save(self, commit=True): instance = super(ContactForm, self).save(commit) for each in self.cleaned_data['files']: Attachment.objects.create(file=each, message=instance) return instance
class UploadForm(forms.Form): attachments = MultiFileField(min_num = 1, max_num=50, max_file_size=1024*1024*5) class Meta: model = ExperimentFile def as_p(self): #"Returns this form rendered as HTML <p>s." return self._html_output( normal_row = u'<p%(html_class_attr)s>%(label)s</p>         %(field)s%(help_text)s<br></br>', error_row = u'%s', row_ender = '</p>', help_text_html = u' <span class="helptext">%s</span>', errors_on_separate_row = True)