コード例 #1
0
ファイル: forms.py プロジェクト: Cath11/django_project
class StoryForm(ModelForm):
    class Meta:
        model=NewsStory
        fields= ['title', 'pub_date', 'content', 'img_url']
    
    pub_date = SplitDateTimeField(
		# use split date time field to allow the user to input both date and time
        widget=SplitDateTimeWidget(
		    # we use the split date time widget to specify how the html gets built
            date_attrs={'type': 'date'},
            # type date tells django to use the HTML5 date input
            time_attrs={'type': 'time'},
            # type time tells django to use the HTML5 time input
        )
    )
コード例 #2
0
ファイル: forms.py プロジェクト: kholdarbekov/Petrol
class OilTradeForm(ModelForm):
    dateTime = SplitDateTimeField()

    def clean(self):
        cd = super(OilTradeForm, self).clean()
        if 'oil' not in cd:
            self.errors.pop(
                'oil'
            )  # Removing English error message and then adding Uzbek error message
            if self.data['oil'] == '':
                self.add_error('oil', 'Yog\' Nomi bo\'sh bo\'lmasligi kerak')
            else:
                self.add_error(
                    'oil',
                    'Siz kiritgan "' + self.data['oil'] + '" yog\' topilmadi')
            return cd

        if 'litreSold' not in cd:
            self.errors.pop(
                'litreSold'
            )  # Removing English error message and then adding Uzbek error message
            if self.data['litreSold'] == '':
                self.add_error('litreSold',
                               'Sotilgan Litr bo\'sh bo\'lmasligi kerak')
            else:
                self.add_error(
                    'litreSold',
                    'Sotilgan litr sonini to\'g\'ri formatda kiriting')
            return cd
        else:
            litre_sold = Decimal(cd['litreSold'])
            if litre_sold <= 0:
                self.add_error('litreSold',
                               'Sotilgan litr 0 dan katta bo\'lishi kerak')
                return cd
            oil = Oil.objects.get(name=cd['oil'])
            if oil.RemainingLitres < litre_sold:
                self.add_error(
                    'litreSold',
                    'Kiritilgan litr qolgan yog\' miqdoridan oshib ketdi')

        return cd

    class Meta:
        model = OilTrade
        fields = ['oil', 'litreSold', 'dateTime']
コード例 #3
0
ファイル: forms.py プロジェクト: Bachemedei/django_news
class StoryForm(ModelForm):
    pub_date = SplitDateTimeField(
        widget = SplitDateTimeWidget(
            date_attrs={'type': 'date'},
            time_attrs={'type': 'time'},
        )   
    )
    class Meta:
        model = NewsStory
        fields = ['title', 'pub_date', 'content', 'image']
        labels = {
            'image' : _('Image (URL)'),
        }
        widgets = {
            'title' : forms.TextInput(attrs={'placeholder': 'Title'}),
            'content' : forms.Textarea(attrs={'placeholder': 'Story Content'}),
            'image' : forms.URLInput(attrs={'placeholder': 'Image URL'})
        }
コード例 #4
0
 def test_splitdatetimefield_1(self):
     f = SplitDateTimeField()
     self.assertIsInstance(f.widget, SplitDateTimeWidget)
     self.assertEqual(
         datetime.datetime(2006, 1, 10, 7, 30),
         f.clean([datetime.date(2006, 1, 10), datetime.time(7, 30)])
     )
     with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
         f.clean(None)
     with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
         f.clean('')
     with self.assertRaisesMessage(ValidationError, "'Enter a list of values.'"):
         f.clean('hello')
     with self.assertRaisesMessage(ValidationError, "'Enter a valid date.', 'Enter a valid time.'"):
         f.clean(['hello', 'there'])
     with self.assertRaisesMessage(ValidationError, "'Enter a valid time.'"):
         f.clean(['2006-01-10', 'there'])
     with self.assertRaisesMessage(ValidationError, "'Enter a valid date.'"):
         f.clean(['hello', '07:30'])
コード例 #5
0
class EditPartyForm(ModelForm):
    """
    Form to edit party details.
    """

    party_start = SplitDateTimeField(
        input_date_formats=["%m/%d/%Y", "%Y-%m-%d"],
        input_time_formats=["%I:%M %p"],
        label="Party Start Date / Time:")
    preparty_start = TimeField(input_formats=["%I:%M %p"],
                               label="Preparty Start Time:")
    jobs = FileField(required=False, label="Party Jobs:")

    def clean(self):
        cleaned_data = super().clean()
        preparty_start = cleaned_data.get('preparty_start')
        party_start = cleaned_data.get('party_start')
        has_preparty = cleaned_data.get('has_preparty')

        if preparty_start >= party_start.time() and has_preparty:
            self.add_error('party_start', "Party must start after preparty")
            self.add_error('preparty_start',
                           "Preparty must start before the party")

    class Meta:
        model = Party
        fields = ('name', 'party_start', 'has_party_invite_limits',
                  'max_party_invites', 'has_preparty', 'preparty_start',
                  'has_preparty_invite_limits', 'max_preparty_invites', 'jobs')
        labels = {
            'max_party_invites':
            "Max Party Invites:",
            'has_preparty':
            "Does this event have a pre-party check-in?",
            'max_preparty_invites':
            "Max Preparty Invites:",
            'has_party_invite_limits':
            "Does the party have limited invites?",
            'has_preparty_invite_limits':
            "Does the preparty have limited invites?",
        }
コード例 #6
0
class EventForm(Form):
    name = forms.CharField(label='Nom de l\'évènement',
                           max_length=100,
                           required=True)
    location = forms.CharField(label='Emplacement',
                               max_length=255,
                               required=False)
    event_date_start = SplitDateTimeField(
        label='Date de début de l\'évènement',
        widget=DateTimePickerWidget,
        initial=timezone.now())
    event_duration = DurationField(initial=timedelta(hours=1),
                                   label="Durée de l\'évènement")
    banner = forms.ImageField(required=False,
                              label='Bannière',
                              widget=ImageSelectorWidget)
    description = forms.CharField(
        label='Description',
        widget=MarkdownWidget,
        required=True,
        initial=render_to_string("event_description_template.md"))
コード例 #7
0
class StoryFormChangeForm(ModelForm):
    image_upload = forms.URLField(required=False, help_text='If image path is left blank, a randomly generated image will appear in your article',
    widget=forms.TextInput(attrs={'class': "form_entry"}))
    CHOICES = [('1','Awful'),('2','Average'),('3','Okay'),('4','Good'),('5','Fantastic')]
    Food_rating=forms.CharField(label='Overall Experience Rating', widget=forms.RadioSelect(choices=CHOICES))
    pub_date = SplitDateTimeField(
            # use split date time field to allow the user to input both date and time
            widget=SplitDateTimeWidget(
                # we use the split date time widget to specify how the html gets built
                date_attrs={'type': 'date', 'class':'form_entry'},
                # type date tells django to use the HTML5 date input
                time_attrs={'type': 'time','class':'form_entry'},
                # type time tells django to use the HTML5 time input
            )
        )


    class Meta:
        model = NewsStory
        fields = ['title','Restaurant', 'pub_date','image_upload','content','cuisine_type']
        widgets = {
            "content": forms.Textarea(
                attrs={'placeholder': 'We cannot wait to hear where you have eaten and what it was like!','class':'form_entry' },
                )
                ,

            "title": forms.TextInput(
                attrs={
                'class':'form_entry'}
                )
                ,
            "Restaurant": forms.TextInput(
                attrs={
                'class':'form_entry'}
            )    
        }    
コード例 #8
0
class StoryForm(ModelForm):
    pub_date = SplitDateTimeField(widget=SplitDateTimeWidget(
        date_attrs={'type': 'date'},
        time_attrs={'type': 'time'},
    ))

    class Meta:
        model = NewsStory
        fields = ['title', 'pub_date', 'content', 'image']
        widgets = {
            'title':
            forms.TextInput(attrs={
                'class': 'form',
                'class': 'inputbox',
                'placeholder': 'Title Name'
            }),
            'content':
            forms.Textarea(
                attrs={
                    'class': 'form',
                    'class': 'inputbox',
                    'placeholder': 'Enter Content Here'
                })
        }
コード例 #9
0
class EventFilter(django_filters.FilterSet):
    start_time = SplitDateTimeField(widget=widgets.AdminSplitDateTime())

    class Meta:
        model = Event
        fields = ('categories', 'location', 'start_time')
コード例 #10
0
 def test_splitdatetimefield_changed(self):
     f = SplitDateTimeField(input_date_formats=['%d/%m/%Y'])
     self.assertFalse(f.has_changed(['11/01/2012', '09:18:15'], ['11/01/2012', '09:18:15']))
     self.assertTrue(f.has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['2008-05-06', '12:40:00']))
     self.assertFalse(f.has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:40']))
     self.assertTrue(f.has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:41']))
コード例 #11
0
ファイル: forms.py プロジェクト: jdrozdowski/onoff
class EventForm(ModelForm):
    date = SplitDateTimeField(label='Termin spotkania',
                              widget=SplitDateTimeWidget(date_attrs={
                                  'type':
                                  'text',
                                  'class':
                                  'datepicker',
                                  'placeholder':
                                  'np. 01-01-2018'
                              },
                                                         time_attrs={
                                                             'type':
                                                             'text',
                                                             'class':
                                                             'timepicker',
                                                             'placeholder':
                                                             'np. 20:30'
                                                         }),
                              input_date_formats=settings.DATE_INPUT_FORMATS)

    tags = ModelCommaSeparatedChoiceField(
        label='Tagi',
        queryset=Tag.objects.all(),
        to_field_name='name',
        required=False,
        help_text=
        "Dodaj tagi, aby Twoje spotknie było łatwiejsze do odnalezienia. Każdy tag musi być oddzielony od kolejnego przecinkiem (np. piłka nożna, hala)."
    )

    class Meta:
        model = Event
        fields = [
            'title',
            'category',
            'city',
            'city_area',
            'min_number_of_participants',
            'max_number_of_participants',
            'description',
        ]
        labels = {
            'title': 'Tytuł spotkania',
            'category': 'Kategoria',
            'city': 'Miasto',
            'city_area': 'Obszar miasta',
            'min_number_of_participants': 'Minimalna liczba uczestników',
            'max_number_of_participants': 'Maksymalna liczba uczestników',
            'description': 'Opis spotkania',
        }
        widgets = {
            'category': RadioSelect(),
            'description': Textarea(attrs={'class': 'materialize-textarea'})
        }

    def __init__(self, *args, **kwargs):
        super(EventForm, self).__init__(*args, **kwargs)
        instance = getattr(self, 'instance', None)
        if instance and instance.pk:
            self.fields['title'].disabled = True
            self.fields['category'].disabled = True,
            self.fields['city'].disabled = True,
            self.fields['description'].disabled = True,
            self.fields['tags'].disabled = True,

    def clean_date(self):
        date = self.cleaned_data['date']
        if date < timezone.now() + timezone.timedelta(minutes=30):
            raise ValidationError(
                'Nie możesz stworzyć spotkania, do rozpoczęcia którego zostało mniej niż 30 minut.'
            )

        return date

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

        if cleaned_data['min_number_of_participants'] and cleaned_data[
                'min_number_of_participants'] > cleaned_data[
                    'max_number_of_participants']:
            raise ValidationError(
                'Minimalna liczba uczestników musi być mniejsza od maksymalnej liczby uczestników spotkania.'
            )

        return cleaned_data
コード例 #12
0
 def __init__(self, *args, **kwargs):
     super(ContractorScheduleForm, self).__init__(*args, **kwargs)
     self.fields['start_date'] = SplitDateTimeField()
     self.fields['end_date'] = SplitDateTimeField()
コード例 #13
0
ファイル: admin.py プロジェクト: yrahan/django-danceschool
class EventOccurrenceInlineForm(ModelForm):
    WIDGET_FORMATS = ['%I:%M%p','%I:%M %p','%I:%M','%H:%M:%S','%H:%M']

    startTime = SplitDateTimeField(required=True,label=_('Start Date/Time'),input_time_formats=WIDGET_FORMATS)
    endTime = SplitDateTimeField(required=True,label=_('End Date/Time'),input_time_formats=WIDGET_FORMATS)
コード例 #14
0
ファイル: forms.py プロジェクト: y0h4nn/Website
class EventForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['photo_path'].widget.attrs['list'] = "photo_paths"
        self.fields['photo_path'].widget.attrs['autocomplete'] = "off"

    def clean(self):
        super().clean()
        start = self.cleaned_data.get('start_time')
        end = self.cleaned_data.get('end_time')
        end_ins = self.cleaned_data.get('end_inscriptions')
        management_type = self.cleaned_data.get('gestion')
        photo_path = self.cleaned_data.get('photo_path')

        allow_extern = self.cleaned_data.get('allow_extern')
        end_extern_inscriptions = self.cleaned_data.get(
            'end_extern_inscriptions')

        if allow_extern and not end_extern_inscriptions:
            self.add_error(
                'allow_extern',
                'Vous ne pouvez pas autoriser les externes sans mettre de date limite'
            )
        if start is None or end is None or end_ins is None:
            return

        if end <= start:
            self.add_error(
                'start_time',
                "Le début de l'événement doit se situer avant sa fin...")
        if end_ins > start:
            self.add_error(
                'end_inscriptions',
                "La fin des inscriptions doit se situer avant le début de l'évènement"
            )

        if management_type == Event.GESTION_NOLIMIT:
            if photo_path:
                realpath = os.path.join(settings.MEDIA_ROOT, 'photo',
                                        photo_path)
                os.makedirs(realpath, exist_ok=True)

    def as_p(self):
        return super().as_p() + mark_safe('''<script>
            create_calendar("id_end_inscriptions_0")
            create_calendar("id_start_time_0")
            create_calendar("id_end_time_0")
            create_calendar("id_invitations_start_0")
            create_calendar("id_end_extern_inscriptions_0")
        </script>
        ''')

    start_time = SplitDateTimeField(label="Début")
    end_time = SplitDateTimeField(label="Fin")
    end_inscriptions = SplitDateTimeField(label="Fin des inscriptions")
    end_extern_inscriptions = SplitDateTimeField(
        label="Fin des inscriptions externes", required=False)
    invitations_start = SplitDateTimeField(label="Début des invitations",
                                           required=False)

    class Meta:
        model = Event
        exclude = ["uuid", "model"]
        labels = {
            'name': "Nom",
            'location': "Lieu",
            'private': "Privé",
            'allow_extern': "Autoriser les exterieurs",
            'limited': "Nombre d'inscriptions limité",
            'max_inscriptions': "Nombre maximum d'inscriptions",
            'allow_invitations': "Autoriser les invitations",
            'max_invitations': "Nombre maximum d'invitations",
            'max_invitations_by_person':
            "Nombre maximum d'invitations par personne",
            'photo': "Photo (max 2Mio)",
            'photo_path': 'Chemin pour les photos'
        }
        widgets = {
            'photo': WrapperClearableinput,
        }
コード例 #15
0
ファイル: admin.py プロジェクト: NorthIsUp/django-danceschool
class EventOccurrenceInlineForm(ModelForm):
    startTime = SplitDateTimeField(required=True, label=_('Start Date/Time'))
    endTime = SplitDateTimeField(required=True, label=_('End Date/Time'))
コード例 #16
0
ファイル: forms.py プロジェクト: kholdarbekov/Petrol
class TradeForm(ModelForm):
    tradeDateTime = SplitDateTimeField()

    def __init__(self, *args, **kwargs):
        kwargs['data']._mutable = True
        kwargs['data']['car'] = kwargs['data']['car'].split(' ')[0]
        kwargs['data']._mutable = False
        super(TradeForm, self).__init__(*args, **kwargs)

    def clean(self):
        cd = super(TradeForm, self).clean()
        if 'car' not in cd:
            self.errors.pop(
                'car'
            )  # Removing English error message and then adding Uzbek error message
            if self.data['car'] == '':
                self.add_error('car',
                               'Mashina raqami bo\'sh bo\'lmasligi kerak')
            else:
                self.add_error(
                    'car', 'Siz kiritgan "' + self.data['car'] +
                    '" mashina topilmadi')
            return cd

        if 'petrol' not in cd:
            self.errors.pop(
                'petrol'
            )  # Removing English error message and then adding Uzbek error message
            if self.data['petrol'] == '':
                self.add_error('petrol',
                               'Benzin nomi bo\'sh bo\'lmasligi kerak')
            else:
                self.add_error(
                    'petrol', 'Siz kiritgan "' + self.data['petrol'] +
                    '" benzini topilmadi')
            return cd

        if 'litre' not in cd:
            self.errors.pop(
                'litre'
            )  # Removing English error message and then adding Uzbek error message
            if self.data['litre'] == '':
                self.add_error('litre',
                               'Sotilgan Litr bo\'sh bo\'lmasligi kerak')
            else:
                self.add_error('litre',
                               'Sotilgan Litrni to\'g\'ri formatda kiriting')
            return cd
        else:
            litre = Decimal(cd['litre'])
            if litre <= 0:
                self.add_error('litre',
                               'Sotilgan litr 0 dan katta bo\'lishi kerak')
                return cd
            if litre > settings.PETROL_BONUS_LIMIT:
                self.add_error('litre', 'Sotilgan Litr miqdori juda katta')
                return cd

        return cd

    def is_valid(self):
        return super(TradeForm, self).is_valid()

    class Meta:
        model = Trade
        fields = ['car', 'petrol', 'litre', 'tradeDateTime']
コード例 #17
0
 class TestForm(Form):
     datetime = SplitDateTimeField()
コード例 #18
0
 class TestForm(Form):
     template_name = "forms_tests/use_fieldset.html"
     field = SplitDateTimeField(widget=self.widget)