pnbp

a terrible but reliable site builder
Log | Files | Refs | README

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