Exemple #1
0
 def __init__(self, *args, **kwargs):
     super(ISBNForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.layout = Layout(
         Row(Column('isbn', css_class='form-group col-lg-4 mb-0'),
             css_class='form-row'), Submit('submit', '検索'))
Exemple #2
0
class TapForm(forms.ModelForm):
    class FlowMeterModelChoiceField(forms.ModelChoiceField):
        def label_from_instance(self, meter):
            if meter.tap:
                return u'{} (connected to {})'.format(meter, meter.tap.name)
            else:
                return unicode(meter)

    class FlowToggleModelChoiceField(forms.ModelChoiceField):
        def label_from_instance(self, toggle):
            if toggle.tap:
                return u'{} (connected to {})'.format(toggle, toggle.tap.name)
            else:
                return unicode(toggle)

    class ThermoSensorModelChoiceField(forms.ModelChoiceField):
        def label_from_instance(self, sensor):
            last_log = sensor.LastLog()
            if last_log:
                return u'{} (Last report: {})'.format(sensor, naturaltime(last_log.time))
            else:
                return unicode(sensor)

    meter = FlowMeterModelChoiceField(queryset=ALL_METERS, required=False,
        empty_label='Not connected.',
        help_text='Tap is routed thorough this flow meter. If unset, reporting is disabled.')

    toggle = FlowToggleModelChoiceField(queryset=ALL_TOGGLES, required=False,
        empty_label='Not connected.',
        help_text='Optional flow toggle (usually a relay/valve) connected to this tap.')

    temperature_sensor = ThermoSensorModelChoiceField(queryset=ALL_THERMOS, required=False,
        empty_label='No sensor.',
        help_text='Optional sensor monitoring the temperature at this tap.')

    class Meta:
        model = models.KegTap
        fields = ('name', 'notes', 'temperature_sensor', 'sort_order')

    def __init__(self, *args, **kwargs):
        super(TapForm, self).__init__(*args, **kwargs)

        if self.instance:
            self.fields['meter'].initial = self.instance.current_meter()
            self.fields['toggle'].initial = self.instance.current_toggle()
            self.fields['temperature_sensor'].initial = self.instance.temperature_sensor

    def save(self, commit=True):
        if not commit:
            raise ValueError('TapForm does not support commit=False')
        instance = super(TapForm, self).save(commit=True)
        b = get_kegbot_backend()
        b.connect_meter(instance, self.cleaned_data['meter'])
        b.connect_toggle(instance, self.cleaned_data['toggle'])
        return instance

    helper = FormHelper()
    helper.form_class = 'form-horizontal'
    helper.layout = Layout(
        Field('name', css_class='input-xlarge'),
        Field('meter', css_class='input-xlarge'),
        Field('toggle', css_class='input-xlarge'),
        Field('temperature_sensor', css_class='input-xlarge'),
        Field('sort_order', css_class='input-xlarge'),
        Field('notes', css_class='input-block-level', rows='3'),
        FormActions(
            Submit('submit_tap_form', 'Save Settings', css_class='btn-success'),
        )
    )
Exemple #3
0
class KegForm(forms.Form):
    keg_size = forms.ChoiceField(choices=keg_sizes.CHOICES,
        initial=keg_sizes.HALF_BARREL,
        required=True)

    initial_volume = forms.FloatField(label='Initial Volume', initial=0.0,
        required=False, help_text='Keg\'s Initial Volume')

    beer_name = forms.CharField(required=False)  # legacy
    brewer_name = forms.CharField(required=False)  # legacy

    beverage_name = forms.CharField(label='Beer Name', required=False)
    beverage_id = forms.CharField(widget=forms.HiddenInput(), required=False)
    producer_name = forms.CharField(label='Brewer', required=False)
    producer_id = forms.CharField(widget=forms.HiddenInput(), required=False)
    style_name = forms.CharField(required=True, label='Style',
      help_text='Example: Pale Ale, Stout, etc.')

    description = forms.CharField(max_length=256, label='Description',
        widget=forms.Textarea(), required=False,
        help_text='Optional user-visible description of the keg.')
    notes = forms.CharField(label='Notes', required=False, widget=forms.Textarea(),
        help_text='Optional private notes about this keg, viewable only by admins.')
    connect_to = forms.ModelChoiceField(queryset=ALL_TAPS, label='Connect To',
        required=False,
        help_text='If selected, immediately activates the keg on this tap. '
            '(Any existing keg will be ended.)')

    helper = FormHelper()
    helper.form_class = 'form-horizontal beer-select'
    helper.layout = Layout(
        Field('beverage_name', css_class='input-xlarge'),
        Field('beverage_id', type='hidden'),
        Field('producer_name', css_class='input-xlarge'),
        Field('producer_id', type='hidden'),
        Field('style_name', css_class='input-xlarge'),
        Field('keg_size', css_class='input-xlarge'),
        Field('initial_volume', css_class='input-volume'),
        Field('description', css_class='input-block-level', rows='3'),
        Field('notes', css_class='input-block-level', rows='3'),
        Field('connect_to', css_class='input-block-level'),
        FormActions(
            Submit('submit_add_keg', 'Save', css_class='btn-primary'),
        )
    )

    def clean_beverage_name(self):
        beverage_name = self.cleaned_data.get('beverage_name')
        if not beverage_name:
            beverage_name = self.cleaned_data.get('beer_name')
            if not beverage_name:
                raise forms.ValidationError('Must specify a beverage name')
            self.cleaned_data['beverage_name'] = beverage_name
        return beverage_name

    def clean_producer_name(self):
        producer_name = self.cleaned_data.get('producer_name')
        if not producer_name:
            producer_name = self.cleaned_data.get('brewer_name')
            if not producer_name:
                raise forms.ValidationError('Must specify a producer name')
            self.cleaned_data['producer_name'] = producer_name
        return producer_name

    def save(self):
        if not self.is_valid():
            raise ValueError('Form is not valid.')
        keg_size = self.cleaned_data.get('keg_size')
        if keg_size != 'other':
            full_volume_ml = None
        else:
            full_volume_ml = self.cleaned_data.get('initial_volume')

        # TODO(mikey): Support non-beer beverage types.
        cd = self.cleaned_data
        b = get_kegbot_backend()
        keg = b.create_keg(beverage_name=cd['beverage_name'], producer_name=cd['producer_name'],
            beverage_type='beer', style_name=cd['style_name'], keg_type=cd['keg_size'],
            full_volume_ml=full_volume_ml, notes=cd['notes'], description=cd['description'])

        tap = cd['connect_to']
        if tap:
            if tap.is_active():
                b.end_keg(tap.current_keg)
            b.attach_keg(tap, keg)

        return keg
Exemple #4
0
 def __init__(self):
     self.helper = FormHelper()  # type: FormHelper
Exemple #5
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.fields["special_chars"].strip = False
     self.helper = FormHelper(self)
     self.helper.disable_csrf = True
     self.helper.form_tag = False
Exemple #6
0
    def __init__(
        self,
        model_label=None,
        current_models=None,
        edit=False,
        *args,
        **kwargs,
    ):

        self.current_models = current_models
        self.derivative_model_label = model_label
        if current_models:
            self.derivative_model = current_models.get(model_label, None)
        else:
            self.derivative_model = None
        self.edit = edit

        super().__init__(*args, **kwargs)

        # Add form.modules to fields (useful for getting which ones are necessary)
        for form in self.forms:
            if not hasattr(form, "module"):
                continue

            for field in form.fields:
                self.fields[field].module = form.module

        # If this is not an edit, we can't use the same label!
        if not edit and model_label:
            self.fields["label"].initial = model_label + "-new"

        self.helper = FormHelper()
        self.helper.form_id = "input_form"
        self.helper.form_class = "form-horizontal"
        self.helper.form_method = "post"

        self.helper.help_text_inline = True
        self.helper.label_class = "col-3 control-label"
        self.helper.field_class = "col-8"

        # Here we modify some of the tab layouts because they are more obvious this way.
        extras = {
            CosmoForm: ("z", "n", "sigma_8"),
            TransferForm: ("lnk_range", "dlnk", "takahashi"),
            HMFForm: ("logm_range", "dlog10m"),
            FilterForm: ("delta_c", ),
            WDMForm: ("wdm_mass", WDMAlterForm),
        }
        omit = [
            TransferFramework, MassFunctionFramework, WDMFramework,
            WDMAlterForm
        ]

        print(self.forms[self.form_list.index(
            WDMAlterForm)]._layout().fields[-1].fields)

        self.helper.layout = Layout(
            Div(
                Div("label", css_class="col"),
                Div(
                    HTML(  # use HTML for button, to get icon in there :-)
                        '<button type="submit" class="btn btn-primary">'
                        '<i class="fas fa-calculator"></i> Calculate'
                        "</button>"),
                    css_class="col",
                ),
                Div(
                    HTML(  # use HTML for button, to get icon in there :-)
                        '<a class="btn btn-warning" href="../..">'
                        '<i class="fas fa-ban"></i> Cancel</a>'),
                    css_class="col",
                ),
                css_class="row",
            ),
            TabHolder(*[
                form._layout(
                    extra=[
                        x for x in extras.get(self.form_list[i], ())
                        if isinstance(x, str)
                    ],
                    appended_rows=[
                        self.forms[self.form_list.index(
                            x)]._layout().fields[-1]
                        for x in extras.get(self.form_list[i], ())
                        if not isinstance(x, str)
                    ],
                ) for i, form in enumerate(self.forms)
                if self.form_list[i] not in omit
            ]),
        )
        self.helper.form_action = ""
Exemple #7
0
    def __init__(self, *args, **kwargs):
        if 'challenge' in kwargs:
            self.challenge = kwargs.pop('challenge')
        else:
            self.challenge = None
        self.discount_code = None
        super(RegistrationForm, self).__init__(*args, **kwargs)

        # Add challenge field
        if self.challenge:
            self.fields['challenge_question'] = forms.CharField(
                required=False,
                label=_('Solution'),  #_('Challenge Question'),
                widget=forms.widgets.Textarea,
                help_text=_('Unlimited number of trials as long as '
                            '"submit my solution" is checked.'))
            self.fields['challenge_do_attempt'] = forms.BooleanField(
                required=False,
                label=_('Submit my solution to the challenge question'),
                initial=True)
            self.fields['has_solved_challenge'] = forms.BooleanField(
                required=False,
                widget=forms.widgets.HiddenInput,
                initial=False)

        # Discount Code
        self.fields['discount_code_code'] = forms.CharField(
            required=False, label=_('Discount Code'), initial='WHWaitlist')

        self.helper = FormHelper()
        self.helper.form_id = 'registration-form'
        self.helper.form_method = 'post'
        self.helper.form_action = 'register'
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'col-lg-3'
        self.helper.field_class = 'col-lg-7'

        self.helper.layout = Layout(
            Fieldset(
                _('General Information'),
                'first_name',
                'last_name',
                'gender',
                'email',
            ),
            Fieldset(_('Tell us a bit about yourself.'),
                     Div(Field('is_student',
                               data_off_text='No',
                               data_on_text='Yes',
                               data_size='mini'),
                         css_id="is_student_wrapper"),
                     Field('is_returning',
                           data_off_text='No',
                           data_on_text='Yes',
                           data_size='mini'),
                     Field('is_first_time_hacker',
                           data_off_text='No',
                           data_on_text='Yes',
                           data_size='mini'),
                     'school',
                     css_id='about-you'),
            Fieldset(
                _('Experience'),
                'github',
                'linkedin',
                'resume',
            ),
            Fieldset(
                _('Misc.'),
                'tshirt_size',
                Field('food_restrictions', rows=2),
            ),
        )
        if self.challenge:
            self.helper.layout.extend(
                (Fieldset(_('Bonus'),
                          HTML(
                              get_challenge_question_header(
                                  self.challenge.encrypted_message)),
                          'has_solved_challenge',
                          Field('challenge_question',
                                rows=3,
                                placeholder=_('Easy, the answer is...')),
                          Field('challenge_do_attempt',
                                data_off_text='No',
                                data_on_text='Yes',
                                data_size='mini'),
                          css_id='bonus'), ))
        self.helper.layout.extend((Fieldset(_('Payment Options'),
                                            Field('discount_code_code',
                                                  placeholder='CODE',
                                                  readonly=True),
                                            css_id='payment')))
        hide_checkout_hint = self.challenge is not None
        self.helper.layout.extend((
            # Field('has_read_waiver', css_class="waiver"),
            Field('has_read_conditions', css_class="conditions"),
            HTML(
                get_registration_button_html(
                    hide_checkout_hint=hide_checkout_hint)),
        ))
Exemple #8
0
 def __init__(self, *args, **kwargs):
     """Setup the form to work with crispy_forms."""
     super(CustomPasswordChangeForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper(self)
     self.helper.add_input(Submit('submit', 'Submit'))
Exemple #9
0
 def __init__(self, *args, **kwargs):
     """Setup the form to work with crispy_forms."""
     super(EditUserForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.add_input(Submit('submit', 'Submit'))
Exemple #10
0
 def __init__(self, *args, **kwargs):
     super(MapAddDevicesCsv, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.form_tag = False
     self.helper.form_show_labels = False
Exemple #11
0
 def __init__(self, *args, **kwargs):
     super(MapForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.form_tag = False
     self.helper.layout = get_visualisation_layout()
Exemple #12
0
 def __init__(self, *args, **kwargs):
     super(UsersPasswordResetForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.add_input(Submit("recover", _("Recover password")))
Exemple #13
0
 def __init__(self, *args, **kwargs):
     super(UsersPasswordRecoveryForm, self).__init__(*args, **kwargs)
     self.fields["username_or_email"].label = ""
     self.helper = FormHelper()
     self.helper.add_input(Submit("recover", _("Recover password")))
Exemple #14
0
    def __init__(self, *args, **kwargs):

        super(TeamForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.layout = Layout()
        self.helper.add_input(Submit("submit", "Save"))
Exemple #15
0
 def __init__(self, *args, **kwargs):
     super(ImportForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.add_input(Submit('submit', 'Submit'))
 def __init__(self, *args, **kwargs):
     self.helper = FormHelper()
     self.helper.form_tag = False
     super().__init__(*args, **kwargs)
 def __init__(self, *args, **kwargs):
     self.helper = FormHelper()
     self.helper.form_tag = False
     self.helper.disable_csrf = True
     self.helper.layout = Layout(
         Fieldset(
             'Geographic Coordinates',
             Div(
                 Div(HTML(
                     'To determine coordinates using a Global Positioning System (GPS), set the datum to the North American Datum of 1983 (NAD 83), the current ministry standard for mapping.<br /><br />'
                 ),
                     css_class='col-md-12'),
                 css_class='row',
             ),
             Div(
                 Div(
                     Div(
                         Div(
                             HTML(
                                 '<div id="coord-error-pane" class="alert alert-warning" style="display:none"></div>'
                             )),
                         css_class='row',
                     ),
                     Div(
                         Div(AppendedText('latitude', 'decimal degrees'),
                             css_class='col-md-4'),
                         Div(AppendedText('longitude', 'decimal degrees'),
                             css_class='col-md-4'),
                         css_class='row',
                     ),
                     Div(
                         Div(HTML('OR'), css_class='col-md-12'),
                         css_class='row',
                     ),
                     Div(
                         Div(HTML('&nbsp;'), css_class='col-md-12'),
                         css_class='row',
                     ),
                     Div(
                         Div(HTML(
                             '<div id="div_id_gps-latitude_dms" class="form-group"> <label for="id_gps-latitude_d" class="control-label ">Latitude</label> <div class="controls "> <div class="input-group"> <input class="numberinput form-control" id="id_gps-latitude_d" name="gps-latitude_d" step="1" type="number" /> <span class="input-group-addon">deg</span> <input class="numberinput form-control" id="id_gps-latitude_m" name="gps-latitude_m" step="1" type="number" /> <span class="input-group-addon">min</span> <input class="numberinput form-control" id="id_gps-latitude_s" name="gps-latitude_s" step="0.01" type="number" /> <span class="input-group-addon">sec</span> </div> </div> </div>'
                         ),
                             css_class='col-md-5'),
                         Div(HTML(
                             '<div id="div_id_gps-longitude_dms" class="form-group"> <label for="id_gps-longitude_d" class="control-label ">Longitude</label> <div class="controls "> <div class="input-group"> <input class="numberinput form-control" id="id_gps-longitude_d" name="gps-longitude_d" step="1" type="number" /> <span class="input-group-addon">deg</span> <input class="numberinput form-control" id="id_gps-longitude_m" name="gps-longitude_m" step="1" type="number" /> <span class="input-group-addon">min</span> <input class="numberinput form-control" id="id_gps-longitude_s" name="gps-longitude_s" step="0.01" type="number" /> <span class="input-group-addon">sec</span> </div> </div> </div>'
                         ),
                             css_class='col-md-5'),
                         css_class='row',
                     ),
                     Div(
                         Div(HTML('OR'), css_class='col-md-12'),
                         css_class='row',
                     ),
                     Div(
                         Div(HTML('&nbsp;'), css_class='col-md-12'),
                         css_class='row',
                     ),
                     Div(
                         Div(HTML(
                             '<div id="div_id_gps-zone" class="form-group"> <label for="id_gps-zone" class="control-label ">Zone</label> <div class="controls "> <select class="select form-control" id="id_gps-zone" name="gps-zone"><option value="" selected="selected">---------</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option></select> </div> </div>'
                         ),
                             css_class='col-md-2'),
                         Div(HTML(
                             '<div id="div_id_gps-utm_easting" class="form-group"> <label for="id_gps-utm_easting" class="control-label ">UTM Easting</label> <div class="controls "> <div class="input-group"> <input class="numberinput form-control" id="id_gps-utm_easting" name="gps-utm_easting" step="1" type="number" min="200000" max="800000" /> <span class="input-group-addon">m</span> </div> </div> </div>'
                         ),
                             css_class='col-md-3'),
                         Div(HTML(
                             '<div id="div_id_gps-utm_northing" class="form-group"> <label for="id_gps-utm_northing" class="control-label ">UTM Northing</label> <div class="controls "> <div class="input-group"> <input class="numberinput form-control" id="id_gps-utm_northing" name="gps-utm_northing" step="1" type="number" min="5350500" max="6655250" /> <span class="input-group-addon">m</span> </div> </div> </div>'
                         ),
                             css_class='col-md-3'),
                         css_class='row',
                     ),
                     css_class='col-md-8',
                 ),
                 Div(
                     Div(id='add-map',
                         aria_label=
                         'This map shows the location of a prospective well as a light blue pushpin, as well as any existing wells as dark blue circles. Coordinates for the prospective well may be refined by dragging the pushpin with the mouse.'
                         ),
                     Div(id='attribution'),
                     Div(
                         HTML(
                             '<br />After the GPS coordinates are entered, the pushpin can be moved by clicking and dragging it on the map. The GPS coordinates will be updated automatically.'
                         )),
                     css_class='col-md-4',
                 ),
                 css_class='row',
             ),
         ),
         Fieldset(
             'Method of Drilling',
             Div(
                 Div(AppendedText('ground_elevation', 'ft (asl)'),
                     css_class='col-md-2'),
                 Div('ground_elevation_method', css_class='col-md-3'),
                 css_class='row',
             ),
             Div(
                 Div('drilling_method', css_class='col-md-2'),
                 Div('other_drilling_method', css_class='col-md-3'),
                 css_class='row',
             ),
             Div(
                 Div(HTML('&nbsp;'), css_class='col-md-12'),
                 css_class='row',
             ),
             Div(
                 Div('well_orientation', css_class='col-md-3'),
                 css_class='row',
             ),
         ))
     super(ActivitySubmissionGpsForm, self).__init__(*args, **kwargs)
     # Make fields required on the form even though they are not required in the DB due to legacy data issues
     # TODO - check admin or staff user and don't make these fields required
     self.fields['latitude'].required = True
     self.fields['longitude'].required = True
     self.fields['drilling_method'].required = True
Exemple #18
0
 def __init__(self, *args, **kwargs):
     #exclude_list=kwargs.pop('exclude_list', '')
     super(ReadForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper(self)
     self.helper.layout.append(Hidden('read_id', '{{read_id}}'))
     self.helper.layout.append(Submit('save', 'save'))
Exemple #19
0
 def __init__(self, *args, **kwargs):
     self.helper = FormHelper()
     self.helper.add_input(Submit("submit", "Submit"))
     super().__init__(*args, **kwargs)
Exemple #20
0
 def __init__(self, *args, **kwargs):
     self.game = models.Game.objects.get(pk=kwargs.pop('game_id'))
     super(ScreenshotForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.add_input(Submit('submit', "Submit"))
Exemple #21
0
 def setup_flow_layout(self):
     self.helper = getattr(self, 'helper', FormHelper())
     Frm.set_flow_layout(self,
                         self.flow_layout,
                         strict=self.strict_flow_layout)
 def __init__(self, *args, **kwargs):
     super(CommentForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.form_id = 'comment'
     self.helper.form_method = 'post'
     self.helper.add_input(Submit('submit', 'Submit'))
Exemple #23
0
 def __init__(self, *args, **kwargs):
     ImageValidationMixin.__init__(self, *args, **kwargs)
     ModelForm.__init__(self, *args, **kwargs)
     self.helper = FormHelper(self)
     self.helper.form_class = 'form-horizontal'
     self.helper.form_tag = False
Exemple #24
0
 def __init__(self, *args, **kwargs):
     super(EmailForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.form_show_labels = True
Exemple #25
0
 def __init__(self, *args, **kwargs):
     super(MessageForm, self).__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.form_tag = False
Exemple #26
0
 def __init__(self, *args, **kwargs):
     self.helper = FormHelper()
     self.helper.form_method = 'post'
     self.helper.add_input(Submit('submit', submit_button or 'Submit'))
     self.helper.form_action = form_action or ''
     super().__init__(*args, **kwargs)
Exemple #27
0
class ChangeKegForm(forms.Form):
    keg_size = forms.ChoiceField(choices=keg_sizes.CHOICES,
        initial=keg_sizes.HALF_BARREL,
        required=True)

    initial_volume = forms.FloatField(label='Initial Volume', initial=0.0,
        required=False, help_text='Keg\'s Initial Volume')

    beer_name = forms.CharField(required=False)  # legacy
    brewer_name = forms.CharField(required=False)  # legacy

    beverage_name = forms.CharField(label='Beer Name', required=False)
    beverage_id = forms.CharField(widget=forms.HiddenInput(), required=False)
    producer_name = forms.CharField(label='Brewer', required=False)
    producer_id = forms.CharField(widget=forms.HiddenInput(), required=False)
    style_name = forms.CharField(required=True, label='Style',
      help_text='Example: Pale Ale, Stout, etc.')

    helper = FormHelper()
    helper.form_class = 'form-horizontal beer-select'
    helper.layout = Layout(
        Field('beverage_name', css_class='input-xlarge'),
        Field('beverage_id', type='hidden'),
        Field('producer_name', css_class='input-xlarge'),
        Field('producer_id', type='hidden'),
        Field('style_name', css_class='input-xlarge'),
        Field('keg_size', css_class='input-xlarge'),
        Field('initial_volume', css_class='input-volume'),
        FormActions(
            Submit('submit_change_keg_form', 'Activate Keg', css_class='btn-primary'),
        )
    )

    def clean_beverage_name(self):
        beverage_name = self.cleaned_data.get('beverage_name')
        if not beverage_name:
            beverage_name = self.cleaned_data.get('beer_name')
            if not beverage_name:
                raise forms.ValidationError('Must specify a beverage name')
            self.cleaned_data['beverage_name'] = beverage_name
        return beverage_name

    def clean_producer_name(self):
        producer_name = self.cleaned_data.get('producer_name')
        if not producer_name:
            producer_name = self.cleaned_data.get('brewer_name')
            if not producer_name:
                raise forms.ValidationError('Must specify a producer name')
            self.cleaned_data['producer_name'] = producer_name
        return producer_name

    def save(self, tap):
        if not self.is_valid():
            raise ValueError('Form is not valid.')
        b = get_kegbot_backend()

        if tap.is_active():
            b.end_keg(tap.current_keg)

        keg_size = self.cleaned_data.get('keg_size')
        full_volume_ml = self.cleaned_data.get('full_volume_ml')

        if keg_size != 'other':
            full_volume_ml = None
        else:
            full_volume_ml = self.cleaned_data.get('initial_volume')

        # TODO(mikey): Support non-beer beverage types.
        cd = self.cleaned_data
        keg = b.start_keg(tap, beverage_name=cd['beverage_name'], producer_name=cd['producer_name'],
            beverage_type='beer', style_name=cd['style_name'], keg_type=cd['keg_size'],
            full_volume_ml=full_volume_ml)

        if cd.get('description'):
            keg.description = cd['description']
            keg.save()
Exemple #28
0
    def get_form_helper(self, form_tag=True):
        """ Returns the crispy forms form helper to be used. """
        helper = FormHelper()
        helper.form_method = 'post'
        helper.form_tag = form_tag

        button_classes = "btn col mb-4"

        layout_content = []
        if self.can_create:
            layout_content.append(
                Row(
                    Column(
                        HTML(
                            """
                            <a class="%s" href="%s">
                            %s
                            <i class="fa fa-plus" aria-hidden="true"></i>
                            </a>
                            """ %
                            (button_classes + " btn-primary", self.create_object_url,
                             "Skapa ny %s" % self.verbose_name_singular.lower())
                        ),
                    ),
                    Column()
                )
            )

        if self.can_delete or self.can_download:
            row_content = []
            if self.can_download:
                row_content.append(
                    Column(
                        HTML(
                            """
                            <a class="%s" href="%s" type="submit" download>
                                %s
                                <i class="fa fa-download" aria-hidden="true"></i>
                            </a>
                            """ %
                            (button_classes + " btn-success", self.download_url,
                             "Ladda ned %s" % self.verbose_name_plural.lower())
                        ),
                    )
                )
            if self.can_delete:
                row_content.append(
                    Column(
                        HTML(
                            """
                            <button class="%s" name="delete" type="submit">
                                %s
                                <i class="fa fa-trash" aria-hidden="true"></i>
                            </button>
                            """ %
                            (button_classes + " btn-danger", "Radera alla %s" % self.verbose_name_plural.lower())
                        ),
                    )
                )
            if len(row_content) == 1:
                row_content.append(Column())
            layout_content.append(Row(*row_content))

        if self.can_upload:
            layout_content.append(
                Row(
                    Column(
                        'upload_objects_file',
                        HTML(
                            """
                            <script type="text/javascript" id="script-upload_objects_file" src="%s"></script>
                            """ % (static(self.upload_js_file))
                        ),
                        css_class='col-12'
                    ),
                )
            )

        helper.layout = Layout(*layout_content)
        return helper
Exemple #29
0
 def __init__(self, *args, **kwargs):
     super(AuxServerAddressForm, self).__init__(*args, **kwargs)
     for field in self.fields:
         self.fields[field].widget.attrs["autocomplete"] = "chrome-off"
     self.fields["primary"].label = "Make Primary Address"
     self.fields["ip_address"].label = ""
     self.fields["ip_address"].widget.attrs["placeholder"] = "IP Address"
     self.fields["ip_address"].widget.attrs["autocomplete"] = "off"
     self.helper = FormHelper()
     # Disable the <form> tags because this will be inside of an instance of `ClientForm()`
     self.helper.form_tag = False
     # Disable CSRF so `csrfmiddlewaretoken` is not rendered multiple times
     self.helper.disable_csrf = True
     # Hide the field labels from the model
     self.helper.form_show_labels = False
     # Layout the form for Bootstrap
     self.helper.layout = Layout(
         # Wrap form in a div so Django renders form instances in their own element
         Div(
             # These Bootstrap alerts begin hidden and function as undo buttons for deleted forms
             Alert(
                 content=("""
                     <strong>Address Deleted!</strong>
                     Deletion will be permanent once the form is submitted. Click this alert to undo.
                     """),
                 css_class="alert alert-danger show formset-undo-button",
                 style="display:none; cursor:pointer;",
                 template="alert.html",
                 block=False,
                 dismiss=False,
             ),
             Div(
                 HTML("""
                     <p><strong>Address #<span class="counter">{{ forloop.counter }}</span></strong></p>
                     <hr>
                     """),
                 Row(
                     Column("ip_address",
                            css_class="form-group col-md-6 mb-0"),
                     Column(
                         Field(
                             "primary",
                             css_class="primary-checkbox",
                             onchange="checkboxUpdate(this)",
                         ),
                         css_class="form-group col-md-6 mb-0",
                     ),
                     css_class="form-row",
                 ),
                 Row(
                     Column(
                         Field("DELETE", style="display: none;"),
                         Button(
                             "formset-del-button",
                             "Delete Address",
                             css_class=
                             "btn-sm btn-danger formset-del-button",
                         ),
                         css_class="form-group col-md-12 text-center",
                     ),
                     css_class="form-row",
                 ),
                 HTML("""
                     <p class="form-spacer"></p>
                     """),
                 css_class="formset",
             ),
             css_class="formset-container",
         ))
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.helper = FormHelper()
     self.helper.form_show_labels = False