class Meta: model = Card # exclude = ['modified_time'] fields = ( # 'title', # 'description', 'column', 'priority', 'type', 'start_time', 'due_date', 'owner', 'watchers', 'company', 'estimate', 'board', 'tags', ) widgets = { 'title': forms.TextInput( attrs={ 'placeholder': "Enter card title", 'style': 'width: 86%; border: 0px; font-size: 16pt;', }), 'description': forms.Textarea(), 'board': forms.HiddenInput(), 'estimate': forms.NumberInput( attrs={ 'required': False, 'style': 'width: 60px; border: 1px solid #FFBBD7; text-align: center;', 'min': '15', 'step': '15', 'value': '15', }), 'watchers': autocomplete.Select2Multiple(url='watcher-autocomplete', ), 'tags': autocomplete.TagSelect2(url='tag-autocomplete'), 'company': autocomplete.Select2( url='company-autocomplete', attrs={'data-placeholder': 'Select Company'}, ), 'owner': autocomplete.Select2(url='owner-autocomplete'), } labels = { 'title': '', 'description': '', 'column': 'Choose the column', 'tags': '', }
class TestForm(autocomplete.FutureModelForm): test = autocomplete.TagulousField( required=False, queryset=TestModel.test.tag_model.objects.all(), widget=autocomplete.TagSelect2(url='select2_tagulous'), ) class Meta: model = TestModel fields = ('name', 'test')
class AutocompleteCharField(forms.CharField): widget = autocomplete.TagSelect2( url='vocabs-ac:external-link-ac', forward=['endpoint'], attrs={ 'data-placeholder': 'Type at least 3 characters to get autocomplete suggestions ...', 'data-minimum-input-length': 3, }, ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.required = False def to_python(self, value): """Normalize data to keep only URIs.""" clean_value = ",".join(re.findall("(?P<url>https?://[^\s\,]+)", value)) return clean_value
class ExpressionStudyCreateForm(forms.ModelForm): ome = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/ome-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) experimental_design = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/experimental-design-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) topics = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/topic-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) tissues = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/tissue-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) age = SimpleArrayField(forms.CharField(), required=False) sex = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/sex-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) dev_stage = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/dev-stage-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) antibody = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/antibody-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) mutant = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/mutant-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) cell_sorted = autocomplete.Select2ListCreateChoiceField( required=False, widget=autocomplete.TagSelect2(url='/studies/cell-sorted-autocomplete', attrs={"data-tags":"true", "data-html":True}) ) keywords = SimpleArrayField(forms.CharField(), required=False) class Meta: model = ExpressionStudy fields = ["article", "pmid", "samples_count", "read_groups", "edit_groups"] def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(ExpressionStudyCreateForm, self).__init__(*args, **kwargs) self.fields['read_groups'].help_text = "Groups with viewing permission on project and subentities. Will be ignored if the visibility is set to public. Use 'ctrl' to select multiple/unselect." self.fields['edit_groups'].help_text = "Groups with editing permission on project and subentities. Use 'ctrl' to select multiple/unselect." # TODO : Give link to group creation interface? groups = self.user.groups.all() self.fields['read_groups'].queryset = groups self.fields['edit_groups'].queryset = groups self.fields.keyOrder = [ 'article', 'pmid', 'samples_count', 'species' 'ome', 'technology', 'experimental_design', 'topics', 'tissues', 'age', 'sex', 'dev_stage', 'antibody' 'mutant', 'cell_sorted', 'edit_groups', 'read_groups'] self.helper = FormHelper(self) self.helper.form_method = 'POST' self.helper.add_input(Submit('save', 'Save'))
class RequestJobForm(forms.ModelForm): class Meta: model = RequestJob exclude = ('job_id', 'tgt_directory', 'global_status') username = forms.CharField(widget=forms.HiddenInput) src_host = forms.CharField(label="Source Host ", help_text="host:port", required=True, widget=autocomplete.ListSelect2( url='ensembl_dbcopy:src-host-autocomplete', attrs={ 'data-placeholder': 'Source host', 'data-minimum-input-length': 2 })) tgt_host = TrimmedCharField(label="Target Hosts", help_text="List of target hosts", required=True, widget=autocomplete.TagSelect2( url='ensembl_dbcopy:tgt-host-autocomplete', attrs={ 'data-placeholder': 'Target(s)', 'data-result-html': True })) src_incl_db = TrimmedCharField( label="Databases to copy", help_text='db1,db2 or %variation_99% or % (use with caution)', max_length=2048, required=True, widget=autocomplete.TagSelect2( url='ensembl_dbcopy:host-db-autocomplete', forward=[forward.Field('src_host', 'db_host')], attrs={'data-placeholder': 'Included Db(s)'})) src_skip_db = TrimmedCharField( label="Databases to exclude", help_text='db1,db2 or %mart%', max_length=2048, required=False, widget=autocomplete.TagSelect2( url='ensembl_dbcopy:host-db-autocomplete', forward=[forward.Field('src_host', 'db_host')], attrs={'data-placeholder': 'Skip table(s)'})) src_incl_tables = TrimmedCharField( label="Only Copy these tables", help_text='table1,table2,..', max_length=2048, required=False, widget=autocomplete.TagSelect2( url='ensembl_dbcopy:host-db-table-autocomplete', forward=[ forward.Field('src_host', 'db_host'), forward.Field('src_incl_db') ], attrs={'data-placeholder': 'Include table(s)'})) src_skip_tables = TrimmedCharField( label="Skip these tables", help_text='table1,table2,..', max_length=2048, required=False, widget=autocomplete.TagSelect2( url='ensembl_dbcopy:host-db-table-autocomplete', forward=[ forward.Field('src_host', 'db_host'), forward.Field('src_incl_db') ], attrs={'data-placeholder': 'Exclude table(s)'})) tgt_db_name = TrimmedCharField(label="Rename DB(s)on target(s)", help_text='db1,db2,..', max_length=2048, widget=forms.TextInput(attrs={'size': 50}), required=False) email_list = TrimmedCharField(label="Email(s)", help_text='Comma separated mail list', max_length=2048) def __init__(self, *args, **kwargs): super(RequestJobForm, self).__init__(*args, **kwargs) if self.data.get('src_host', None) is not None or self.initial.get( 'src_host', None) is not None: src_host = self.data.get('src_host') if self.data.get( 'src_host') is not None else self.initial.get('src_host') self.fields['src_host'].initial = src_host self.fields['src_host'].widget.choices = [(src_host, src_host)] if self.data.get('tgt_host', None) is not None: tgt_hosts = self.data.get('tgt_host') self.fields['tgt_host'].initial = tgt_hosts self.fields['tgt_host'].choices = [(val, val) for val in tgt_hosts] target_host_group_list = TargetHostGroup.objects.target_host_group_for_user( self.user) if len(target_host_group_list) >= 1: tgt_group_host = forms.TypedChoiceField( required=False, choices=target_host_group_list, empty_value='--select target group--') tgt_group_host.widget.attrs = {'onblur': "targetHosts()"} tgt_group_host.label = 'Host Target HostGroup' tgt_group_host.help_text = "Select HostGroup to autofill the target host" self.fields['tgt_group_host'] = tgt_group_host self.fields.move_to_end('tgt_group_host')