Coverage for gws-app/gws/base/template/core.py: 0%

62 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1from typing import Optional 

2 

3import os 

4 

5import gws 

6import gws.base.model 

7import gws.config.util 

8import gws.lib.intl 

9import gws.lib.mime 

10 

11 

12class Config(gws.ConfigWithAccess): 

13 mapSize: Optional[gws.UomSizeStr] 

14 """map size""" 

15 mimeTypes: Optional[list[str]] 

16 """mime types this template can generate""" 

17 pageSize: Optional[gws.UomSizeStr] 

18 """page size""" 

19 pageMargin: Optional[gws.UomExtentStr] 

20 """page margin""" 

21 subject: str = '' 

22 """template purpose""" 

23 title: str = '' 

24 """template title""" 

25 

26 

27class Props(gws.Props): 

28 mapSize: Optional[gws.Size] 

29 pageSize: Optional[gws.Size] 

30 title: str 

31 

32 

33DEFAULT_MAP_SIZE = (50, 50, gws.Uom.mm) 

34DEFAULT_PAGE_SIZE = (210, 297, gws.Uom.mm) 

35 

36 

37class Object(gws.Template): 

38 def configure(self): 

39 self.title = self.cfg('title', default='') 

40 self.subject = self.cfg('subject', default='') 

41 

42 self.mimeTypes = [] 

43 for p in self.cfg('mimeTypes', default=[]): 

44 m = gws.lib.mime.get(p) 

45 if not m: 

46 raise gws.ConfigurationError(f'invalid mime type {p!r}') 

47 self.mimeTypes.append(m) 

48 

49 self.mapSize = self.cfg('mapSize') or DEFAULT_MAP_SIZE 

50 self.pageSize = self.cfg('pageSize') or DEFAULT_PAGE_SIZE 

51 self.pageMargin = self.cfg('pageMargin') 

52 

53 def props(self, user): 

54 return gws.Data( 

55 mapSize=self.mapSize, 

56 pageSize=self.pageSize, 

57 title=self.title, 

58 uid=self.uid, 

59 ) 

60 

61 def prepare_args(self, tri: gws.TemplateRenderInput): 

62 args = tri.args or {} 

63 args.setdefault('app', self.root.app) 

64 

65 locale = args.get('locale') or tri.locale 

66 if not locale: 

67 ls = self.root.app.localeUids 

68 if ls: 

69 locale = gws.lib.intl.locale(ls[0], fallback=True) 

70 if not locale: 

71 locale = gws.lib.intl.default_locale() 

72 

73 f = gws.lib.intl.formatters(locale) 

74 

75 args.setdefault('locale', locale) 

76 args.setdefault('date', f[0]) 

77 args.setdefault('time', f[1]) 

78 args.setdefault('number', f[2]) 

79 

80 # obsolete 

81 args.setdefault('gwsVersion', self.root.app.version) 

82 args.setdefault('gwsBaseUrl', gws.c.SERVER_ENDPOINT) 

83 

84 return args 

85 

86 def notify(self, tri: gws.TemplateRenderInput, message: str): 

87 if tri.notify: 

88 tri.notify(message)