Nuværende år¶
Funktioner der afhænger af året hvor den nuværende BEST er valgt (såsom generering og parsing af relative titler) kan enten kaldes med et bestemt årstal eller bruge et nuværende årstal defineret i den kaldende kode.
For at sætte det nuværende årstal for en bestemt kodeblok bruges
set_gfyear() enten som decorator eller som
context manager.
For at aflæse det nuværende årstal bruges get_gfyear().
-
tktitler.set_gfyear(gfyear)[source]¶ Sæt årstallet hvor den nuværende BEST er valgt.
Kan bruges som decorator eller context manager.
Parameters: gfyear (int) – året som relative titler i kodeblokken bliver regnet ud efter. Typisk året hvor nuværnde BEST er valgt. Example: >>> with tk.set_gfyear(2013): ... tk.prefix(('FORM', 2012)) 'GFORM'
>>> @tk.set_gfyear(2016) ... def get_j60_name(title): ... return tk.prepostfix(title) >>> get_j60_name(('FORM', 2013)) 'OFORM 2013/14'
Man kan give en lambda som argument for at beregne året på ny hver gang funktionen bliver kaldt. Den givne lambda bliver kaldt én gang i starten af funktionen. For eksempel:
>>> y = 2013 >>> @tk.set_gfyear(lambda: y) ... def foo(): ... return tk.prefix(('FORM', 2012)) >>> foo() 'GFORM' >>> y = 2015 >>> foo() 'OFORM'
Hvis man bruger constance, kan man eksempelvis hente året fra databasen:
>>> from constance import config # doctest: +SKIP >>> @tk.set_gfyear(lambda: config.GFYEAR) ... def get_title_list(titles): ... result = [] ... for x in titles: ... result.append(tk.prefix(x)) ... return ', '.join(result)
Læg mærke til at følgende ikke virker:
>>> tk.set_gfyear(2016)
>>> tk.prefix(("FUBØ", 2011))
-
tktitler.get_gfyear(gfyear=None)[source]¶ Returner et ikke-None argument eller det nuværende gfyear.
Parameters: gfyear (int) – kan gives en ikke-None værdi for at overskrive det nuværende gfyear. Return type: int Example: >>> def current_age(gfyear=None): ... return tk.get_gfyear(gfyear) - 1956 >>> current_age(2016) 60 >>> with tk.set_gfyear(2031): ... current_age() 75