diff --git a/hc/api/admin.py b/hc/api/admin.py index 9679a591..760ebd6e 100644 --- a/hc/api/admin.py +++ b/hc/api/admin.py @@ -135,7 +135,7 @@ class LargeTablePaginator(Paginator): [self.object_list.query.model._meta.db_table], ) return int(cursor.fetchone()[0]) - except: + except Exception: return 0 @cached_property diff --git a/hc/api/tests/test_smtpd.py b/hc/api/tests/test_smtpd.py index 4363af7e..b66e8cec 100644 --- a/hc/api/tests/test_smtpd.py +++ b/hc/api/tests/test_smtpd.py @@ -19,21 +19,21 @@ From: "User Name" <username@gmail.com> To: "John Smith" <john@example.com> Subject: %s MIME-Version: 1.0 -Content-Type: multipart/alternative; boundary="=-eZCfVHHsxj32NZLHPpkbTCXb9C529OcJ23WKzQ==" +Content-Type: multipart/alternative; boundary="marker" ---=-eZCfVHHsxj32NZLHPpkbTCXb9C529OcJ23WKzQ== +--marker Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Plain text here ---=-eZCfVHHsxj32NZLHPpkbTCXb9C529OcJ23WKzQ== +--marker Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit %s ---=-eZCfVHHsxj32NZLHPpkbTCXb9C529OcJ23WKzQ==-- +--marker-- """.strip() diff --git a/hc/front/validators.py b/hc/front/validators.py index 76ff0b64..ce3d7a00 100644 --- a/hc/front/validators.py +++ b/hc/front/validators.py @@ -3,7 +3,7 @@ from __future__ import annotations from datetime import datetime from urllib.parse import urlsplit, urlunsplit -from cronsim import CronSim +from cronsim import CronSim, CronSimError from django.core.exceptions import ValidationError from django.core.validators import URLValidator @@ -41,7 +41,7 @@ class CronExpressionValidator(object): it = CronSim(value, datetime(2000, 1, 1)) # Can it calculate the next datetime? next(it) - except: + except (CronSimError, StopIteration): raise ValidationError(message=self.message) diff --git a/hc/lib/jsonschema.py b/hc/lib/jsonschema.py index 4f8af7a1..47f77e4f 100644 --- a/hc/lib/jsonschema.py +++ b/hc/lib/jsonschema.py @@ -9,7 +9,7 @@ from __future__ import annotations import re from datetime import datetime -from cronsim import CronSim +from cronsim import CronSim, CronSimError from hc.lib.tz import all_timezones @@ -29,16 +29,16 @@ def validate(obj, schema, obj_name="value"): if "pattern" in schema and not re.match(schema["pattern"], obj): raise ValidationError(f"{obj_name} does not match pattern") if schema.get("format") == "cron": - try: - # Does it have 5 components? - if len(obj.split()) != 5: - raise ValueError() + # Does it have 5 components? + if len(obj.split()) != 5: + raise ValidationError(f"{obj_name} is not a valid cron expression") + try: # Does cronsim accept the schedule? it = CronSim(obj, datetime(2000, 1, 1)) # Can it calculate the next datetime? next(it) - except: + except (CronSimError, StopIteration): raise ValidationError(f"{obj_name} is not a valid cron expression") if schema.get("format") == "timezone" and obj not in all_timezones: raise ValidationError(f"{obj_name} is not a valid timezone")