@@ -42,56 +42,40 @@ def set_form_data(self):
42
42
if not self .user .bank_account :
43
43
# Create a new bank account if none exists
44
44
self .user .bank_account = BankAccount (name = "" , BIC = "" , IBAN = "" )
45
- self .bank_ibc_field .value = self . bank_bic = self .user .bank_account .BIC
46
- self .bank_name_field .value = self .bank_name = self . user .bank_account .name
47
- self .bank_iban_field .value = self .bank_iban = self . user .bank_account .IBAN
48
- self .vat_number_field .value = self .vat_number = self . user .VAT_number
45
+ self .bank_bic_field .value = self .user .bank_account .BIC
46
+ self .bank_name_field .value = self .user .bank_account .name
47
+ self .bank_iban_field .value = self .user .bank_account .IBAN
48
+ self .vat_number_field .value = self .user .VAT_number
49
49
50
50
def update_form_data (self , user : User ):
51
51
"""Updates the user's data with the form data"""
52
52
self .user = user
53
53
self .set_form_data ()
54
54
self .update ()
55
55
56
- def on_vat_number_changed (self , e ):
57
- """Called when the VAT number field is changed"""
58
- self .vat_number = e .control .value
59
- self .user .VAT_number = self .vat_number
60
-
61
- def on_bank_bic_changed (self , e ):
62
- """Called when the bank BIC field is changed"""
63
- self .bank_bic = e .control .value
64
- self .user .bank_account .BIC = self .bank_bic
65
-
66
- def on_bank_iban_changed (self , e ):
67
- """Called when the bank IBAN field is changed"""
68
- self .bank_iban = e .control .value
69
- self .user .bank_account .IBAN = self .bank_iban
70
-
71
- def on_bank_name_changed (self , e ):
72
- """Called when the bank name field is changed"""
73
- self .bank_name = e .control .value
74
- self .user .bank_account .name = self .bank_name
56
+ def on_click_save (self , e ):
57
+ """Called when the save button is clicked"""
58
+ self .user .VAT_number = self .vat_number_field .value
59
+ self .user .bank_account .BIC = self .bank_bic_field .value
60
+ self .user .bank_account .IBAN = self .bank_iban_field .value
61
+ self .user .bank_account .name = self .bank_name_field .value
62
+ self .on_form_submit (self .user )
75
63
76
64
def build (self ):
77
65
"""Called when form is built"""
78
66
self .vat_number_field = views .TTextField (
79
- on_change = self .on_vat_number_changed ,
80
67
label = "VAT Number" ,
81
68
hint = "Value Added Tax number of the user, legally required for invoices." ,
82
69
)
83
70
self .bank_name_field = views .TTextField (
84
- on_change = self .on_bank_name_changed ,
85
71
label = "Name" ,
86
72
hint = "Name of account" ,
87
73
)
88
74
self .bank_iban_field = views .TTextField (
89
- on_change = self .on_bank_iban_changed ,
90
75
label = "IBAN" ,
91
76
hint = "International Bank Account Number" ,
92
77
)
93
- self .bank_ibc_field = views .TTextField (
94
- on_change = self .on_bank_bic_changed ,
78
+ self .bank_bic_field = views .TTextField (
95
79
label = "BIC" ,
96
80
hint = "Bank Identifier Code" ,
97
81
)
@@ -103,11 +87,11 @@ def build(self):
103
87
views .TSubHeading ("Bank Account" ),
104
88
self .bank_name_field ,
105
89
self .bank_iban_field ,
106
- self .bank_ibc_field ,
90
+ self .bank_bic_field ,
107
91
views .Spacer (),
108
92
views .TPrimaryButton (
109
93
label = "Save" ,
110
- on_click = lambda e : self .on_form_submit ( self . user ) ,
94
+ on_click = self .on_click_save ,
111
95
),
112
96
],
113
97
)
@@ -133,16 +117,6 @@ def __init__(
133
117
submit_btn_label : str
134
118
The label to display on the submit button
135
119
"""
136
- self .name = ""
137
- self .email = ""
138
- self .phone = ""
139
- self .title = ""
140
- self .street = ""
141
- self .street_number = ""
142
- self .postal_code = ""
143
- self .city = ""
144
- self .country = ""
145
- self .website = ""
146
120
self .on_form_submit = on_form_submit
147
121
self .on_submit_success = on_submit_success
148
122
self .submit_btn_label = submit_btn_label
@@ -161,16 +135,12 @@ def on_field_focus(self, e):
161
135
self .name_field ,
162
136
self .email_field ,
163
137
self .phone_field ,
164
- self .title_field ,
138
+ self .subtitle_field ,
165
139
]:
166
140
field .error_text = ""
167
141
self .toggle_form_err ()
168
142
self .update ()
169
143
170
- def on_field_value_changed (self , form_property , e ):
171
- """updates the property corresponding to this form field"""
172
- setattr (self , form_property , e .control .value )
173
-
174
144
def on_submit_btn_clicked (self , e ):
175
145
# prevent multiple clicking
176
146
self .submit_btn .disabled = True
@@ -179,22 +149,38 @@ def on_submit_btn_clicked(self, e):
179
149
self .toggle_form_err ()
180
150
181
151
missing_required_data_err = ""
182
- if utils .is_empty_str (self .name ):
152
+
153
+ # get the form data
154
+ subtitle = self .subtitle_field .value
155
+ name = self .name_field .value
156
+ email = self .email_field .value
157
+ phone_number = self .phone_field .value
158
+ address_street = self .street_field .value
159
+ address_postal_code = self .postal_code_field .value
160
+ address_number = self .street_number_field .value
161
+ address_city = self .city_field .value
162
+ address_country = self .country_field .value
163
+ website = self .website_field .value
164
+
165
+ # validate the form data
166
+ if utils .is_empty_str (subtitle ):
167
+ missing_required_data_err = "Please specify your job title. e.g. freelancer"
168
+ self .subtitle_field .error_text = missing_required_data_err
169
+
170
+ elif utils .is_empty_str (name ):
183
171
missing_required_data_err = "Your name is required."
184
172
self .name_field .error_text = missing_required_data_err
185
- elif utils .is_empty_str (self .email ):
173
+
174
+ elif utils .is_empty_str (email ):
186
175
missing_required_data_err = "Your email is required."
187
176
self .email_field .error_text = missing_required_data_err
188
- elif utils .is_empty_str (self .title ):
189
- missing_required_data_err = "Please specify your job title. e.g. freelancer"
190
- self .title_field .error_text = missing_required_data_err
191
177
192
178
elif (
193
- utils .is_empty_str (self . street )
194
- or utils .is_empty_str (self . street_number )
195
- or utils .is_empty_str (self . postal_code )
196
- or utils .is_empty_str (self . country )
197
- or utils .is_empty_str (self . city )
179
+ utils .is_empty_str (address_street )
180
+ or utils .is_empty_str (address_number )
181
+ or utils .is_empty_str (address_postal_code )
182
+ or utils .is_empty_str (address_country )
183
+ or utils .is_empty_str (address_city )
198
184
):
199
185
200
186
missing_required_data_err = "Please provide your full address"
@@ -203,16 +189,16 @@ def on_submit_btn_clicked(self, e):
203
189
if not missing_required_data_err :
204
190
# save user
205
191
result : IntentResult = self .on_form_submit (
206
- title = self . title ,
207
- name = self . name ,
208
- email = self . email ,
209
- phone = self . phone ,
210
- street = self . street ,
211
- street_num = self . street_number ,
212
- postal_code = self . postal_code ,
213
- city = self . city ,
214
- country = self . country ,
215
- website = self . website ,
192
+ title = subtitle ,
193
+ name = name ,
194
+ email = email ,
195
+ phone = phone_number ,
196
+ street = address_street ,
197
+ street_num = address_number ,
198
+ postal_code = address_postal_code ,
199
+ city = address_city ,
200
+ country = address_country ,
201
+ website = website ,
216
202
)
217
203
if not result .was_intent_successful :
218
204
self .toggle_form_err (result .error_msg )
@@ -226,67 +212,54 @@ def on_submit_btn_clicked(self, e):
226
212
def build (self ):
227
213
"""Called when form is built"""
228
214
self .name_field = views .TTextField (
229
- lambda e : self .on_field_value_changed ("name" , e ),
230
- "Name" ,
231
- "your name" ,
215
+ label = "Name" ,
216
+ hint = "your name" ,
232
217
on_focus = self .on_field_focus ,
233
218
keyboard_type = utils .KEYBOARD_NAME ,
234
219
)
235
220
self .email_field = views .TTextField (
236
- lambda e : self .on_field_value_changed ("email" , e ),
237
- "Email" ,
238
- "your email address" ,
221
+ label = "Email" ,
222
+ hint = "your email address" ,
239
223
on_focus = self .on_field_focus ,
240
224
keyboard_type = utils .KEYBOARD_EMAIL ,
241
225
)
242
226
self .phone_field = views .TTextField (
243
- lambda e : self .on_field_value_changed ("phone" , e ),
244
- "Phone (optional)" ,
245
- "your phone number" ,
227
+ label = "Phone (optional)" ,
228
+ hint = "your phone number" ,
246
229
on_focus = self .on_field_focus ,
247
230
keyboard_type = utils .KEYBOARD_PHONE ,
248
231
)
249
- self .title_field = views .TTextField (
250
- lambda e : self .on_field_value_changed ("title" , e ),
251
- "Job Title" ,
252
- "What is your role as a freelancer?" ,
232
+ self .subtitle_field = views .TTextField (
233
+ label = "Job Title" ,
234
+ hint = "What is your role as a freelancer?" ,
253
235
on_focus = self .on_field_focus ,
254
236
keyboard_type = utils .KEYBOARD_TEXT ,
255
237
)
256
238
self .website_field = views .TTextField (
257
- lambda e : self .on_field_value_changed ("website" , e ),
258
- "Website (optional)" ,
259
- "URL of your website." ,
239
+ label = "Website (optional)" ,
240
+ hint = "URL of your website." ,
260
241
)
261
242
self .street_field = views .TTextField (
262
- lambda e : self .on_field_value_changed ("street" , e ),
263
243
label = "Street Name" ,
264
- keyboard_type = utils .KEYBOARD_TEXT ,
265
244
expand = 1 ,
266
245
)
267
246
self .street_number_field = views .TTextField (
268
- lambda e : self .on_field_value_changed ("street_number" , e ),
269
247
label = "Street Number" ,
270
248
keyboard_type = utils .KEYBOARD_NUMBER ,
271
249
expand = 1 ,
272
250
)
273
251
self .postal_code_field = views .TTextField (
274
- lambda e : self .on_field_value_changed ("postal_code" , e ),
275
252
label = "Postal Code" ,
276
253
keyboard_type = utils .KEYBOARD_NUMBER ,
277
254
expand = 1 ,
278
255
)
279
256
280
257
self .city_field = views .TTextField (
281
- lambda e : self .on_field_value_changed ("city" , e ),
282
258
label = "City" ,
283
- keyboard_type = utils .KEYBOARD_TEXT ,
284
259
expand = 1 ,
285
260
)
286
261
self .country_field = views .TTextField (
287
- lambda e : self .on_field_value_changed ("country" , e ),
288
262
label = "Country" ,
289
- keyboard_type = utils .KEYBOARD_TEXT ,
290
263
)
291
264
self .form_err_control = views .TErrorText ("" )
292
265
self .submit_btn = views .TPrimaryButton (
@@ -296,7 +269,7 @@ def build(self):
296
269
return Column (
297
270
spacing = dimens .SPACE_MD ,
298
271
controls = [
299
- self .title_field ,
272
+ self .subtitle_field ,
300
273
self .name_field ,
301
274
self .email_field ,
302
275
self .phone_field ,
@@ -324,16 +297,16 @@ def build(self):
324
297
def refresh_user_info (self , user : User ):
325
298
if user is None :
326
299
return
327
- self .name_field .value = self . name = user .name
328
- self .email_field .value = self . email = user .email
329
- self .phone_field .value = self . phone = user .phone_number
330
- self .title_field .value = self . title = user .subtitle
331
- self .street_field .value = self . street = user .address .street
332
- self .postal_code_field .value = self . postal_code = user .address .postal_code
333
- self .street_number_field .value = self . street_number = user .address .number
334
- self .city_field .value = self . city = user .address .city
335
- self .country_field .value = self . country = user .address .country
336
- self .website_field .value = self . website = user .website
300
+ self .name_field .value = user .name
301
+ self .email_field .value = user .email
302
+ self .phone_field .value = user .phone_number
303
+ self .subtitle_field .value = user .subtitle
304
+ self .street_field .value = user .address .street
305
+ self .postal_code_field .value = user .address .postal_code
306
+ self .street_number_field .value = user .address .number
307
+ self .city_field .value = user .address .city
308
+ self .country_field .value = user .address .country
309
+ self .website_field .value = user .website
337
310
self .update ()
338
311
339
312
0 commit comments