Module boston311.service_requests_parameters

Data model for handling logic in parameters of a 'service requests' request.

Expand source code
"""Data model for handling logic in parameters of a 'service requests' request."""

from datetime import datetime, timezone
from typing import Optional

from .datamodels import Status
from .formatting import format_in_utc


class ServiceRequestsParameters:
    """Parameters for a GET request for service requests."""

    service_code: Optional[str]
    start_date: Optional[datetime]
    end_date: Optional[datetime]
    status: Optional[Status]

    def __init__(
        self,
        service_code: Optional[str],
        start_date: Optional[datetime],
        end_date: Optional[datetime],
        status: Optional[Status],
    ) -> None:
        """Create a ServiceRequestParameters object.

        Args:
            service_code (Optional[str]): Service code.
            start_date (Optional[datetime]): Start date.
            end_date (Optional[datetime]): End date.
            status (Optional[Status]): Status.
        """
        self.service_code = service_code
        self.start_date = start_date
        self.end_date = end_date
        self.status = status

    def get_params(self) -> dict[str, str]:
        """Get a dictionary of the parameters for the request.

        Returns:
            dict[str, str]: Dictionary of parameters to be used in GET.
        """
        if self.end_date is None and self.start_date is not None:
            self.end_date = datetime.now(tz=timezone.utc)

        params: dict[str, str] = {}

        if self.service_code is not None:
            params["service_code"] = self.service_code
        if self.start_date is not None:
            params["start_date"] = format_in_utc(self.start_date)
        if self.end_date is not None:
            params["end_date"] = format_in_utc(self.end_date)
        if self.status is not None:
            params["status"] = self.status

        return params

Classes

class ServiceRequestsParameters (service_code: Optional[str], start_date: Optional[datetime.datetime], end_date: Optional[datetime.datetime], status: Optional[Status])

Parameters for a GET request for service requests.

Create a ServiceRequestParameters object.

Args

service_code : Optional[str]
Service code.
start_date : Optional[datetime]
Start date.
end_date : Optional[datetime]
End date.
status : Optional[Status]
Status.
Expand source code
class ServiceRequestsParameters:
    """Parameters for a GET request for service requests."""

    service_code: Optional[str]
    start_date: Optional[datetime]
    end_date: Optional[datetime]
    status: Optional[Status]

    def __init__(
        self,
        service_code: Optional[str],
        start_date: Optional[datetime],
        end_date: Optional[datetime],
        status: Optional[Status],
    ) -> None:
        """Create a ServiceRequestParameters object.

        Args:
            service_code (Optional[str]): Service code.
            start_date (Optional[datetime]): Start date.
            end_date (Optional[datetime]): End date.
            status (Optional[Status]): Status.
        """
        self.service_code = service_code
        self.start_date = start_date
        self.end_date = end_date
        self.status = status

    def get_params(self) -> dict[str, str]:
        """Get a dictionary of the parameters for the request.

        Returns:
            dict[str, str]: Dictionary of parameters to be used in GET.
        """
        if self.end_date is None and self.start_date is not None:
            self.end_date = datetime.now(tz=timezone.utc)

        params: dict[str, str] = {}

        if self.service_code is not None:
            params["service_code"] = self.service_code
        if self.start_date is not None:
            params["start_date"] = format_in_utc(self.start_date)
        if self.end_date is not None:
            params["end_date"] = format_in_utc(self.end_date)
        if self.status is not None:
            params["status"] = self.status

        return params

Class variables

var end_date : Optional[datetime.datetime]
var service_code : Optional[str]
var start_date : Optional[datetime.datetime]
var status : Optional[Status]

Methods

def get_params(self) ‑> dict

Get a dictionary of the parameters for the request.

Returns

dict[str, str]
Dictionary of parameters to be used in GET.
Expand source code
def get_params(self) -> dict[str, str]:
    """Get a dictionary of the parameters for the request.

    Returns:
        dict[str, str]: Dictionary of parameters to be used in GET.
    """
    if self.end_date is None and self.start_date is not None:
        self.end_date = datetime.now(tz=timezone.utc)

    params: dict[str, str] = {}

    if self.service_code is not None:
        params["service_code"] = self.service_code
    if self.start_date is not None:
        params["start_date"] = format_in_utc(self.start_date)
    if self.end_date is not None:
        params["end_date"] = format_in_utc(self.end_date)
    if self.status is not None:
        params["status"] = self.status

    return params