class FileChooser(ew.InputField): template = 'jinja:allura:templates/widgets/file_chooser.html' validator = fev.FieldStorageUploadConverter() defaults = dict(ew.InputField.defaults, name=None) def resources(self): for r in super(FileChooser, self).resources(): yield r yield ew.JSLink('js/jquery.file_chooser.js') yield onready(''' var num_files = 0; var chooser = $('input.file_chooser').file(); chooser.choose(function (e, input) { var holder = document.createElement('div'); holder.style.clear = 'both'; e.target.parentNode.appendChild(holder); $(holder).append(input.val()); $(holder).append(input); input.attr('name', e.target.id + '-' + num_files); input.hide(); ++num_files; var delete_link = document.createElement('a'); delete_link.className = 'btn'; var icon = document.createElement('b'); icon.className = 'ico delete'; delete_link.appendChild(icon); $(delete_link).click(function () { this.parentNode.parentNode.removeChild(this.parentNode); }); $(holder).append(delete_link); });''')
def fields(self): return ew_core.NameList([ ew.TextField(name='title', validator=fev.UnicodeString( not_empty=True, messages={'empty': "You must provide a Title"}), attrs=dict(placeholder='Enter your title here', title='Enter your title here', style='width: 425px')), ffw.MarkdownEdit(name='text', show_label=False, attrs=dict(placeholder='Enter your content here', title='Enter your content here')), ew.SingleSelectField(name='state', options=[ ew.Option(py_value='draft', label='Draft'), ew.Option(py_value='published', label='Published') ]), ffw.LabelEdit(name='labels', placeholder='Add labels here', title='Add labels here'), ew.InputField( name='attachment', label='Attachment', field_type='file', attrs={'multiple': 'True'}, validator=fev.FieldStorageUploadConverter(if_missing=None)), ])
def fields(self): fields = [ ew.TextField(name='summary', label='Title', attrs={ 'style': 'width: 425px', 'class': 'memorable', 'placeholder': 'Title' }, validator=fev.UnicodeString( not_empty=True, messages={'empty': "You must provide a Title"})), ffw.MarkdownEdit(label='Description', name='description', attrs={'style': 'width: 95%'}), ew.SingleSelectField( name='status', label='Status', options=lambda: c.app.globals.all_status_names.split()), ffw.ProjectUserCombo(name='assigned_to', label='Owner'), ffw.LabelEdit(label='Labels', name='labels', className='ticket_form_tags'), ew.Checkbox(name='private', label='Mark as Private', validator=v.AnonymousValidator(), attrs={'class': 'unlabeled'}), ew.Checkbox(name='discussion_disabled', label='Discussion Disabled', validator=fev.StringBool(), attrs={'class': 'unlabeled'}), ew.InputField( name='attachment', label='Attachment', field_type='file', attrs={'multiple': 'True'}, validator=fev.FieldStorageUploadConverter(if_missing=None)), ffw.MarkdownEdit(name='comment', label='Comment', attrs={'style': 'min-height:7em; width:97%'}), ew.SubmitButton( label=self.submit_text, name='submit', attrs={ 'class': "ui-button ui-widget ui-state-default ui-button-text-only" }), ew.HiddenField(name='ticket_num', validator=fev.Int(if_missing=None)), ew.Checkbox(name='subscribe', label='Subscribe'), ] # milestone is kind of special because of the layout # add it to the main form rather than handle with the other customs if c.app.globals.custom_fields: for cf in c.app.globals.custom_fields: if cf.name == '_milestone': fields.append(TicketCustomField.make(cf)) break return ew_core.NameList(fields)
class FileSchema(Schema): filter_extra_fields = True allow_extra_fields = True fileUpload = validators.FieldStorageUploadConverter(not_empty=True) title = validators.UnicodeString(not_empty=True, strip=True) fileDate = validators.DateConverter(month_style='mm/dd/yyyy', strip=True) description = validators.UnicodeString(strip=True) _csrf = validators.String(not_empty=True, strip=True)
class ImageSchema(Schema): """ Schema for image upload """ allow_extra_fields = True filter_extra_fields = True image = validators.FieldStorageUploadConverter()
def __init__(self, request): formfields = [ FormField('subject', label='Betreff', size=64, required=True), FormField('body', label='Nachricht', cols=64, rows=24, type='textarea'), FileField('attachments', label='Anhänge', size=64, growable=False, validator=validators.FieldStorageUploadConverter() ), ] CSRFSecureForm.__init__(self, formfields, request, send='Senden')
def __init__(self, type, request): formfields = [ HiddenField('type', value=type), FormField('subject', label='Betreff', size=64, required=True, value="Bitte Studiengang in Müsli anpassen!"), FormField('body', label='Nachricht', cols=64, rows=24, type='textarea', required=True), FileField('attachments', label='Anhänge', size=64, growable=False, validator=validators.FieldStorageUploadConverter() ), ] CSRFSecureForm.__init__(self, formfields, request, send='Senden')
def __init__(self, request): formfields = [ FormField('subject', label='Betreff', size=64, required=True), FormField('body', label='Nachricht', cols=64, rows=24, type='textarea'), FileField('attachments', label='Anhänge', size=64, growable=False, validator=validators.FieldStorageUploadConverter()), FormField('copytome', label='Kopie an mich', type='radio', options=list(enumerate(['Senden', 'Nicht senden'])), value=0), ] CSRFSecureForm.__init__(self, formfields, request, send='Senden')
def fields(self): fields = super(NewTopicPost, self).fields fields.append(ew.InputField(name='attachment', label='Attachment', field_type='file', attrs={'multiple': 'True'}, validator=fev.FieldStorageUploadConverter(if_missing=None))) return fields
class EditImageForm(DojoEditableForm): __model__ = Image __omit_fields__ = ['id', 'slug'] image = validators.FieldStorageUploadConverter(if_missing=None)
class ImageForm(FormDefaults): __model__ = Image slug = UniqueSlug(model=Image) image = validators.FieldStorageUploadConverter(if_missing=None)