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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1from typing import Optional
3import os
5import gws
6import gws.base.model
7import gws.config.util
8import gws.lib.intl
9import gws.lib.mime
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"""
27class Props(gws.Props):
28 mapSize: Optional[gws.Size]
29 pageSize: Optional[gws.Size]
30 title: str
33DEFAULT_MAP_SIZE = (50, 50, gws.Uom.mm)
34DEFAULT_PAGE_SIZE = (210, 297, gws.Uom.mm)
37class Object(gws.Template):
38 def configure(self):
39 self.title = self.cfg('title', default='')
40 self.subject = self.cfg('subject', default='')
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)
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')
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 )
61 def prepare_args(self, tri: gws.TemplateRenderInput):
62 args = tri.args or {}
63 args.setdefault('app', self.root.app)
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()
73 f = gws.lib.intl.formatters(locale)
75 args.setdefault('locale', locale)
76 args.setdefault('date', f[0])
77 args.setdefault('time', f[1])
78 args.setdefault('number', f[2])
80 # obsolete
81 args.setdefault('gwsVersion', self.root.app.version)
82 args.setdefault('gwsBaseUrl', gws.c.SERVER_ENDPOINT)
84 return args
86 def notify(self, tri: gws.TemplateRenderInput, message: str):
87 if tri.notify:
88 tri.notify(message)