Release v0.1.6
This commit is contained in:
21
src/govoplan_core/admin/common.py
Normal file
21
src/govoplan_core/admin/common.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
|
||||
_SLUG_RE = re.compile(r"[^a-z0-9]+")
|
||||
|
||||
|
||||
class AdminConflictError(ValueError):
|
||||
pass
|
||||
|
||||
|
||||
class AdminValidationError(ValueError):
|
||||
pass
|
||||
|
||||
|
||||
def slugify(value: str) -> str:
|
||||
slug = _SLUG_RE.sub("-", value.strip().casefold()).strip("-")
|
||||
if not slug:
|
||||
raise AdminValidationError("A slug must contain at least one letter or number.")
|
||||
return slug[:100]
|
||||
|
||||
Reference in New Issue
Block a user