Changeset 137
- Timestamp:
- 02/26/06 21:08:03 (3 years ago)
- Files:
-
- tags/0.3.2/pyramid/build.py (modified) (5 diffs)
- tags/0.3.2/pyramid/flatteners.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tags/0.3.2/pyramid/build.py
r123 r137 27 27 28 28 29 def build(data,out,verbose= False,resourcedirs=[],rebuilddirs=None,partialbuild=False,constants=None):29 def build(data,out,verbose=0,resourcedirs=[],rebuilddirs=None,partialbuild=False,constants=None,update=False): 30 30 31 31 DATADIR = os.path.abspath(data) … … 79 79 ctx.relpathparent = path(basedir).relpathto(ctx.path.parent) 80 80 81 if ctx.verbose:82 print '>'*8083 print '## Current Directory ( %s )' % str(ctx.relpath)84 85 81 # ignore svn folders 86 82 try: … … 118 114 if matchesRebuildDir: 119 115 ctx.data = pickle.load(open(cachepathparent)).data 116 120 117 if matchesRebuildDir or rebuilddirs is None: 118 if ctx.verbose > 0: 119 print '.. %s Built from Source Files' % str(ctx.relpath) 120 121 121 ctx.partialbuild = False 122 html = flat.flatten( [DOCTYPE,flatten(Y.fragmentConstructor(os.path.join(root,'index.yml')),ctx)] ) 122 123 try: 124 html = flat.flatten( [DOCTYPE,flatten(Y.fragmentConstructor(os.path.join(root,'index.yml')),ctx)] ) 125 except KeyError: 126 print '*'*80 127 print 'An error has occured building the %s page' % path(os.path.join(OUTPUTDIR,root,'index.html')).abspath() 128 print 'It is likely that an item of content is missing or malformed' 129 print 'The current data for this page is shown above' 130 131 sys.exit() 132 123 133 file(os.path.join(OUTPUTDIR,root,'index.html'),'w').write(html) 124 134 pickle.dump(ctx,open(cachepath,'w')) 135 else: 136 if ctx.verbose > 1: 137 print '.. %s Rebuilt from Cached Data' % str(ctx.relpath) 125 138 126 if ctx.verbose: 127 print '<'*80,'\n\n' 128 129 if ctx.verbose: 130 print '### The Final Context Data' 131 from pprint import pprint ; pprint(ctx.data) 132 139 133 140 def main(options,args): 134 141 if options.resources: … … 156 163 constants = None 157 164 158 build(options.data,options.out,verbose=options.verbose,resourcedirs=resourcedirs,rebuilddirs=rebuilddirs,constants=constants )165 build(options.data,options.out,verbose=options.verbose,resourcedirs=resourcedirs,rebuilddirs=rebuilddirs,constants=constants,update=options.update) 159 166 160 167 … … 164 171 parser.add_option("-o", "--out", dest="out", help="directory in which to save output (will be emptied)", metavar="OUT") 165 172 parser.add_option("-r", "--resources", dest="resources", help="comma separated list of resource directories to copy", metavar="RESOURCES") 166 parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="print status messages to stdout") 173 parser.add_option("-v", "--verbose", action="store_const", dest="verbose", default=0, const=1, help="print status messages to stdout") 174 parser.add_option("-V", "--veryverbose", action="store_const", dest="verbose", default=0, const=2, help="print all data to stdout") 175 parser.add_option("-W", "--veryveryverbose", action="store_const", dest="verbose", default=0, const=3, help="print all data to stdout") 167 176 parser.add_option("-R", "--rebuilddirs",dest="rebuilddirs",help="only rebuild below these comma separated directories",metavar="REBUILDDIRS") 168 177 parser.add_option("-c", "--constants", dest="constants", help="pass in the names constants (e.g. PDO=/root/pdo,PSF=/psf", metavar="CONSTANTS") 178 parser.add_option("-U", "--update", action="store_true", dest="update", default=False, help="NOT WORKING DO NOT USE try to build only those pages that have changed") 169 179 (options, args) = parser.parse_args() 170 180 main(options,args) tags/0.3.2/pyramid/flatteners.py
r132 r137 201 201 dir,name = os.path.split(os.path.join(dir,self.original.file)) 202 202 203 if ctx.verbose :203 if ctx.verbose > 1: 204 204 print '=== Current Fragment ( %s )' % name 205 205 … … 220 220 flattenedMergedData = flatten( mergedData, ctx, dir ) 221 221 222 if ctx.verbose :222 if ctx.verbose > 2: 223 223 logPageData(mergedData) 224 224 225 225 # Search for the template in this directory and above 226 226 template = acquireTemplate(ctx,self.original.template) 227 try: 228 htmlfragment = page.Fragment(os.path.join(dir,template), flattenedMergedData).generate() 229 except KeyError: 230 print '*'*80 231 print 'problem filling slot for template fragment %s using template file %s'% (name,file) 232 print '*'*80 233 print '%s %s %s'%('*'*4,'template','*'*30) 234 pprint(template) 235 print '%s %s %s'%('*'*4,'data','*'*30) 236 pprint(data) 237 print '*'*80 238 raise 239 return T.xml(htmlfragment) 227 return T.xml(fragmentGenerate(dir,template,flattenedMergedData)) 240 228 241 229 class FragmentFlattener(components.Adapter): … … 247 235 template = acquireTemplate(ctx,self.original.template) 248 236 flattenedData = flatten( self.original.globals, ctx, dir ) 249 return T.xml( page.Fragment(os.path.join(dir,template), flattenedData).generate())237 return T.xml(fragmentGenerate(dir,template,flattenedData)) 250 238 else: 251 239 # Get the canonical directory and filename for this file 252 240 dir,name = os.path.split(os.path.join(dir,self.original.file)) 253 241 254 if ctx.verbose :242 if ctx.verbose > 1: 255 243 print '=== Current Fragment ( %s )' % name 256 244 … … 264 252 flattenedMergedData = flatten( mergedData, ctx, dir ) 265 253 266 if ctx.verbose :254 if ctx.verbose > 2: 267 255 logPageData(mergedData) 268 256 269 257 # Search for the template in this directory and above 270 258 template = acquireTemplate(ctx,self.original.template) 271 return T.xml( page.Fragment(os.path.join(dir,template), flattenedMergedData).generate())259 return T.xml(fragmentGenerate(dir,template,flattenedMergedData)) 272 260 273 261 def getFragmentData(self,ctx,dir,name,parentdata): … … 304 292 locals = data.locals 305 293 306 if ctx.verbose :294 if ctx.verbose > 2: 307 295 logFragmentData(path(data.template),parentdata, globals, locals) 308 296 … … 324 312 data = dictutils.merge(node.globals.copy(),locals.copy(),partialbuild=ctx.partialbuild) 325 313 return data 314 315 def fragmentGenerate(dir,template,data): 316 # Just a wrapper for the page generate call. Adds some error reporting. 317 try: 318 htmlfragment = page.Fragment(os.path.join(dir,template), data).generate() 319 except KeyError: 320 print '*'*80 321 print 'problem filling slot in template %s in directory %s'% (template,dir) 322 print '*'*80 323 print '%s %s %s'%('*'*4,'template','*'*30) 324 pprint(template) 325 print '%s %s %s'%('*'*4,'data','*'*30) 326 pprint(data) 327 print '*'*80 328 raise 329 return htmlfragment 326 330 327 331 # registration for adapters
