49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
from django.core.exceptions import ValidationError
|
|
|
|
|
|
class CampaignAgeValidator:
|
|
def __call__(self, instance) -> None: # noqa: ANN001
|
|
if (
|
|
isinstance(instance.age_from, int)
|
|
and isinstance(instance.age_to, int)
|
|
and instance.age_from > instance.age_to
|
|
):
|
|
err = "age_from can't be greater than age_to"
|
|
raise ValidationError(err)
|
|
|
|
|
|
class CampaignDurationValidator:
|
|
def __call__(self, instance) -> None: # noqa: ANN001
|
|
if (
|
|
isinstance(instance.start_date, int)
|
|
and isinstance(instance.end_date, int)
|
|
and instance.start_date > instance.end_date
|
|
):
|
|
err = "start_date can't be greater than end_date"
|
|
raise ValidationError(err)
|
|
|
|
|
|
class CampaignLimitsValidator:
|
|
def __call__(self, instance) -> None: # noqa: ANN001
|
|
if (
|
|
isinstance(instance.impressions_limit, int)
|
|
and isinstance(instance.clicks_limit, int)
|
|
and instance.impressions_limit < instance.clicks_limit
|
|
):
|
|
err = "clicks_limit can't be greater than impressions_limit"
|
|
raise ValidationError(err)
|
|
|
|
|
|
class CampaignTargetingLocationValidator:
|
|
def __call__(self, instance) -> None: # noqa: ANN001
|
|
if instance.location == "":
|
|
err = "targeting.location cannot be blank"
|
|
raise ValidationError(err)
|
|
|
|
|
|
class CampaignReportMessageValidator:
|
|
def __call__(self, instance) -> None: # noqa: ANN001
|
|
if instance.message == "":
|
|
err = "message cannot be blank"
|
|
raise ValidationError(err)
|