equal
deleted
inserted
replaced
17 from yams.constraints import (SizeConstraint, StaticVocabularyConstraint, |
17 from yams.constraints import (SizeConstraint, StaticVocabularyConstraint, |
18 FormatConstraint) |
18 FormatConstraint) |
19 |
19 |
20 from cubicweb.utils import ustrftime |
20 from cubicweb.utils import ustrftime |
21 from cubicweb import tags, uilib |
21 from cubicweb import tags, uilib |
22 from cubicweb.web import INTERNAL_FIELD_VALUE, eid_param |
22 from cubicweb.web import INTERNAL_FIELD_VALUE, ProcessFormError, eid_param |
23 from cubicweb.web.formwidgets import ( |
23 from cubicweb.web.formwidgets import ( |
24 HiddenInput, TextInput, FileInput, PasswordInput, TextArea, FCKEditor, |
24 HiddenInput, TextInput, FileInput, PasswordInput, TextArea, FCKEditor, |
25 Radio, Select, DateTimePicker) |
25 Radio, Select, DateTimePicker) |
26 |
26 |
27 |
27 |
608 if isinstance(self.widget, TextInput): |
608 if isinstance(self.widget, TextInput): |
609 self.widget.attrs.setdefault('size', 5) |
609 self.widget.attrs.setdefault('size', 5) |
610 self.widget.attrs.setdefault('maxlength', 15) |
610 self.widget.attrs.setdefault('maxlength', 15) |
611 |
611 |
612 def process_form_value(self, form): |
612 def process_form_value(self, form): |
613 return int(Field.process_form_value(self, form)) |
613 value = Field.process_form_value(self, form) |
|
614 if value: |
|
615 try: |
|
616 return int(value) |
|
617 except ValueError: |
|
618 raise ProcessFormError(form._cw._('an integer is expected')) |
|
619 return None |
614 |
620 |
615 |
621 |
616 class BooleanField(Field): |
622 class BooleanField(Field): |
617 widget = Radio |
623 widget = Radio |
618 |
624 |
634 |
640 |
635 def render_example(self, req): |
641 def render_example(self, req): |
636 return self.format_single_value(req, 1.234) |
642 return self.format_single_value(req, 1.234) |
637 |
643 |
638 def process_form_value(self, form): |
644 def process_form_value(self, form): |
639 return float(Field.process_form_value(self, form)) |
645 value = Field.process_form_value(self, form) |
|
646 if value: |
|
647 try: |
|
648 return float(value) |
|
649 except ValueError: |
|
650 raise ProcessFormError(form._cw._('a float is expected')) |
|
651 return None |
640 |
652 |
641 |
653 |
642 class DateField(StringField): |
654 class DateField(StringField): |
643 format_prop = 'ui.date-format' |
655 format_prop = 'ui.date-format' |
644 widget = DateTimePicker |
656 widget = DateTimePicker |
653 # widget is supposed to return a date as a correctly formatted string |
665 # widget is supposed to return a date as a correctly formatted string |
654 date = Field.process_form_value(self, form) |
666 date = Field.process_form_value(self, form) |
655 # but for some widgets, it might be simpler to return date objects |
667 # but for some widgets, it might be simpler to return date objects |
656 # directly, so handle that case : |
668 # directly, so handle that case : |
657 if isinstance(date, basestring): |
669 if isinstance(date, basestring): |
658 date = form.parse_date(wdgdate, 'Date') |
670 try: |
|
671 date = form.parse_datetime(wdgdate, 'Date') |
|
672 except ValueError, ex: |
|
673 raise ProcessFormError(unicode(ex)) |
659 return date |
674 return date |
660 |
675 |
661 |
676 |
662 class DateTimeField(DateField): |
677 class DateTimeField(DateField): |
663 format_prop = 'ui.datetime-format' |
678 format_prop = 'ui.datetime-format' |
666 # widget is supposed to return a date as a correctly formatted string |
681 # widget is supposed to return a date as a correctly formatted string |
667 date = Field.process_form_value(self, form) |
682 date = Field.process_form_value(self, form) |
668 # but for some widgets, it might be simpler to return date objects |
683 # but for some widgets, it might be simpler to return date objects |
669 # directly, so handle that case : |
684 # directly, so handle that case : |
670 if isinstance(date, basestring): |
685 if isinstance(date, basestring): |
671 date = form.parse_datetime(date, 'Datetime') |
686 try: |
|
687 date = form.parse_datetime(wdgdate, 'Datetime') |
|
688 except ValueError, ex: |
|
689 raise ProcessFormError(unicode(ex)) |
672 return date |
690 return date |
673 |
691 |
674 |
692 |
675 class TimeField(DateField): |
693 class TimeField(DateField): |
676 format_prop = 'ui.time-format' |
694 format_prop = 'ui.time-format' |
680 # widget is supposed to return a date as a correctly formatted string |
698 # widget is supposed to return a date as a correctly formatted string |
681 time = Field.process_form_value(self, form) |
699 time = Field.process_form_value(self, form) |
682 # but for some widgets, it might be simpler to return time objects |
700 # but for some widgets, it might be simpler to return time objects |
683 # directly, so handle that case : |
701 # directly, so handle that case : |
684 if isinstance(time, basestring): |
702 if isinstance(time, basestring): |
685 time = form.parse_time(wdgdate, 'Time') |
703 try: |
|
704 time = form.parse_datetime(wdgdate, 'Time') |
|
705 except ValueError, ex: |
|
706 raise ProcessFormError(unicode(ex)) |
686 return time |
707 return time |
687 |
708 |
688 |
709 |
689 # relation vocabulary helper functions ######################################### |
710 # relation vocabulary helper functions ######################################### |
690 |
711 |