Ignore:
Timestamp:
21/04/17 18:53:08 (3 years ago)
Author:
mjuckes
Message:

01.00.07

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/src/framework/reviseMipTab.py

    r954 r979  
    11 
    2 import xml, string 
     2import xml, string, glob 
    33import xml.dom, xml.dom.minidom 
    44import utils_wb 
     
    2727    oo.close() 
    2828 
     29ee = {} 
     30key='requestVar' 
     31tags = [u'label', u'mip', u'priority', u'title', u'uid', u'vgid', u'vid'] 
     32ee[key] = tags 
     33 
     34key='var' 
     35tags = [u'description', u'label', u'procComment', u'procnote', u'prov', u'provmip', u'sn', u'title', u'uid', u'unid', u'units'] 
     36ee[key] = tags 
     37 
     38key='CMORvar' 
     39tags = [u'label', u'mipTable',u'description', u'frequency',u'defaultPriority', u'deflate', u'deflate_level', u'mipTableSection', u'modeling_realm', u'mtid', u'positive', u'processing', u'prov', u'provNote', u'rowIndex', u'shuffle', u'stid', u'subGroup', u'title', u'type', u'uid', u'vid'] 
     40ee[key] = tags 
     41 
     42class edits(object): 
     43  def __init__(self,dir='exports/a1'): 
     44    fl = glob.glob( '%s/*.xlsx' % dir ) 
     45    self.rmv = set() 
     46    self.cha = dict() 
     47    for f in fl: 
     48      kk = f.split('/')[-1].split('.')[0] 
     49      assert kk in ee 
     50      tags = ee[kk] 
     51      iu = tags.index( 'uid' ) + 1 
     52      self.wb = utils_wb.workbook( f ) 
     53      sht = self.wb.book.sheet_by_name( 'data' ) 
     54      for k in range( sht.nrows ): 
     55        r = sht.row(k) 
     56        r0 = str(r[0].value) 
     57        if r0 != '': 
     58          if r0[:3] == 'DEL': 
     59            self.rmv.add( str( r[iu].value ) ) 
     60          elif r0[:3] == 'CHA': 
     61            dd = {} 
     62            for t in tags: 
     63              if t != 'uid': 
     64                dd[t] = str( r[tags.index(t)+1].value ) 
     65            self.cha[ str( r[iu].value ) ] = dd 
     66 
     67    print 'DEL: ',self.rmv 
     68    print 'CHA: ',self.cha 
     69     
     70   
    2971class revise(object): 
    3072 
    31   def __init__(self,docObject): 
     73  def __init__(self,docObject,edits=None): 
    3274 
    3375    self.mm = mipTab.mipt() 
    3476    self.mmCheck() 
    3577    self.doc = docObject.doc 
     78    self.edits = edits 
     79    print self.edits.cha 
    3680 
    3781    maps = {'grids':['tables'], 'var':['prov'], 'CMORvar':['mipTable','mtid','prov','provNote','mipTableSection'],  
     
    66110      item.setAttribute( 'frequency', l[5] ) 
    67111      this.appendChild( item ) 
     112 
     113    if edits != None: 
     114      print 'EDITS: scanning doc' 
     115      self.uid = dict() 
     116      for item in self.doc.getElementsByTagName('item'): 
     117        self.uid[ item.getAttribute( 'uid' ) ] = item 
     118      self.applyEdits() 
     119         
    68120    self.revRealm() 
     121 
     122  def applyEdits(self): 
     123    print self.edits.rmv 
     124    for s in self.edits.rmv: 
     125      item = self.uid[s] 
     126      item.parentNode.removeChild( item ) 
     127      print 'REMOVED %s' % s 
     128 
     129    for c in self.edits.cha: 
     130      item = self.uid[c] 
     131      for k,v in self.edits.cha[c].items(): 
     132        if v != item.getAttribute(k): 
     133          item.setAttribute(k,v) 
     134          print 'CHANGED %s, %s, %s' % (c,k,v) 
     135      
     136       
    69137 
    70138  def revRealm(self): 
     
    79147        if r.find( 'seaice' ) != -1: 
    80148          r = r.replace( 'seaice', 'seaIce' ) 
     149        if r.find( 'ocnBgchem' ) != -1: 
     150          r = r.replace( 'ocnBgchem', 'ocnBgChem' ) 
    81151        if r != r0: 
    82152          item.setAttribute( 'modeling_realm', r ) 
     
    117187      return ss 
    118188         
    119 de = docedit() 
    120 adv = revise(de) 
    121 de.write() 
     189opt=1 
     190if opt == 1: 
     191  de = docedit() 
     192  e = edits() 
     193  adv = revise(de, edits=e) 
     194  de.write() 
     195else: 
     196  e = edits() 
Note: See TracChangeset for help on using the changeset viewer.