Changeset 137

Show
Ignore:
Timestamp:
02/26/06 21:08:03 (3 years ago)
Author:
tim
Message:

updated verbosity and exception handling

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tags/0.3.2/pyramid/build.py

    r123 r137  
    2727 
    2828 
    29 def build(data,out,verbose=False,resourcedirs=[],rebuilddirs=None,partialbuild=False,constants=None): 
     29def build(data,out,verbose=0,resourcedirs=[],rebuilddirs=None,partialbuild=False,constants=None,update=False): 
    3030 
    3131    DATADIR = os.path.abspath(data) 
     
    7979        ctx.relpathparent = path(basedir).relpathto(ctx.path.parent) 
    8080         
    81         if ctx.verbose: 
    82             print '>'*80 
    83             print '## Current Directory ( %s )' % str(ctx.relpath) 
    84          
    8581        # ignore svn folders 
    8682        try: 
     
    118114            if matchesRebuildDir: 
    119115                ctx.data = pickle.load(open(cachepathparent)).data 
     116                 
    120117            if matchesRebuildDir or rebuilddirs is None: 
     118                if ctx.verbose > 0: 
     119                    print '.. %s Built from Source Files' % str(ctx.relpath) 
     120 
    121121                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                     
    123133                file(os.path.join(OUTPUTDIR,root,'index.html'),'w').write(html) 
    124134                pickle.dump(ctx,open(cachepath,'w')) 
     135            else: 
     136                if ctx.verbose > 1: 
     137                    print '.. %s Rebuilt from Cached Data' % str(ctx.relpath) 
    125138                 
    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                 
    133140def main(options,args): 
    134141    if options.resources: 
     
    156163        constants = None     
    157164 
    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
    159166 
    160167 
     
    164171    parser.add_option("-o", "--out", dest="out", help="directory in which to save output (will be emptied)", metavar="OUT") 
    165172    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")     
    167176    parser.add_option("-R", "--rebuilddirs",dest="rebuilddirs",help="only rebuild below these comma separated directories",metavar="REBUILDDIRS") 
    168177    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")     
    169179    (options, args) = parser.parse_args() 
    170180    main(options,args) 
  • tags/0.3.2/pyramid/flatteners.py

    r132 r137  
    201201        dir,name = os.path.split(os.path.join(dir,self.original.file)) 
    202202 
    203         if ctx.verbose
     203        if ctx.verbose > 1
    204204            print '=== Current Fragment ( %s )' % name 
    205205         
     
    220220        flattenedMergedData = flatten( mergedData, ctx, dir ) 
    221221 
    222         if ctx.verbose
     222        if ctx.verbose > 2
    223223            logPageData(mergedData) 
    224224 
    225225        # Search for the template in this directory and above 
    226226        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)) 
    240228 
    241229class FragmentFlattener(components.Adapter): 
     
    247235            template = acquireTemplate(ctx,self.original.template) 
    248236            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))     
    250238        else: 
    251239            # Get the canonical directory and filename for this file 
    252240            dir,name = os.path.split(os.path.join(dir,self.original.file)) 
    253241     
    254             if ctx.verbose
     242            if ctx.verbose > 1
    255243                print '=== Current Fragment ( %s )' % name 
    256244             
     
    264252            flattenedMergedData = flatten( mergedData, ctx, dir ) 
    265253     
    266             if ctx.verbose
     254            if ctx.verbose > 2
    267255                logPageData(mergedData) 
    268256     
    269257            # Search for the template in this directory and above 
    270258            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)) 
    272260 
    273261def getFragmentData(self,ctx,dir,name,parentdata): 
     
    304292    locals = data.locals 
    305293 
    306     if ctx.verbose
     294    if ctx.verbose > 2
    307295        logFragmentData(path(data.template),parentdata, globals, locals) 
    308296 
     
    324312    data = dictutils.merge(node.globals.copy(),locals.copy(),partialbuild=ctx.partialbuild) 
    325313    return data 
     314 
     315def 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 
    326330 
    327331# registration for adapters