Coverage for src/lektor_ng/types/special.py: 70%

23 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-08-03 21:08 +0000

1from lektor_ng.types.primitives import SingleInputType 

2from lektor_ng.utils import Url, slugify 

3 

4 

5class SortKeyType(SingleInputType): 

6 widget = "integer" 

7 

8 def value_from_raw(self, raw): 

9 if raw.value is None: 

10 return raw.missing_value("Missing sort key") 

11 try: 

12 return int(raw.value.strip()) 

13 except ValueError: 

14 return raw.bad_value("Bad sort key value") 

15 

16 

17class SlugType(SingleInputType): 

18 widget = "slug" 

19 

20 def value_from_raw(self, raw): 

21 if raw.value is None: 

22 return raw.missing_value("Missing slug") 

23 return slugify(raw.value) 

24 

25 

26class UrlType(SingleInputType): 

27 widget = "url" 

28 

29 def value_from_raw(self, raw): 

30 if raw.value is None: 

31 return raw.missing_value("Missing URL") 

32 return Url.from_string(raw.value)