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