module.py (1743B)
1 ''' 2 ' pnbp - pnbp is not a blogging platform 3 ' module.py 4 ' Paul Longtine <paul@nanner.co> 5 ''' 6 7 import sys, modules, template 8 9 # Built-in module, generates page as subpage 10 def modPage(t,var,data,name,page): 11 if 'settings' in data: 12 try: 13 if 'template' in data['settings']: 14 temp = file(data['settings']['template']).read() 15 16 except: 17 print("Error occured at {} using module page".format(page)) 18 print("Cannot open file {}".format(data['settings']['template'])) 19 sys.exit() 20 21 else: 22 temp = t 23 24 if 'pagevar' in var: 25 if 'settings' in data: 26 if 'pagevar' in data['settings']: 27 var['pagevar'].update(data['settings']['pagevar']) 28 29 temp = template.generate(temp,var['pagevar'],name) 30 31 else: 32 temp = template.run(template,name) 33 34 if not 'settings' == data: 35 t = {'default':temp} 36 37 else: 38 if 'location' in meta: 39 t = {data['settings']['location']:{'default':temp}} 40 41 return t 42 43 # Gets subpages from module specified in data 44 def getSubpages(t,var,data,name,page): 45 returns = {} 46 if not "settings" in data: 47 data['settings'] = {} 48 49 # try: 50 returns = getattr(modules, data['mod']).getPages(t, data['settings'], name, page) 51 52 # except Exception,e: 53 # print("Error occured at {} using module {}:".format(page,data['mod'])) 54 # if type(e) == KeyError: 55 # print("Missing attribute {}".format(e)) 56 # sys.exit() 57 # 58 # else: 59 # print(e) 60 # 61 return returns 62 63 # Runs modules defined in pages.json 64 # 65 # t = raw template, var = "pagemod" variables in pages.json (<pagename> -> "pagemod") 66 def run(t,var,page): 67 subpage = {} 68 for name, meta in var['pagemod'].items(): 69 if meta['mod'] == "page": 70 subpage.update( 71 modPage(t,var,meta,name,page) 72 ) 73 74 else: 75 subpage.update( 76 getSubpages(t,var,meta,name,page) 77 ) 78 79 return subpage