Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/galaxy/util/form_builder.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
| author | guerler |
|---|---|
| date | Fri, 31 Jul 2020 00:32:28 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:d30785e31577 | 1:56ad4e20f292 |
|---|---|
| 1 """ | |
| 2 Classes for generating HTML forms | |
| 3 """ | |
| 4 from __future__ import absolute_import | |
| 5 from __future__ import print_function | |
| 6 | |
| 7 import logging | |
| 8 | |
| 9 from galaxy.util import ( | |
| 10 asbool | |
| 11 ) | |
| 12 | |
| 13 log = logging.getLogger(__name__) | |
| 14 | |
| 15 | |
| 16 class BaseField(object): | |
| 17 def __init__(self, name, value=None, label=None, **kwds): | |
| 18 self.name = name | |
| 19 self.label = label | |
| 20 self.value = value | |
| 21 self.disabled = kwds.get('disabled', False) | |
| 22 if 'optional' in kwds: | |
| 23 self.optional = asbool(kwds.get('optional')) | |
| 24 else: | |
| 25 self.optional = kwds.get('required', 'optional') == 'optional' | |
| 26 self.help = kwds.get('helptext') | |
| 27 | |
| 28 def to_dict(self): | |
| 29 return { | |
| 30 'name' : self.name, | |
| 31 'label' : self.label, | |
| 32 'disabled' : self.disabled, | |
| 33 'optional' : self.optional, | |
| 34 'value' : self.value, | |
| 35 'help' : self.help | |
| 36 } | |
| 37 | |
| 38 | |
| 39 class TextField(BaseField): | |
| 40 """ | |
| 41 A standard text input box. | |
| 42 """ | |
| 43 def to_dict(self): | |
| 44 d = super(TextField, self).to_dict() | |
| 45 d['type'] = 'text' | |
| 46 return d | |
| 47 | |
| 48 | |
| 49 class PasswordField(BaseField): | |
| 50 """ | |
| 51 A password input box. text appears as "******" | |
| 52 """ | |
| 53 def to_dict(self): | |
| 54 d = super(PasswordField, self).to_dict() | |
| 55 d['type'] = 'password' | |
| 56 return d | |
| 57 | |
| 58 | |
| 59 class TextArea(BaseField): | |
| 60 """ | |
| 61 A standard text area box. | |
| 62 """ | |
| 63 def to_dict(self): | |
| 64 d = super(TextArea, self).to_dict() | |
| 65 d['type'] = 'text' | |
| 66 d['area'] = True | |
| 67 return d | |
| 68 | |
| 69 | |
| 70 class CheckboxField(BaseField): | |
| 71 """ | |
| 72 A checkbox (boolean input) | |
| 73 """ | |
| 74 @staticmethod | |
| 75 def is_checked(value): | |
| 76 if value in [True, "True", "true"]: | |
| 77 return True | |
| 78 return False | |
| 79 | |
| 80 def to_dict(self): | |
| 81 d = super(CheckboxField, self).to_dict() | |
| 82 d['type'] = 'boolean' | |
| 83 return d | |
| 84 | |
| 85 | |
| 86 class SelectField(BaseField): | |
| 87 """ | |
| 88 A select field. | |
| 89 """ | |
| 90 | |
| 91 def __init__(self, name, multiple=None, display=None, field_id=None, value=None, selectlist=None, refresh_on_change=False, **kwds): | |
| 92 super(SelectField, self).__init__(name, value, **kwds) | |
| 93 self.field_id = field_id | |
| 94 self.multiple = multiple or False | |
| 95 self.refresh_on_change = refresh_on_change | |
| 96 self.selectlist = selectlist or [] | |
| 97 self.options = list() | |
| 98 if display == "checkboxes": | |
| 99 assert multiple, "Checkbox display only supported for multiple select" | |
| 100 elif display == "radio": | |
| 101 assert not(multiple), "Radio display only supported for single select" | |
| 102 elif display is not None: | |
| 103 raise Exception("Unknown display type: %s" % display) | |
| 104 self.display = display | |
| 105 | |
| 106 def add_option(self, text, value, selected=False): | |
| 107 self.options.append((text, value, selected)) | |
| 108 | |
| 109 def to_dict(self): | |
| 110 d = super(SelectField, self).to_dict() | |
| 111 d['type'] = 'select' | |
| 112 d['display'] = self.display | |
| 113 d['multiple'] = self.multiple | |
| 114 d['data'] = [] | |
| 115 for value in self.selectlist: | |
| 116 d['data'].append({'label': value, 'value': value}) | |
| 117 d['options'] = [{'label': t[0], 'value': t[1]} for t in self.options] | |
| 118 return d | |
| 119 | |
| 120 | |
| 121 class AddressField(BaseField): | |
| 122 @staticmethod | |
| 123 def fields(): | |
| 124 return [("desc", "Short address description", "Required"), | |
| 125 ("name", "Name", ""), | |
| 126 ("institution", "Institution", ""), | |
| 127 ("address", "Address", ""), | |
| 128 ("city", "City", ""), | |
| 129 ("state", "State/Province/Region", ""), | |
| 130 ("postal_code", "Postal Code", ""), | |
| 131 ("country", "Country", ""), | |
| 132 ("phone", "Phone", "")] | |
| 133 | |
| 134 def __init__(self, name, user=None, value=None, security=None, **kwds): | |
| 135 super(AddressField, self).__init__(name, value, **kwds) | |
| 136 self.user = user | |
| 137 self.security = security | |
| 138 | |
| 139 def to_dict(self): | |
| 140 d = super(AddressField, self).to_dict() | |
| 141 d['type'] = 'select' | |
| 142 d['data'] = [] | |
| 143 if self.user and self.security: | |
| 144 for a in self.user.addresses: | |
| 145 if not a.deleted: | |
| 146 d['data'].append({'label': a.desc, 'value': self.security.encode_id(a.id)}) | |
| 147 return d | |
| 148 | |
| 149 | |
| 150 class WorkflowField(BaseField): | |
| 151 def __init__(self, name, user=None, value=None, security=None, **kwds): | |
| 152 super(WorkflowField, self).__init__(name, value, **kwds) | |
| 153 self.user = user | |
| 154 self.value = value | |
| 155 self.security = security | |
| 156 | |
| 157 def to_dict(self): | |
| 158 d = super(WorkflowField, self).to_dict() | |
| 159 d['type'] = 'select' | |
| 160 d['data'] = [] | |
| 161 if self.user and self.security: | |
| 162 for a in self.user.stored_workflows: | |
| 163 if not a.deleted: | |
| 164 d['data'].append({'label': a.name, 'value': self.security.encode_id(a.id)}) | |
| 165 return d | |
| 166 | |
| 167 | |
| 168 class WorkflowMappingField(BaseField): | |
| 169 def __init__(self, name, user=None, value=None, **kwds): | |
| 170 super(WorkflowMappingField, self).__init__(name, value, **kwds) | |
| 171 self.user = user | |
| 172 | |
| 173 | |
| 174 class HistoryField(BaseField): | |
| 175 def __init__(self, name, user=None, value=None, security=None, **kwds): | |
| 176 super(HistoryField, self).__init__(name, value, **kwds) | |
| 177 self.user = user | |
| 178 self.value = value | |
| 179 self.security = security | |
| 180 | |
| 181 def to_dict(self): | |
| 182 d = super(HistoryField, self).to_dict() | |
| 183 d['type'] = 'select' | |
| 184 d['data'] = [{'label': 'New History', 'value': 'new'}] | |
| 185 if self.user and self.security: | |
| 186 for a in self.user.histories: | |
| 187 if not a.deleted: | |
| 188 d['data'].append({'label': a.name, 'value': self.security.encode_id(a.id)}) | |
| 189 return d | |
| 190 | |
| 191 | |
| 192 def get_suite(): | |
| 193 """Get unittest suite for this module""" | |
| 194 import doctest | |
| 195 import sys | |
| 196 return doctest.DocTestSuite(sys.modules[__name__]) |
