• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LeanderCS / flask-inputfilter / #419

02 Jul 2025 08:04PM UTC coverage: 94.487% (-1.3%) from 95.792%
#419

Pull #60

coveralls-python

LeanderCS
Move complex logic outside of base InputFilter class
Pull Request #60: Optimize

292 of 328 new or added lines in 108 files covered. (89.02%)

10 existing lines in 2 files now uncovered.

1868 of 1977 relevant lines covered (94.49%)

0.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.33
/flask_inputfilter/validators/date_after_validator.py
1
from __future__ import annotations
1✔
2

3
from typing import TYPE_CHECKING, Any, Optional, Union
1✔
4

5
from flask_inputfilter.exceptions import ValidationError
1✔
6
from flask_inputfilter.helpers import parse_date
1✔
7
from flask_inputfilter.models import BaseValidator
1✔
8

9
if TYPE_CHECKING:
1✔
NEW
10
    from datetime import date, datetime
×
11

12

13
class DateAfterValidator(BaseValidator):
1✔
14
    """
15
    Ensures that a given date is after a specified reference date. It supports
16
    both datetime objects and ISO 8601 formatted strings.
17

18
    **Parameters:**
19

20
    - **reference_date** (*Union[str, date, datetime]*): The date that the
21
      input must be later than.
22
    - **error_message** (*Optional[str]*): Custom error message if the
23
      validation fails.
24

25
    **Expected Behavior:**
26

27
    Converts both the input and the reference date to datetime objects and
28
    verifies that the input date is later. If the check fails, a
29
    ``ValidationError`` is raised.
30

31
    **Example Usage:**
32

33
    .. code-block:: python
34

35
        class EventInputFilter(InputFilter):
36
            def __init__(self):
37
                super().__init__()
38

39
                self.add('event_date', validators=[
40
                    DateAfterValidator(reference_date="2023-01-01")
41
                ])
42
    """
43

44
    __slots__ = ("error_message", "reference_date")
1✔
45

46
    def __init__(
1✔
47
        self,
48
        reference_date: Union[str, date, datetime],
49
        error_message: Optional[str] = None,
50
    ) -> None:
51
        self.reference_date = parse_date(reference_date)
1✔
52
        self.error_message = error_message
1✔
53

54
    def validate(self, value: Any) -> None:
1✔
55
        if parse_date(value) < self.reference_date:
1✔
56
            raise ValidationError(
1✔
57
                self.error_message
58
                or f"Date '{value}' is not after '{self.reference_date}'."
59
            )
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc