File: time.py

package info (click to toggle)
wtforms-components 0.11.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 352 kB
  • sloc: python: 1,582; makefile: 135; sh: 11
file content (36 lines) | stat: -rw-r--r-- 983 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import datetime
import time

from wtforms.fields import Field

from ..widgets import TimeInput


class TimeField(Field):
    """
    A text field which stores a `datetime.time` matching a format.
    """

    widget = TimeInput()
    error_msg = "Not a valid time."

    def __init__(self, label=None, validators=None, format="%H:%M", **kwargs):
        super().__init__(label, validators, **kwargs)
        self.format = format

    def _value(self):
        if self.raw_data:
            return " ".join(self.raw_data)
        elif self.data is not None:
            return self.data.strftime(self.format)
        else:
            return ""

    def process_formdata(self, valuelist):
        if valuelist:
            time_str = " ".join(valuelist)
            try:
                self.data = datetime.time(*time.strptime(time_str, self.format)[3:6])
            except ValueError:
                self.data = None
                raise ValueError(self.gettext(self.error_msg))