예제 #1
0
 def _process(self):
     field_data = snakify_keys(request.json['fieldData'])
     form_field = RegistrationFormField(parent_id=self.section.id,
                                        registration_form=self.regform)
     _fill_form_field_with_data(form_field, field_data)
     db.session.add(form_field)
     db.session.flush()
     return jsonify(view_data=form_field.view_data)
예제 #2
0
 def _process(self):
     field_data = snakify_keys(request.json['fieldData'])
     del field_data['input_type']
     form_field = RegistrationFormText(parent_id=self.section.id,
                                       registration_form=self.regform)
     _fill_form_field_with_data(form_field, field_data, set_data=False)
     db.session.add(form_field)
     db.session.flush()
     return jsonify(view_data=form_field.view_data)
예제 #3
0
 def _process_PATCH(self):
     field_data = snakify_keys(request.json['fieldData'])
     if (self.field.type == RegistrationFormItemType.field_pd
             and self.field.personal_data_type.is_required
             and not field_data['is_required']):
         raise BadRequest
     elif self.field.input_type != field_data['input_type']:
         raise BadRequest
     _fill_form_field_with_data(self.field, field_data)
     return jsonify(view_data=self.field.view_data)
예제 #4
0
 def _stay_dates_valid(form, field):
     if not field.data:
         return
     data = snakify_keys(field.data)
     if not data.get('is_no_accommodation'):
         try:
             arrival_date = data['arrival_date']
             departure_date = data['departure_date']
         except KeyError:
             raise ValidationError(
                 _("Arrival/departure date is missing"))
         if _to_date(arrival_date) > _to_date(departure_date):
             raise ValidationError(
                 _("Arrival date can't be set after the departure date."
                   ))
예제 #5
0
 def _check_number_of_places(form, field):
     if not field.data:
         return
     if form.modified_registration:
         old_data = form.modified_registration.data_by_field.get(
             self.form_item.id)
         if not old_data or not self.has_data_changed(
                 snakify_keys(field.data), old_data):
             return
     item = next((x for x in self.form_item.versioned_data['choices']
                  if x['id'] == field.data['choice']), None)
     captions = self.form_item.data['captions']
     places_used_dict = self.get_places_used()
     if (item and item['places_limit']
             and (item['places_limit'] < places_used_dict.get(
                 field.data['choice'], 0))):
         raise ValidationError(
             _("Not enough rooms in '{0}'").format(
                 captions[item['id']]))
def test_snakify_keys():
    d = {
        'sn_case': 2,
        'shouldBeSnakeCase': 3,
        'snake': 4,
        'snake-case': 5,
        'inner': {
            'innerDict': 2
        }
    }
    orig = d.copy()
    d2 = snakify_keys(d)
    assert d == orig
    assert d2 == {
        'sn_case': 2,
        'should_be_snake_case': 3,
        'snake': 4,
        'snake-case': 5,
        'inner': {
            'inner_dict': 2
        }
    }
예제 #7
0
 def _process_PATCH(self):
     field_data = snakify_keys(request.json['fieldData'])
     del field_data['input_type']
     _fill_form_field_with_data(self.field, field_data, set_data=False)
     return jsonify(view_data=self.field.view_data)