示例#1
0
文件: forms.py 项目: A-S-A-P/Medico
class ReminderForm(forms.Form):
    name = forms.CharField()
    hour = forms.TimeField()
    repeat = forms.IntegerField()
示例#2
0
class QuestionnairePublicationForm(forms.ModelForm):
    """
    Форма для публикации теста.
    """
    open_date = forms.CharField(label=_('Дата начала'), required=False)
    open_time = forms.TimeField(label=_('Время начала'),
                                required=False,
                                localize=True)
    close_date = forms.CharField(label=_('Дата конца'), required=False)
    close_time = forms.TimeField(label=_('Время конца'),
                                 required=False,
                                 localize=True)

    user_id = None

    class Meta:
        model = Questionnaire
        fields = ['groups', 'show_result']
        labels = {
            'groups': _('Группы'),
            'show_result': _('Показать результат пользователю')
        }

    def __init__(self, *args, **kwargs):
        if 'user_id' in kwargs:
            self.user_id = kwargs.pop('user_id')

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

        # инициализация списка групп
        # if self.user_id is not None:
        #    HRUser = get_user_model()
        #    hr_user = HRUser.objects.get(id=self.user_id)
        #    self.fields['groups'].queryset = hr_user.departaments.all()

        # инициализация даты и времени
        if self.instance:
            open_datetime = self.instance.open_datetime
            close_datetime = self.instance.close_datetime

            with QuestionnairePublicationForm.rus_locale():
                pattern_date = '%b %d, %Y'
                pattern_time = '%H:%M'

                if open_datetime is not None:
                    open_datetime = open_datetime.astimezone(
                        timezone.get_current_timezone())
                    self.fields['open_date'].initial = open_datetime.strftime(
                        pattern_date).title()
                    self.fields['open_time'].initial = open_datetime.strftime(
                        pattern_time).title()

                if close_datetime is not None:
                    close_datetime = close_datetime.astimezone(
                        timezone.get_current_timezone())
                    self.fields[
                        'close_date'].initial = close_datetime.strftime(
                            pattern_date).title()
                    self.fields[
                        'close_time'].initial = close_datetime.strftime(
                            pattern_time).title()

    @staticmethod
    @contextmanager
    def rus_locale():
        """
        Устанавливает русскую локаль в контекст.
        """
        saved = locale.setlocale(locale.LC_ALL)
        try:
            yield locale.setlocale(locale.LC_ALL, 'ru_RU')
        finally:
            locale.setlocale(locale.LC_ALL, saved)

    def clean(self):
        """
        Проверяет форму на правильность.
        """
        cleaned_data = super(QuestionnairePublicationForm, self).clean()

        # проверка дат
        pattern = '%b %d, %Y'
        open_date = self.cleaned_data['open_date']
        close_date = self.cleaned_data['close_date']

        # парсинг с локалью
        with QuestionnairePublicationForm.rus_locale():
            # парсинг начала
            if open_date:
                try:
                    open_date = datetime.strptime(open_date, pattern)
                except ValueError:
                    raise ValidationError(
                        _('Не правильный формат даты: ') + open_date)

            # парсинг конца
            if close_date:
                try:
                    close_date = datetime.strptime(close_date, pattern)
                except ValueError:
                    raise ValidationError(
                        _('Не правильный формат даты: ') + close_date)

        if open_date and close_date and open_date > close_date:
            raise ValidationError(_('Дата начала позже даты конца'))

        open_date = open_date if open_date else None
        close_date = close_date if close_date else None

        open_time = self.cleaned_data['open_time']
        close_time = self.cleaned_data['close_time']

        # дата и время
        if (open_date is None) ^ (open_time is None):
            raise ValidationError(
                _('Дата и время начала заполнены не до конца'))
        else:
            # заполнена дата начала
            if open_date is None and open_time is None:
                open_datetime = None
            else:
                open_datetime = datetime.combine(open_date, open_time)

        if (close_date is None) ^ (close_time is None):
            raise ValidationError(
                _('Дата и время конца заполнены не до конца'))
        else:
            # заполнена дата конца
            if close_date is None and close_time is None:
                close_datetime = None
            else:
                close_datetime = datetime.combine(close_date, close_time)

        if open_datetime is not None and close_datetime is not None and open_datetime >= close_datetime:
            raise ValidationError(
                _('Время и дата начала позже времени и даты конца или совпадает'
                  ))

        self.cleaned_data['open_datetime_clean'] = open_datetime
        self.cleaned_data['close_datetime_clean'] = close_datetime

    def save(self, commit=True):
        """
        Сохраняет данные в БД.
        """
        questionnaire = super(QuestionnairePublicationForm,
                              self).save(commit=False)

        open_datetime = self.cleaned_data['open_datetime_clean']
        close_datetime = self.cleaned_data['close_datetime_clean']

        questionnaire.open_datetime = open_datetime
        questionnaire.close_datetime = close_datetime

        if commit:
            questionnaire.save()

        return questionnaire
示例#3
0
文件: admin.py 项目: keizir/strainrx
class BusinessLocationAdminForm(forms.ModelForm):
    class Meta:
        model = BusinessLocation
        fields = '__all__'

    about = forms.Textarea()
    location_field = forms.CharField(max_length=255)

    mon_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    mon_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)
    tue_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    tue_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)
    wed_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    wed_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)
    thu_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    thu_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)
    fri_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    fri_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)
    sat_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    sat_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)
    sun_open = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                               input_formats=('%I:%M %p', ),
                               required=False)
    sun_close = forms.TimeField(widget=AdminTimeWidget(format='%I:%M %p'),
                                input_formats=('%I:%M %p', ),
                                required=False)

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

        self.fields['location_email'].required = True
        self.fields['phone'].required = True
        self.fields['location_field'].required = False
class BookingForm(forms.Form):

    doctorText = forms.CharField()
    date = forms.DateField(initial = datetime.date.today)
    date.widget.attrs = 
    time = forms.TimeField()
示例#5
0
class AddSchedule(forms.Form):
    """
    The form is used to placement or pbi schedule.
    @variables:
            time - time of placement activity
            ctc - salary
            company_name - name of company
            placement_type - placement type (placement/pbi)
            location - location of company
            description - description of company
            placement_date - date of placement activity
    """
    time = forms.TimeField(
        label='time',
        widget=forms.widgets.TimeInput(attrs={
            'type': "time",
            'value': "00:00",
            'min': "0:00",
            'max': "24:00"
        }))
    ctc = forms.DecimalField(label="ctc",
                             widget=forms.NumberInput(attrs={
                                 'min': 0,
                                 'step': 0.25
                             }))
    company_name = forms.CharField(widget=forms.TextInput(
        attrs={
            'max_length': 100,
            'class': 'field',
            'list': 'company_dropdown1',
            'id': 'company_input'
        }),
                                   label="company_name")
    placement_type = forms.ChoiceField(
        widget=forms.Select(attrs={'style': "height:45px"}),
        label="placement_type",
        choices=Constants.PLACEMENT_TYPE)
    location = forms.CharField(widget=forms.TextInput(attrs={
        'max_length': 100,
        'class': 'field'
    }),
                               label="location")
    description = forms.CharField(widget=forms.Textarea(attrs={
        'max_length': 1000,
        'class': 'form-control'
    }),
                                  label="description",
                                  required=False)
    attached_file = forms.FileField(required=False)
    placement_date = forms.DateField(
        label='placement_date',
        widget=forms.DateInput(attrs={'class': 'datepicker'}))

    def clean_ctc(self):
        ctc = self.cleaned_data['ctc']
        # print('form validation \n\n\n\n', ctc)
        if ctc <= 0:
            raise forms.ValidationError("CTC must be positive value")

        return ctc

    def clean_company_name(self):
        company_name = self.cleaned_data['company_name']
        # print('form validation \n\n\n\n', ctc)
        if NotifyStudent.objects.filter(company_name=company_name):
            raise forms.ValidationError("company_name must be unique")

        return company_name
示例#6
0
class InserirNovaOrdemForm(forms.ModelForm):
    cliente = forms.ModelChoiceField(
        label='Cliente',
        queryset=models.NovoCliente.objects.all(),
        widget=forms.Select(attrs={
            'class': 'form-control',
            'placeholder': 'Cliente'
        }))

    tipoDeAtendimento = forms.ChoiceField(
        label='Tipo de atendimento',
        choices=STATUS_ATENDIMENTO,
        widget=forms.Select(attrs={
            'class': 'form-control',
            'placeholder': 'Tipo de Atendimento'
        }))

    responsavel = forms.CharField(
        label='Responsavel',
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Responsavel'
        }))

    analista = forms.CharField(
        label='Analista',
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Analista'
        }))

    solicitante = forms.CharField(
        label='Solicitante',
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Solicitante'
        }))

    dataAtendimento = forms.DateField(
        label='Data de atendimento',
        widget=forms.DateInput(attrs={
            'class': 'form-control',
            'placeholder': 'Data de atendimento'
        }))

    hora_entrada = forms.TimeField(
        label='Hora de entrada',
        widget=forms.TimeInput(attrs={
            'class': 'form-control',
            'placeholder': 'Hora de entrada'
        }))

    hora_saida = forms.TimeField(
        label='Hora de saida',
        widget=forms.TimeInput(attrs={
            'class': 'form-control',
            'placeholder': 'Hora de saida'
        }))

    translado = forms.CharField(
        label='Translado',
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Translado'
        }))

    descritivo = forms.CharField(
        label='Descritivo',
        widget=forms.Textarea(attrs={
            'class': 'form-control',
            'placeholder': 'Descritivo'
        }))

    class Meta:
        model = models.OrdemServico
        exclude = ['usuario']
        fields = [
            'cliente', 'tipoDeAtendimento', 'responsavel', 'analista',
            'solicitante', 'dataAtendimento', 'hora_entrada', 'hora_saida',
            'translado', 'descritivo'
        ]
class TimeFieldForm(forms.Form):
    """Test form for TimePicker widget."""
    time_field = forms.TimeField(widget=TimePicker)
示例#8
0
class UsualForm(forms.Form):
    """по умолчанию эти две настройки (почти) нормально работают только в .as_table()
    но если форму вывожу в шаблон поэлементно - то в нужном месте можно вставить
    item.css_classes и тогда в этом месте будут классы в соответсвии с этими настройками"""
    error_css_class = "error123"  # работает в контейнере
    required_css_class = "field123"  # работает в элементе

    booleanfield = forms.BooleanField(required=False, label="BooleanField")
    charfield = forms.CharField(
        max_length=5,
        label="CharField",
        required=True,
        widget=forms.TextInput(attrs={'class': 'anna'}))

    YEAR_IN_SCHOOL_CHOICES = [
        ('FR', 'Freshman'),
        ('SO', 'Sophomore'),
        ('JR', 'Junior'),
        ('SR', 'Senior'),
        ('GR', 'Graduate'),
    ]
    choicefield = forms.ChoiceField(choices=YEAR_IN_SCHOOL_CHOICES,
                                    label="ChoiceField")

    typedchoicefield = forms.TypedChoiceField(choices=YEAR_IN_SCHOOL_CHOICES,
                                              coerce=str,
                                              label="TypedChoiceField")
    datefield = forms.DateField(initial=timezone.now, label="DateField")
    datetimefield = forms.DateTimeField(initial=timezone.now,
                                        label="DateTimeField")
    decimalfield = forms.DecimalField(
        required=True,
        max_digits=4,
        decimal_places=2,
        label='DecimalField',
        error_messages={'max_digits': 'Слишком много цифр!'})
    durationfield = forms.DurationField(required=False, label="")
    emailfield = forms.EmailField(required=False, label="DurationField")
    # filefield = forms.FileField(label="FileField")
    # filepathfield = forms.FilePathField(label="FilePathField")
    floatfield = forms.FloatField(required=False, label="FloatField")
    # imagefield = forms.ImageField(label="ImageField")
    integerfield = forms.IntegerField(required=False, label="IntegerField")
    genericipaddresfield = forms.GenericIPAddressField(
        required=False, label="GenericIPAddressField")
    multiplechoicefield = forms.MultipleChoiceField(
        choices=YEAR_IN_SCHOOL_CHOICES,
        required=False,
        label="MultipleChoiceField")
    typedmultiplechoicefield = forms.TypedMultipleChoiceField(
        choices=YEAR_IN_SCHOOL_CHOICES,
        required=False,
        coerce=str,
        label="TypedMultipleChoiceField")
    nullbooleanfield = forms.NullBooleanField(label="NullBooleanField")
    # regexfield = forms.RegexField(label="RegexField")
    slugfield = forms.SlugField(required=False,
                                allow_unicode=True,
                                label="SlugField")
    timefield = forms.TimeField(initial=timezone.now, label="TimeField")
    urlfield = forms.URLField(required=False, label="URLField")
    uuidfield = forms.UUIDField(required=False, label="UUIDField")

    # Достаточно сложные встроенные классы Field
    combofield = forms.ComboField(
        help_text='валидируется по нескольким полям',
        required=False,
        label="ComboField",
        fields=[forms.CharField(max_length=10),
                forms.EmailField()])
    # multivaluefield = forms.MultiValueField(label="MultiValueField")

    splitdatetimefield = forms.SplitDateTimeField(initial=timezone.now,
                                                  label="SplitDateTimeField")
示例#9
0
class MultipleOccurrenceForm(forms.Form):
    """
    Complex occurrences form
    """

    # frequency
    ## hour
    starting_hour = forms.TimeField(label='Horaire de début',
                                    initial='14:00',
                                    widget=TimeWidget(options={
                                        'pickerPosition': 'top-left',
                                        'minuteStep': 15,
                                    },
                                                      bootstrap_version=3))

    ending_hour = forms.TimeField(required=True,
                                  label='Horaire de fin',
                                  initial='22:30',
                                  widget=TimeWidget(options={
                                      'pickerPosition': 'top-left',
                                      'minuteStep': 15,
                                  },
                                                    bootstrap_version=3))

    ## date options
    start_day = forms.DateField(required=True,
                                label='A partir du',
                                initial=date.today,
                                widget=DateWidget(options={
                                    'todayHighlight': True,
                                    'weekStart': 1,
                                    'pickerPosition': 'top-left'
                                },
                                                  usel10n=True,
                                                  bootstrap_version=3))

    end_day = forms.DateField(required=True,
                              label='Jusqu\'au',
                              initial=date(date.today().year, 12, 31),
                              widget=DateWidget(options={
                                  'todayHighlight': True,
                                  'weekStart': 1,
                                  'pickerPosition': 'top-left'
                              },
                                                usel10n=True,
                                                bootstrap_version=3))

    ### weekly options
    week_days = MultipleIntegerField(WEEKDAY_LONG,
                                     label='Jours de la semaine',
                                     widget=forms.CheckboxSelectMultiple)

    # ---------------------------------------------------------------------------
    def __init__(self, *args, **kws):
        """
        :param args:
        :param kws:
        :return: prefilling widget with current time. (not ultra useful)
        """
        super(MultipleOccurrenceForm, self).__init__(*args, **kws)
        dtstart = self.initial.get('dtstart', None)
        if dtstart:
            dtstart = dtstart.replace(
                minute=((dtstart.minute // MINUTES_INTERVAL) *
                        MINUTES_INTERVAL),
                second=0,
                microsecond=0)

            self.initial.setdefault('start_day', dtstart)
            self.initial.setdefault('week_days', '%d' % dtstart.isoweekday())

    # ---------------------------------------------------------------------------
    def clean(self):
        cleaned_data = super(MultipleOccurrenceForm, self).clean()
        starting_hour = cleaned_data['starting_hour']
        ending_hour = cleaned_data['ending_hour']
        start_day = cleaned_data['start_day']
        end_day = cleaned_data['end_day']

        if starting_hour and ending_hour:
            if starting_hour > ending_hour:
                raise forms.ValidationError(
                    "Verifier que les heures correspondent")

        if start_day and end_day:
            if start_day > end_day or start_day < date.today():
                raise forms.ValidationError(
                    "Verifier que les dates correspondent")
            # pas de test si un événement est créé aujourd'hui mais à une heure déjà passée

        self.cleaned_data['first_day_start_time'] = datetime.combine(
            start_day, starting_hour)
        self.cleaned_data['first_day_end_time'] = datetime.combine(
            start_day, ending_hour)

        return self.cleaned_data

    # ---------------------------------------------------------------------------
    def save(self, event):

        params = self._build_rrule_params()

        event.add_occurrences(self.cleaned_data['first_day_start_time'],
                              self.cleaned_data['first_day_end_time'],
                              is_multiple=True,
                              **params)

        return event

    # ---------------------------------------------------------------------------
    def _build_rrule_params(self):

        data = self.cleaned_data
        params = dict(
            until=data['end_day'],
            byweekday=data['week_days'],
            interval=1,
            freq=rrule.WEEKLY,
        )

        return params
示例#10
0
class EventsForm(forms.ModelForm):
    eventid = forms.CharField(
        max_length=15,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Event id"
        }))
    eventdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "event date"
        }))
    eventtime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "event date"
        }))
    username = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "User Name"
        }))
    category = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Category"
        }))
    doorname = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Door Name"
        }))
    cardnumber = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card Number"
        }))
    event = forms.CharField(max_length=25,
                            required=False,
                            widget=forms.TextInput(attrs={
                                "class": "form-control",
                                'placeholder': "Event"
                            }))
    action = forms.CharField(max_length=25,
                             required=False,
                             widget=forms.TextInput(attrs={
                                 "class": "form-control",
                                 'placeholder': "Action"
                             }))
    zonename = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Action"
        }))

    class Meta:
        model = Events
        exclude = ['search_string']

    def save(self, commit=True):
        event = super(EventsForm, self).save(commit=False)
        event.search_string = event.eventid + " " + event.username + " " + event.category + " " + event.doorname
        event.save()
        return event
示例#11
0
class ControllersForm(forms.ModelForm):
    controller_name = forms.CharField(
        max_length=25,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Controller Name"
        }))
    controllerid = forms.CharField(
        max_length=15,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Controller ID"
        }))
    ipaddress = forms.CharField(
        max_length=15,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "IP Address"
        }))
    serial_number = forms.CharField(
        max_length=15,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Serial Number"
        }))
    name = forms.CharField(max_length=15,
                           required=False,
                           widget=forms.TextInput(attrs={
                               "class": "form-control",
                               'placeholder': "Name"
                           }))
    doorcurrentstatus = forms.CharField(
        max_length=15,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Door Current Status"
        }))
    doorlastopeneddate = forms.DateField(
        required=False,
        widget=forms.DateInput(
            attrs={
                "class": "form-control datepicker",
                'placeholder': "Door last oppened date"
            }))
    doorlastopenedtime = forms.TimeField(
        required=False,
        widget=forms.TextInput(
            attrs={
                "class": "form-control timepicker",
                'placeholder': "Door last oppened time"
            }))
    doorlastcloseddate = forms.DateField(
        required=False,
        widget=forms.DateInput(
            attrs={
                "class": "form-control datepicker",
                'placeholder': "Door last closed date"
            }))
    doorlastclosedtime = forms.TimeField(
        required=False,
        widget=forms.TextInput(
            attrs={
                "class": "form-control timepicker",
                'placeholder': "Door last closed time"
            }))

    card_1_name = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card 1 name"
        }))
    card_1_type = forms.ChoiceField(
        choices=alarm_input_choices,
        widget=forms.Select(attrs={"class": "form-control"}))
    card_1_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Card 1 last date"
        }))
    card_1_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Card 1 last time"
        }))
    card_1_lastuser = forms.CharField(
        max_length=30,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card 1 last user"
        }))
    card_1_lastcard = forms.CharField(
        max_length=15,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card 1 last card"
        }))

    card_2_name = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card 2 name"
        }))
    card_2_type = forms.ChoiceField(
        choices=alarm_input_choices,
        widget=forms.Select(attrs={"class": "form-control"}))
    card_2_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Card 2 last date"
        }))
    card_2_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Card 2 last time"
        }))
    card_2_lastuser = forms.CharField(
        max_length=30,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card 2 last user"
        }))
    card_2_lastcard = forms.CharField(
        max_length=15,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Card 2 last card"
        }))

    input_1_name = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 1 name"
        }))
    input_1_type = forms.ChoiceField(
        choices=alarm_input_choices,
        widget=forms.Select(attrs={"class": "form-control"}))
    input_1_status = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 1 status"
        }))
    input_1_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Input 1 last date"
        }))
    input_1_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Input 1 last time"
        }))
    input_1_laststate = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 1 laststate"
        }))

    input_2_name = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 2 name"
        }))
    input_2_type = forms.ChoiceField(
        choices=alarm_input_choices,
        widget=forms.Select(attrs={"class": "form-control"}))
    input_2_status = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 2 status"
        }))
    input_2_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Input 2 last date"
        }))
    input_2_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Input 2 last time"
        }))
    input_2_laststate = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 2 laststate"
        }))

    input_3_name = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 3 name"
        }))
    input_3_type = forms.ChoiceField(
        choices=alarm_input_choices,
        widget=forms.Select(attrs={"class": "form-control"}))
    input_3_status = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 3 status"
        }))
    input_3_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Input 3 last date"
        }))
    input_3_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Input 3 last time"
        }))
    input_3_laststate = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 3 laststate"
        }))

    input_4_name = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 4 name"
        }))
    input_4_type = forms.ChoiceField(
        choices=alarm_input_choices,
        widget=forms.Select(attrs={"class": "form-control"}))
    input_4_status = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 4 status"
        }))
    input_4_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Input 4 last date"
        }))
    input_4_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Input 4 last time"
        }))
    input_4_laststate = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': "Input 4 laststate"
        }))

    controller_alarm_laststate = forms.CharField(
        max_length=25,
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control",
            'placeholder': 'Controller Alarm Last State'
        }))
    controller_alarm_lastdate = forms.DateField(
        required=False,
        widget=forms.DateInput(attrs={
            "class": "form-control datepicker",
            'placeholder': "Date Last Tripped"
        }))
    controller_alarm_lasttime = forms.TimeField(
        required=False,
        widget=forms.TextInput(attrs={
            "class": "form-control timepicker",
            'placeholder': "Time Last Tripped"
        }))

    class Meta:
        model = Controllers
        exclude = ['search_string']

    def save(self, commit=True):
        controller = super(ControllersForm, self).save(commit=False)
        controller.search_string = controller.controller_name + " " + controller.card_1_name + " " + controller.card_1_type + " " + controller.card_2_name + " " + controller.card_2_type + " " + controller.input_1_name + " " + controller.input_1_type + " " + controller.input_2_name + " " + controller.input_2_type + " " + controller.input_3_name + " " + controller.input_3_type + " " + controller.input_3_name + " " + controller.input_4_type + " " + controller.input_4_name
        controller.save()
        return controller
示例#12
0
class HappyHourForm(forms.ModelForm):
    weekdays = WeekdayField()
    from_hour = forms.TimeField()
    to_hour = forms.TimeField()

    class Meta:
        model = HappyHour
        exclude = ("shops", )

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop("request")
        self.shop = get_shop(self.request)
        super(HappyHourForm, self).__init__(*args, **kwargs)

        if self.instance.pk:
            self.fields["discounts"] = Select2MultipleField(
                label=_("Product Discounts"),
                help_text=_("Select discounts for this happy hour."),
                model=Discount,
                required=False)
            initial_discounts = (self.instance.discounts.all()
                                 if self.instance.pk else [])
            self.fields["discounts"].initial = initial_discounts
            self.fields["discounts"].widget.choices = [
                (discount.pk, force_text(discount))
                for discount in initial_discounts
            ]

        if self.instance.pk:
            weekdays, from_hour, to_hour = _get_initial_data_for_time_ranges(
                self.instance)
            if weekdays and from_hour and to_hour:
                self.fields["weekdays"].initial = weekdays
                self.fields["from_hour"].initial = from_hour
                self.fields["to_hour"].initial = to_hour

        # Since we touch these views in init we need to reset some
        # widgets and help texts after setting the initial values.
        self.fields["from_hour"].widget = TimeInput()
        self.fields["to_hour"].widget = TimeInput()
        help_texts = [
            ("from_hour",
             _("12pm is considered noon and 12am as midnight. Start hour is included to the discount."
               )),
            ("to_hour",
             _("12pm is considered noon and 12am as midnight. End hours is included to the discount."
               )), ("weekdays", _("Weekdays the happy hour is active."))
        ]
        for field, help_text in help_texts:
            self.fields[field].help_text = help_text

    def save(self, commit=True):
        with transaction.atomic():
            instance = super(HappyHourForm, self).save(commit)
            instance.shops = [self.shop]

            data = self.cleaned_data
            if "discounts" in self.fields:
                data = self.cleaned_data
                discount_ids = data.get("discounts", [])
                instance.discounts = Discount.objects.filter(
                    shops=self.shop, id__in=discount_ids)

            instance.time_ranges.all().delete()

            weekdays = data["weekdays"]
            from_hour = data["from_hour"]
            to_hour = data["to_hour"]
            _create_time_ranges_from_data(instance, weekdays, from_hour,
                                          to_hour)

        return instance
示例#13
0
class ExtractForm(forms.Form):

    valid_from_date = forms.DateField(
        required=False,
        label="date from",
        help_text="The date configuration is valid from.",
        widget=forms.widgets.DateInput(
            attrs={
                "type": "date",
                "class": "form-control",
                "aria-describedby": "date-from-help",
            }),
    )

    valid_from_time = forms.TimeField(
        required=False,
        label="time from",
        # initial="00:00:00",
        help_text=
        "The time configuration is valid from. If not provided, will be set to 00:00",
        widget=forms.widgets.TimeInput(
            attrs={
                "type": "time",
                "class": "form-control",
                "aria-describedby": "time-from-help",
            }),
    )

    valid_to_date = forms.DateField(
        required=False,
        label="date to",
        help_text="The date configuration is valid to.",
        widget=forms.widgets.DateInput(
            attrs={
                "type": "date",
                "class": "form-control",
                "aria-describedby": "date-to-help",
            }),
    )

    valid_to_time = forms.TimeField(
        required=False,
        label="time to",
        # initial="00:00:00",
        help_text=
        "The time configuration is valid to. If not provided, will be set to 23:59",
        widget=forms.widgets.TimeInput(
            attrs={
                "type": "time",
                "class": "form-control",
                "aria-describedby": "time-to-help",
            }),
    )

    version = forms.IntegerField(
        required=False,
        label="version",
        help_text="The version of the configuration.",
        initial=1,
        min_value=1,
        widget=forms.widgets.NumberInput(
            attrs={
                "type": "number",
                "class": "form-control",
                "aria-describedby": "version-help",
            }),
    )

    run = forms.IntegerField(
        required=False,
        label="run id",
        help_text="The run id to extract validity dates from",
        min_value=0,
        widget=forms.widgets.NumberInput(
            attrs={
                "type": "number",
                "class": "form-control",
                "aria-describedby": "run-help",
            }),
    )

    filename = forms.CharField(
        required=False,
        label="run file name",
        help_text="The name of run file to extract validity dates from",
        widget=forms.widgets.TextInput(
            attrs={
                "type": "text",
                "class": "form-control",
                "aria-describedby": "filename-help",
            }),
    )

    SEARCH_CHOICES = (("dates", "dates"), ("runs", "runs"))

    search_option = forms.ChoiceField(
        required=True,
        choices=SEARCH_CHOICES,
        widget=forms.widgets.RadioSelect(attrs={
            "type": "radio",
        }),
    )

    def clean(self):
        cleaned_data = super(ExtractForm, self).clean()

        valid_from_date = cleaned_data.get("valid_from_date")
        valid_from_time = cleaned_data.get("valid_from_time")
        valid_to_date = cleaned_data.get("valid_to_date")
        valid_to_time = cleaned_data.get("valid_to_time")

        search_dates = cleaned_data.get("search_option") == "dates"
        search_runs = not search_dates

        if search_dates and valid_from_time and not valid_from_date:
            raise ValidationError(
                "The date the configuration is valid from is required if the relevant time is specified."
            )

        if search_dates and valid_to_time and not valid_to_date:
            raise ValidationError(
                "The date the configuration is valid to is required if the relevant time is specified."
            )

        if search_dates and ((valid_from_date and not valid_to_date) or
                             (valid_to_date and not valid_from_date)):
            raise ValidationError(
                "If any of the validity dates is specified, then another one must be given too."
            )

        if search_dates and valid_from_date and valid_to_date:
            if valid_from_time:
                self.cleaned_data["valid_from"] = datetime.datetime.combine(
                    valid_from_date, valid_from_time)
            else:
                self.cleaned_data["valid_from"] = datetime.datetime.combine(
                    valid_from_date, time(hour=0, minute=0, second=0))

            if valid_to_time:
                self.cleaned_data["valid_to"] = datetime.datetime.combine(
                    valid_to_date, valid_to_time)
            else:
                self.cleaned_data["valid_to"] = datetime.datetime.combine(
                    valid_to_date, time(hour=23, minute=59, second=59))

            return self.cleaned_data

        elif search_runs:
            run = cleaned_data.get("run")
            filename = cleaned_data.get("filename")
            if not run and not filename:
                raise ValidationError(
                    "Either run id or filename must be specified if the validity dates are omitted."
                )

            return self.cleaned_data

        raise ValidationError("No valid search options were provided.")
示例#14
0
class EstacionamientoExtendedForm(forms.Form):
    def clean(self):

        cleaned_data = super(EstacionamientoExtendedForm, self).clean()
        puestosLivianos = cleaned_data.get("puestosLivianos")
        puestosPesados = cleaned_data.get("puestosPesados")
        puestosMotos = cleaned_data.get("puestosMotos")

        if puestosLivianos and puestosPesados and puestosMotos:

            # Only do something if both fields are valid so far.
            if (puestosLivianos + puestosPesados + puestosMotos <= 0):

                raise forms.ValidationError(
                    "Debe haber al menos un puesto en el estacionamiento")

    puestosLivianos = forms.IntegerField(
        required=True,
        min_value=0,
        label='Número de Puestos',
        widget=forms.NumberInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Número de Puestos livianos',
                'min': "0",
                'pattern': '^[0-9]+',
                'message': 'La entrada debe ser un número entero no negativo.'
            }))

    puestosPesados = forms.IntegerField(
        required=True,
        min_value=0,
        label='Número de Puestos',
        widget=forms.NumberInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Número de Puestos pesados',
                'min': "0",
                'pattern': '^[0-9]+',
                'message': 'La entrada debe ser un número entero no negativo.'
            }))

    puestosMotos = forms.IntegerField(
        required=True,
        min_value=0,
        label='Número de Puestos para Motos',
        widget=forms.NumberInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Número de Puestos Motos',
                'min': "0",
                'pattern': '^[0-9]+',
                'message': 'La entrada debe ser un número entero no negativo.'
            }))

    puestosDiscapacitados = forms.IntegerField(
        required=True,
        min_value=0,
        label='Número de Puestos para Discapacitados',
        widget=forms.NumberInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Número de Puestos Discapacitados',
                'min': "0",
                'pattern': '^[0-9]+',
                'message': 'La entrada debe ser un número entero no negativo.'
            }))

    horarioin = forms.TimeField(
        required=True,
        label='Horario Apertura',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horario Apertura',
                'pattern': '^([0-1]?[0-9]|2[0-3]):[0-5][0-9]',
                'message': 'La entrada debe ser una hora válida.'
            }))

    horarioout = forms.TimeField(
        required=True,
        label='Horario Cierre',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horario Cierre',
                'pattern': '^([0-1]?[0-9]|2[0-3]):[0-5][0-9]',
                'message': 'La entrada debe ser una hora válida.'
            }))

    choices_esquema = [('TarifaHora', 'Por hora'),
                       ('TarifaMinuto', 'Por minuto'),
                       ('TarifaHorayFraccion', 'Por hora y fracción'),
                       ('TarifaHoraPico', 'Diferenciada por horario pico'),
                       ('TarifaFinDeSemana',
                        'Diferenciada para fines de semana')]

    esquema = forms.ChoiceField(
        required=True,
        choices=choices_esquema,
        widget=forms.Select(attrs={'class': 'form-control'}))

    #Inicio de la hora pico, día no feriado
    inicioTarifa2 = forms.TimeField(
        required=False,
        label='Inicio Horario Especial',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horario Pico Inicio',
                'pattern': '^([0-1]?[0-9]|2[0-3]):[0-5][0-9]',
                'message': 'La entrada debe ser una hora válida.'
            }))

    #Fin de la hora pico, día no feriado
    finTarifa2 = forms.TimeField(
        required=False,
        label='Fin Horario Especial',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horario Pico Fin ',
                'pattern': '^([0-1]?[0-9]|2[0-3]):[0-5][0-9]',
                'message': 'La entrada debe ser una hora válida.'
            }))

    choices_esquema_feriado = [
        ('TarifaHora', 'Por hora en los Dias feriado'),
        ('TarifaMinuto', 'Por minuto en los Dias feriado'),
        ('TarifaHorayFraccion', 'Por hora y fracción en los Dias feriado'),
        ('TarifaHoraPico',
         'Diferenciada por horario pico en los Dias feriado'),
        ('TarifaFinDeSemana',
         'Diferenciada para fines de semana en los Dias feriado')
    ]

    esquemaFeriado = forms.ChoiceField(
        required=True,
        choices=choices_esquema_feriado,
        widget=forms.Select(attrs={'class': 'form-control'}))

    #Inicio de la hora pico, día feriado
    inicioTarifaFeriado2 = forms.TimeField(
        required=False,
        label='Inicio Horario Especial',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horario Pico Inicio para los Dias Feriados',
                'pattern': '^([0-1]?[0-9]|2[0-3]):[0-5][0-9]',
                'message': 'La entrada debe ser una hora válida.'
            }))

    #Fin de la hora pico, día no feriado
    finTarifaFeriado2 = forms.TimeField(
        required=False,
        label='Fin Horario Especial',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horario Pico Fin para los Dias Feriados',
                'pattern': '^([0-1]?[0-9]|2[0-3]):[0-5][0-9]',
                'message': 'La entrada debe ser una hora válida.'
            }))

    horizonte = forms.IntegerField(
        required=True,
        label="Horizonte de reservacion",
        widget=forms.NumberInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Horizonte',
                'min': "1",
                'max': "999",
                'pattern': '^[0-9]+',
                'message': 'La entrada debe ser un número entero no negativo.'
            }))

    choices_frontera = [
        ('PrecioTarifaMasTiempo',
         'Cálculo de la frontera por tarifa con más tiempo'),
        ('PrecioTarifaMasCara',
         'Cálculo de la frontera usando la tarifa más cara'),
        ('PrecioProporcional',
         'Cálculo de la frontera de manera proporcional'),
    ]

    fronteraTarifa = forms.ChoiceField(
        required=True,
        choices=choices_frontera,
        widget=forms.Select(attrs={'class': 'form-control'}))
示例#15
0
class WeatherMeasurementForm(forms.Form):
    """
    Form to download weather measurements
    """
    def __init__(self, *args, **kwargs):
        super(WeatherMeasurementForm, self).__init__(*args, **kwargs)
        if MeasuringDevice.objects.filter(
                type='S').exists() & WeatherMeasurement.objects.exists():

            firstdate = WeatherMeasurement.objects.values_list(
                'date', flat=True).order_by('date').first()
            self.fields['start_date_weather'].initial = firstdate
            self.fields['end_date_weather'].initial = date.today()

            measuring_device_values = [
                (device.id, device)
                for device in MeasuringDevice.objects.all()
                if device.type == 'S'
            ]
            self.fields[
                'measuring_device_weather'].choices = measuring_device_values
            self.fields['measuring_device_weather'].initial = [
                c[0] for c in measuring_device_values
            ]

    YEARS = range(date.today().year - 10, date.today().year + 1)
    start_date_weather = forms.DateField(label='Start date',
                                         widget=SelectDateWidget(years=YEARS))
    end_date_weather = forms.DateField(label='End date',
                                       widget=SelectDateWidget(years=YEARS))

    start_time_weather = forms.TimeField(label='Start time',
                                         widget=SelectTimeWidget(),
                                         initial=time(0, 0, 0, 0))
    end_time_weather = forms.TimeField(label='End time',
                                       widget=SelectTimeWidget(),
                                       initial=time(23, 59, 59))

    measuring_device_weather = forms.ChoiceField(label='Device')

    fields_values = [('temperature', 'Temperature (C)'),
                     ('humidity', 'Humidity (%)'),
                     ('dew_point', 'Dew point (C)'),
                     ('wind_speed', 'Wind speed (m/s)'),
                     ('wind_direction', 'Wind direction (deg)'),
                     ('pressure', 'Pressure (hPa)'),
                     ('rainfall_rate', 'Rainfall rate (mm/hr)'),
                     ('solar_radiation', 'Solar radiation (W/m2)'),
                     ('uv_index', 'UV Index')]
    fields_weather = forms.MultipleChoiceField(
        fields_values,
        label='Fields',
        widget=ColumnCheckboxSelectMultiple(columns=1,
                                            css_class="inner-table-1"),
        initial=[c[0] for c in fields_values])

    def clean(self):
        """
        Adding check on the dates and the number of rows to the data cleaning
        """

        cleaned_data = super(WeatherMeasurementForm, self).clean()

        start_date = cleaned_data.get("start_date_weather")
        end_date = cleaned_data.get("end_date_weather")
        start_time = cleaned_data.get("start_time_weather")
        end_time = cleaned_data.get("end_time_weather")
        measuring_device = cleaned_data.get("measuring_device_weather")

        err = False
        if start_date is not None and end_date is not None and start_time is not None and end_time is not None:
            if end_date < start_date:
                err = True
                raise forms.ValidationError(
                    "End date must be after start date.")
            if end_time < start_time:
                err = True
                raise forms.ValidationError(
                    "End time must be after start time.")
        else:
            err = True

        if not err:
            nbRes = WeatherMeasurement.objects.filter(
                date__gte=start_date,
                date__lte=end_date,
                time__gte=start_time,
                time__lte=end_time,
                device__in=measuring_device).count()
            if nbRes < 1:
                raise forms.ValidationError("No entry in the database.")

            if nbRes > 50000:
                raise forms.ValidationError(
                    "Max. number of entries (50'000) reached.")

        return cleaned_data
示例#16
0
class MultipleDateSingleOccurrenceForm(forms.Form):
    """
    A simple form for adding and updating single Occurrence attributes
    # put request to true

    """
    # ==========================================================================
    date = forms.DateField(
        required=True,
        #initial=date.today,
        label='Date',
        widget=DateWidget(options={
            'todayHighlight': True,
            'weekStart': 1,
            'pickerPosition': 'top-left'
        },
                          usel10n=True,
                          bootstrap_version=3))

    start_time = forms.TimeField(
        required=True,
        #initial='14:00',
        label='Horaire de début',
        widget=TimeWidget(options={
            'pickerPosition': 'top-left',
            'minuteStep': 15,
        },
                          bootstrap_version=3))

    end_time = forms.TimeField(
        required=True,
        #initial='22:30',
        label='Horaire de fin',
        widget=TimeWidget(options={
            'pickerPosition': 'top-left',
            'minuteStep': 15,
        },
                          bootstrap_version=3))

    def clean(self):
        """
        :return: validation error if start_time or end_time in the past
        concatenate date and hour to give start and end datetime
        """
        cleaned_data = super(MultipleDateSingleOccurrenceForm, self).clean()
        start_time = datetime.combine(cleaned_data.get('date'),
                                      cleaned_data.get('start_time'))
        now = datetime.now()

        if start_time < now:
            raise forms.ValidationError("Verifier que la date correspond")

        if cleaned_data.get('end_time') is not None:
            end_time = datetime.combine(cleaned_data.get('date'),
                                        cleaned_data.get('end_time'))
            if start_time > end_time or end_time < now:
                raise forms.ValidationError(
                    "Verifier que les heures correspondent")

        return self.cleaned_data

    def save(self, event):
        """
        :param event:
        :return: end_time = start_time + 1h if end_time is None
        """
        start_time = datetime.combine(self.cleaned_data.get('date'),
                                      self.cleaned_data.get('start_time'))

        if self.cleaned_data.get('end_time') is not None:
            end_time = datetime.combine(self.cleaned_data.get('date'),
                                        self.cleaned_data.get('end_time'))
        else:
            end_time = start_time + timedelta(hours=1)

        event.add_occurrences(
            start_time,
            end_time,
            is_multiple=False,
        )

        return event
示例#17
0
    def __init__(self, last_added, *args, **kwargs):
        super(EditAddedDatesForm, self).__init__(*args, **kwargs)
        i = 1
        for date in last_added:
            self.fields['id_%s' % i] = forms.CharField(
                label="Id",
                initial=date.id,
                widget=forms.TextInput(
                    attrs={
                        'readonly': 'True',
                        'hidden': 'hidden',
                        'class': 'edit_dates_field_id'
                    }))
            self.fields['date_%s' % i] = forms.DateField(
                label="Data",
                initial=date.date,
                input_formats='%Y-%m-%d',
                widget=forms.DateInput(attrs={
                    'readonly': 'True',
                    'class': 'edit_dates_field_date'
                }))
            self.fields['begin_%s' % i] = forms.TimeField(
                label="Od",
                initial=date.begin,
                input_formats='%H:%M:%S',
                widget=forms.TextInput(
                    attrs={'class': 'edit_dates_field_begin'}))
            self.fields['end_%s' % i] = forms.TimeField(
                label="Do",
                initial=date.end,
                input_formats='%H:%M:%S',
                widget=forms.TextInput(
                    attrs={'class': 'edit_dates_field_end'}))
            self.fields['dentist_%s' % i] = forms.CharField(
                label="Dentysta",
                initial=date.dentist,
                widget=forms.TextInput(attrs={
                    'readonly': 'True',
                    'class': 'edit_dates_field_dentist'
                }))
            self.fields['dental_office_%s' % i] = forms.CharField(
                label="Gabinet",
                initial=date.dental_office,
                widget=forms.TextInput(
                    attrs={
                        'readonly': 'True',
                        'class': 'edit_dates_field_dental_office'
                    }))
            self.fields['room_%s' % i] = forms.CharField(
                label="Pokój",
                initial=date.room,
                widget=forms.TextInput(attrs={
                    'class': 'edit_dates_field_room',
                    'maxlength': '5'
                }))
            i += 1

        self.fields['number_of_fields'] = forms.CharField(
            label="Liczba dat",
            initial=i - 1,
            widget=forms.TextInput(
                attrs={
                    'readonly': 'True',
                    'hidden': 'hidden',
                    'class': 'edit_dates_field_number'
                }))
示例#18
0
class AcompanhamentoDiarioSearchForm(forms.Form):
    data_inicio = forms.DateField(input_formats='%Y-%m-%d')
    hora_inicio = forms.TimeField(input_formats='%H:%M')
    data_fim = forms.DateField(input_formats='%Y-%m-%d')
    hora_fim = forms.TimeField(input_formats='%H:%M')
示例#19
0
class BaseEventForm(RecursionForm, InviteEventForm):
    start_date = forms.DateField(widget=calendar_widget)
    start_time = forms.TimeField(required=False,
                                 widget=time_widget,
                                 help_text='ex: 10:30AM',
                                 input_formats=valid_time_formats)
    check_whole_day = forms.BooleanField(initial=False,
                                         required=False,
                                         label=_("All day"))
    end_date = forms.DateField(required=False, widget=calendar_widget)
    end_time = forms.TimeField(required=False,
                               widget=time_widget,
                               help_text='ex: 10:30AM',
                               input_formats=valid_time_formats)
    end_recurring_period = forms.DateField(required=False)
    priority = forms.ChoiceField(widget=forms.RadioSelect(),
                                 choices=EVENT_PRIORITY,
                                 initial="2",
                                 label=_('Priority'))
    category = forms.ChoiceField(widget=forms.RadioSelect(),
                                 choices=EVENT_CATEGORY,
                                 initial="2",
                                 label=_('Category'))
    honeypot = forms.CharField(required=False,
                                    label=_('If you enter anything in this field '\
                                            'your comment will be treated as spam'))

    def __init__(self, *args, **kwargs):
        super(BaseEventForm, self).__init__(*args, **kwargs)
        self.fields.keyOrder = [
            'start_date', 'start_time', 'check_whole_day', 'end_date',
            'end_time', 'invite', 'min_number_guests', 'max_number_guests',
            'close', 'add_recursion', 'recursion_frequency',
            'end_recurring_period', 'recursion_count', 'recursion_byweekday',
            'recursion_bymonthday', 'priority', 'category', 'honeypot'
        ]
        self.fields['check_whole_day'].widget.attrs['class'] = 'times'
        self.fields['end_recurring_period'].widget.attrs['class'] = 'recursion'

    def clean_start_time(self):
        """cleaning the start time"""
        start_time = self.cleaned_data['start_time']
        start_date = self.cleaned_data['start_date']
        if start_time is not None:
            start = datetime.datetime.combine(start_date, start_time)
        else:
            start = datetime.datetime.combine(start_date, datetime.time())
        return start

    def clean_end_time(self):
        try:
            start_value = self.cleaned_data['start_time']
        except:
            start_value = None
        if start_value is None:
            raise forms.ValidationError(_("start time is required."))
        end_time = self.cleaned_data['end_time']
        end_date = self.cleaned_data['end_date']
        if end_date:
            if end_time is not None:
                end_value = datetime.datetime.combine(end_date, end_time)
            else:
                end_value = datetime.datetime.combine(end_date,
                                                      datetime.time())
        else:
            end_value = None
        if end_value:
            if end_value < start_value:
                raise forms.ValidationError(
                    _("The end time must be later than start time."))
        check_value = self.cleaned_data["check_whole_day"]
        if check_value and check_value is True:
            if end_value:
                if end_value >= start_value:
                    return datetime.datetime(end_value.year, end_value.month,
                                             end_value.day, 23, 59, 59)
            return datetime.datetime(start_value.year, start_value.month,
                                     start_value.day, 23, 59, 59)
        if end_value:
            return end_value
        else:
            return start_value
示例#20
0
class EventNameSearchForm(forms.Form):
    venue_name = forms.CharField(required=True)
    event_date = forms.DateField(required=True)
    event_time = forms.TimeField(required=True, input_formats=('%I:%M', ))
示例#21
0
class RequestForm(forms.Form):

    error_css_class = 'error'
    required_css_class = 'required'

    real_name = forms.CharField(
        label='Full Name',
        widget=forms.TextInput(attrs={'placeholder': 'Oski Bear'}),
        min_length=3,
    )

    contact_email = forms.EmailField(
        label='Contact email',
        validators=[wrap_validator(ocflib.misc.validators.valid_email)],
        widget=forms.EmailInput(attrs={'placeholder': '*****@*****.**'}),
    )

    verify_contact_email = forms.EmailField(
        label='Confirm contact email',
        validators=[wrap_validator(ocflib.misc.validators.valid_email)],
        widget=forms.EmailInput(attrs={'placeholder': '*****@*****.**'}),
    )

    group = forms.CharField(
        label='Group',
        widget=forms.TextInput(
            attrs={'placeholder': 'Open Computing Facility'}),
        min_length=3,
    )

    reason = forms.CharField(
        label='Reason for reservation',
        widget=forms.Textarea(attrs={'placeholder': ''}),
    )

    date = forms.DateField(
        label='Date of reservation (yyyy-mm-dd)',
        widget=forms.DateInput(
            attrs={'placeholder': datetime.now().strftime('%Y-%m-%d')}),
    )

    starttime = forms.TimeField(
        label='Starting time of reservation (24 hour, i.e. 20:00)', )

    endtime = forms.TimeField(
        label='Ending time of reservation (24 hour, i.e. 22:00)', )

    disclaimer_agreement = forms.BooleanField(
        label='I agree with the above statement.',
        error_messages={
            'required': 'You must agree to our policies.',
        },
    )

    def clean_verify_(self):
        email = self.cleaned_data.get('contact_email')
        verify_contact_email = self.cleaned_data.get('verify_contact_email')

        if email != verify_contact_email:
            raise forms.ValidationError("Your emails don't match.")
        return verify_contact_email
示例#22
0
文件: forms.py 项目: exildev/grit
 def crear_campo(forma, label, grupo, ver_como, regular=''):
     forma = Tipo.FORMAS[forma][1]
     if forma == 'Binario':
         field = forms.CharField(
             label=label,
             widget=forms.Textarea(),
             required=False,
         )
         field.widget = forms.TextInput(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Decimal':
         field = forms.FloatField(
             label=label,
             required=False,
         )
         field.widget = forms.TextInput(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Entero':
         field = forms.IntegerField(
             label=label,
             required=False,
         )
         field.widget = forms.TextInput(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Cadena':
         field = forms.CharField(
             label=label,
             required=False,
         )
         field.widget = forms.TextInput(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Parrafo':
         field = forms.CharField(
             label=label,
             required=False,
         )
         field.widget = forms.Textarea(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Fecha':
         field = forms.DateField(
             label=label,
             required=False,
         )
         field.widget = widgets.AdminDateWiget(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Hora':
         field = forms.TimeField(
             label=label,
             required=False,
         )
         field.widget = forms.AdminTimeWiget(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Fecha/Hora':
         field = forms.DateTimeField(
             label=label,
             required=False,
         )
         field.widget = forms.AdminSplitDateTimeWiget(attrs={
             "group": grupo,
             "ver": ver_como
         })
     elif forma == 'Opciones':
         options = regular.replace('(', '').replace(')', '').split('|')
         CHOICES = ((i, options[i]) for i in range(len(options)))
         field = forms.IntegerField(label=label, choices=CHOICES)
     elif forma == 'Referencia':
         response = urllib.urlopen(regular)
         options = json.loads(response.read())
         CHOICES = ((o.id, o.value) for io in options)
         field = forms.IntegerField(label=label, choices=CHOICES)
     #end if
     return field
示例#23
0
 def field(self):
     from wagtail.wagtailadmin.widgets import AdminTimeInput
     field_kwargs = {'widget': AdminTimeInput}
     field_kwargs.update(self.field_options)
     return forms.TimeField(**field_kwargs)
示例#24
0
 def __init__(self, *args, **kwargs):
     fields = (
         forms.TimeField(),
         forms.TimeField())
     super().__init__(fields, *args, **kwargs)
示例#25
0
class EditTasksForm(forms.Form):
    date = forms.TimeField(label=_('Date'), required=True)
    start_time = forms.TimeField(label=_('Start time'), required=True)
    end_time = forms.TimeField(label=_('End time'), required=True)
    name = forms.CharField(label=_('Name'), max_length=30, required=True)
    description = forms.CharField(label=_('Description'), max_length=30, required=False, widget=forms.Textarea)
示例#26
0
 def __init__(self, *args, **kwargs):
     fields = (
         forms.TimeField(),
         forms.TimeField(),
     )
     super(TimeRangeField, self).__init__(fields, *args, **kwargs)
示例#27
0
class RangeBookingForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self._room = kwargs.pop('room', None)
        super().__init__(*args, **kwargs)

    fromDate = forms.DateField(label='ตั้งแต่',
                               widget=DateInput,
                               required=True)
    toDate = forms.DateField(label='จนถึง', widget=DateInput, required=True)
    fromTime = forms.TimeField(label='จองเวลา',
                               widget=TimeInput,
                               required=True)
    toTime = forms.TimeField(label='ถึงเวลา', widget=TimeInput, required=True)
    description = forms.CharField(label='เหตุผลในการจอง',
                                  widget=forms.Textarea,
                                  required=True)

    fromDate.widget.attrs.update({
        'class': 'form-control',
        'max': '3000-12-31'
    })
    toDate.widget.attrs.update({'class': 'form-control', 'max': '3000-12-31'})
    fromTime.widget.attrs.update({'class': 'form-control'})
    toTime.widget.attrs.update({'class': 'form-control'})
    description.widget.attrs.update({'class': 'form-control'})

    def clean(self):
        cleaned_data = super().clean()
        allBookingList = Booking_list.objects.filter(room_id__id=self._room)
        fromDate = cleaned_data.get('fromDate')
        toDate = cleaned_data.get('toDate')
        fromTime = cleaned_data.get('fromTime')
        toTime = cleaned_data.get('toTime')
        state = 1

        # date-error
        if fromDate > toDate:
            errorMsg = 'วันที่ไม่ถูกต้อง'
            self.add_error('fromDate', errorMsg)
            print('date-error')

        #time-error
        if fromTime > toTime:
            errorMsg = 'เวลาไม่ถูกต้อง'
            self.add_error('fromTime', errorMsg)
            print('Time-error')

        delta = toDate - fromDate  # as timedelta

        for i in range(delta.days + 1):
            day = fromDate + timedelta(days=i)
            for each in allBookingList:
                if (Booking.objects.get(id=each.booking_id.id).st == '2' and
                    (fromTime >= each.start_time and fromTime <= each.end_time)
                        or
                    (toTime >= each.start_time
                     and toTime <= each.end_time)) and each.bookdate == day:
                    state = 0
                    break

        # room already booked
        if state == 0:
            errorMsg = 'มีห้องในช่วงถูกจองไปแล้ว'
            self.add_error('fromDate', errorMsg)
            print('มีห้องในช่วงถูกจองไปแล้ว')

        # room already booked
        room = Room.objects.get(id=self._room)
        if not (fromTime >= room.start_time and toTime <= room.end_time):
            errorMsg = 'เวลาที่จองไม่อยู่ในเวลาให้บริการของห้อง'
            self.add_error('fromDate', errorMsg)
            print('เวลาที่จองไม่อยู่ในเวลาให้บริการของห้อง')
示例#28
0
class TimeSheetForm(forms.ModelForm):
    class Meta:
        model = TimeSheet

    my_supervisor = forms.ModelChoiceField(queryset=Contact.objects.all(),
                                           required=False)
    date = forms.DateField(input_formats=settings.DATE_INPUT_FORMATS,
                           validators=settings.DATE_VALIDATORS)
    time_in = forms.TimeField(widget=forms.TextInput(
        attrs={'class': 'timecard-datefield'}))
    time_lunch = forms.TimeField(widget=forms.TextInput(
        attrs={'class': 'timecard-datefield'}))
    time_lunch_return = forms.TimeField(widget=forms.TextInput(
        attrs={'class': 'timecard-datefield'}))
    time_out = forms.TimeField(widget=forms.TextInput(
        attrs={'class': 'timecard-datefield'}))
    performance = forms.ModelChoiceField(
        queryset=TimeSheetPerformanceChoice.objects.all(),
        required=False,
        widget=forms.Select(attrs={'class': 'timecard-performance'}))
    edit = forms.BooleanField(required=False)

    def set_supers(self, qs):
        self.fields["my_supervisor"].queryset = qs

    def clean(self):
        cleaned_data = self.cleaned_data
        time_in = cleaned_data.get("time_in")
        time_lunch = cleaned_data.get("time_lunch")
        time_lunch_return = cleaned_data.get("time_lunch_return")
        time_out = cleaned_data.get("time_out")

        # validate max hours
        try:
            hours = time_lunch.hour - time_in.hour
            mins = time_lunch.minute - time_in.minute
            hours += time_out.hour - time_lunch_return.hour
            mins += time_out.minute - time_lunch_return.minute
            hours += mins / Decimal(60)
        except:
            raise forms.ValidationError(
                "You must fill out time in and time out.")
        if hours > settings.MAX_HOURS_DAY:
            raise forms.ValidationError("Only " +
                                        unicode(settings.MAX_HOURS_DAY) +
                                        " hours are allowed in one day.")
        elif hours <= 0:
            raise forms.ValidationError("You cannot have negative hours!")

        # validate time in and out
        if time_lunch_return < time_lunch:
            raise forms.ValidationError(
                "Cannot return from lunch before leaving for lunch.")
        if time_in > time_out:
            raise forms.ValidationError(
                "Cannot leave before starting. Check your times.")

        #Don't allow two in the same day.
        ts = TimeSheet.objects.filter(date=cleaned_data.get('date'),
                                      student=cleaned_data.get('student'))

        if ts.count() > 0 and not cleaned_data.get('edit'):
            conf, created = Configuration.objects.get_or_create(
                name="Allow multiple time sheets in one day")
            if created:
                conf.help_text = "True\nFalse"
                conf.save()
            if conf.value == "False":
                txt = "Cannot submit two time sheets in one day.\n Please edit an existings time sheet if you've" + \
                    " made a mistake. Approved time sheets may only be edited by a supervisor or cwsp staff."
                raise forms.ValidationError(txt)
        # Always return the full collection of cleaned data.
        return cleaned_data
示例#29
0
    def __init__(self, *args, **kwargs):
        """
        Takes two additional keyword arguments:

        :param cartpos: The cart position the form should be for
        :param event: The event this belongs to
        """
        cartpos = self.cartpos = kwargs.pop('cartpos', None)
        orderpos = self.orderpos = kwargs.pop('orderpos', None)
        pos = cartpos or orderpos
        item = pos.item
        questions = pos.item.questions_to_ask
        event = kwargs.pop('event')
        self.all_optional = kwargs.pop('all_optional', False)

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

        if item.admission and event.settings.attendee_names_asked:
            self.fields['attendee_name_parts'] = NamePartsFormField(
                max_length=255,
                required=event.settings.attendee_names_required,
                scheme=event.settings.name_scheme,
                titles=event.settings.name_scheme_titles,
                label=_('Attendee name'),
                initial=(cartpos.attendee_name_parts
                         if cartpos else orderpos.attendee_name_parts),
            )
        if item.admission and event.settings.attendee_emails_asked:
            self.fields['attendee_email'] = forms.EmailField(
                required=event.settings.attendee_emails_required,
                label=_('Attendee email'),
                initial=(cartpos.attendee_email
                         if cartpos else orderpos.attendee_email))

        for q in questions:
            # Do we already have an answer? Provide it as the initial value
            answers = [a for a in pos.answerlist if a.question_id == q.id]
            if answers:
                initial = answers[0]
            else:
                initial = None
            tz = pytz.timezone(event.settings.timezone)
            help_text = rich_text(q.help_text)
            label = escape(q.question)  # django-bootstrap3 calls mark_safe
            required = q.required and not self.all_optional
            if q.type == Question.TYPE_BOOLEAN:
                if q.required:
                    # For some reason, django-bootstrap3 does not set the required attribute
                    # itself.
                    widget = forms.CheckboxInput(
                        attrs={'required': 'required'})
                else:
                    widget = forms.CheckboxInput()

                if initial:
                    initialbool = (initial.answer == "True")
                else:
                    initialbool = False

                field = forms.BooleanField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    initial=initialbool,
                    widget=widget,
                )
            elif q.type == Question.TYPE_NUMBER:
                field = forms.DecimalField(
                    label=label,
                    required=required,
                    help_text=q.help_text,
                    initial=initial.answer if initial else None,
                    min_value=Decimal('0.00'),
                )
            elif q.type == Question.TYPE_STRING:
                field = forms.CharField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    initial=initial.answer if initial else None,
                )
            elif q.type == Question.TYPE_TEXT:
                field = forms.CharField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    widget=forms.Textarea,
                    initial=initial.answer if initial else None,
                )
            elif q.type == Question.TYPE_COUNTRYCODE:
                field = CountryField().formfield(
                    label=label,
                    required=required,
                    help_text=help_text,
                    widget=forms.Select,
                    empty_label='',
                    initial=initial.answer if initial else None,
                )
            elif q.type == Question.TYPE_CHOICE:
                field = forms.ModelChoiceField(
                    queryset=q.options,
                    label=label,
                    required=required,
                    help_text=help_text,
                    widget=forms.Select,
                    to_field_name='identifier',
                    empty_label='',
                    initial=initial.options.first() if initial else None,
                )
            elif q.type == Question.TYPE_CHOICE_MULTIPLE:
                field = forms.ModelMultipleChoiceField(
                    queryset=q.options,
                    label=label,
                    required=required,
                    help_text=help_text,
                    to_field_name='identifier',
                    widget=forms.CheckboxSelectMultiple,
                    initial=initial.options.all() if initial else None,
                )
            elif q.type == Question.TYPE_FILE:
                field = forms.FileField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    initial=initial.file if initial else None,
                    widget=UploadedFileWidget(position=pos,
                                              event=event,
                                              answer=initial),
                )
            elif q.type == Question.TYPE_DATE:
                field = forms.DateField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    initial=dateutil.parser.parse(initial.answer).date()
                    if initial and initial.answer else None,
                    widget=DatePickerWidget(),
                )
            elif q.type == Question.TYPE_TIME:
                field = forms.TimeField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    initial=dateutil.parser.parse(initial.answer).time()
                    if initial and initial.answer else None,
                    widget=TimePickerWidget(
                        time_format=get_format_without_seconds(
                            'TIME_INPUT_FORMATS')),
                )
            elif q.type == Question.TYPE_DATETIME:
                field = SplitDateTimeField(
                    label=label,
                    required=required,
                    help_text=help_text,
                    initial=dateutil.parser.parse(
                        initial.answer).astimezone(tz)
                    if initial and initial.answer else None,
                    widget=SplitDateTimePickerWidget(
                        time_format=get_format_without_seconds(
                            'TIME_INPUT_FORMATS')),
                )
            field.question = q
            if answers:
                # Cache the answer object for later use
                field.answer = answers[0]

            if q.dependency_question_id:
                field.widget.attrs[
                    'data-question-dependency'] = q.dependency_question_id
                field.widget.attrs[
                    'data-question-dependency-values'] = escapejson_attr(
                        json.dumps(q.dependency_values))
                if q.type != 'M':
                    field.widget.attrs[
                        'required'] = q.required and not self.all_optional
                    field._required = q.required and not self.all_optional
                field.required = False

            self.fields['question_%s' % q.id] = field

        responses = question_form_fields.send(sender=event, position=pos)
        data = pos.meta_info_data
        for r, response in sorted(responses, key=lambda r: str(r[0])):
            for key, value in response.items():
                # We need to be this explicit, since OrderedDict.update does not retain ordering
                self.fields[key] = value
                value.initial = data.get('question_form_data', {}).get(key)
示例#30
0
from django import forms
from .models import Booking
import datetime

    test = for

    doctorText = forms.CharField()
    date = forms.DateField(initial = datetime.date.today)
    date.widget.attrs = {'class': 'd'}
    time = forms.TimeField()