def actionOnInstance(self,instance=None,action=None,package=None,selectedTables=None,**kwargs): app = GnrApp(instance) #it does not work in uwsgi fix it if action=='make_menu': ThPackageResourceMaker(app,package=package,tables=selectedTables).makeMenu() if action.startswith('make_resources'): ThPackageResourceMaker(app,package=package,tables=selectedTables, force=action=='make_resources_force').makeResources() if action in ('dbsetup','import_legacy'): destdb = app.db if destdb.model.check(): self.log('applyModelChanges') destdb.model.applyModelChanges() if action =='import_legacy': app.importFromLegacyDb(thermo_wrapper=self.utils.quickThermo, thermo_wrapper_kwargs=dict(labelcb=lambda table: table))
def loadApp(self): if not self.instance: raise TestError("Please specify an instance name") self.app = GnrApp(self.instance, forTesting=True) base_dir = os.path.dirname(sys.modules[self.__class__.__module__].__file__) # Load preferences if self.load_preferences: fullname = os.path.join(base_dir, self.load_preferences) if not os.path.isfile(fullname): raise TestError("Missing preferences file: %s" % fullname) self.loadPreferences(fullname) # Load data files for datafile in self.load_data: fullname = os.path.join(base_dir, datafile) if not os.path.isfile(fullname): raise TestError("Missing data file: %s" % fullname) basename, ext = os.path.splitext(fullname) if ext == '.yaml': self.loadYamlDataFile(fullname) elif ext == '.xml': self.loadXmlDataFile(fullname) elif ext == '.sql': self.loadSqlDataFile(fullname) else: raise TestError("Unknown data file format: %s" % fullname)
def extdb_importFromExtDb(self,connection_params=None,instance=None,package=None): app = GnrApp(instance) destdb = app.db if destdb.model.check(): destdb.model.applyModelChanges() if connection_params and (connection_params['dbname'] or connection_params['filename']): sourcedb = self.extdb_getSourceDb(connection_params) sourcedb.model.build() for table in destdb.tablesMasterIndex()[package].keys(): self.extdb_importTable(sourcedb,destdb,package,table) destdb.commit() sourcedb.closeConnection() destdb.closeConnection()
def db_setup(self, instance_name, storename=None): if self.instance_exists(instance_name): app = GnrApp(self.instance_folder(instance_name)) if storename == '*': stores = [None] + app.db.dbstores.keys() else: stores = [storename] for storename in stores: app.db.use_store(storename) changes = app.db.model.check() if changes: app.db.model.applyModelChanges() else: raise Exception('Instance %s does not exists' % instance_name) for storename in stores: app.db.use_store(storename)
def db_synced(self, instance_name, storename=None, verbose=False): if self.instance_exists(instance_name): changes_dict = dict() app = GnrApp(os.path.join(self.instance_folder(instance_name), 'instanceconfig.xml')) if storename == '*': stores = [None] + app.db.dbstores.keys() else: stores = [storename] for storename in stores: app.db.use_store(storename) changes = app.db.model.check() if not verbose and changes: return False else: changes_dict[storename or 'Main'] = changes if not verbose: return True else: return changes else: raise Exception('Instance %s does not exists' % instance_name)
def example_6(body): sandbox_app = GnrApp('sandbox') glbl_table = sandbox_app.db.table('glbl.provincia') province = glbl_table.query().fetch() l = body.layout(width=200, top=5, left=5, border_width=0.3, border_color='grey', border_style='solid') headers_row = l.row(height=10) headers_row.cell('Sigla', width=20, style='text-align:center; font-weight:bold;') headers_row.cell('Nome', style='text-indent:10mm; font-weight:bold;') for pr in province: r = l.row(height=10) r.cell(pr['sigla'], width=20, style='text-align:center;') r.cell(pr['nome'], style='text-indent:10mm;')
def dbSetupOnInstance(self,instance=None): app = GnrApp(instance) destdb = app.db if destdb.model.check(): destdb.model.applyModelChanges()
from gnr.app.gnrapp import GnrApp from gnr.core.gnrbag import Bag app = GnrApp('moscati') db = app.db qin = db.table('glbl.provincia').query(columns='$sigla,$nome', where='( $sigla IN :s )', s=['AL', 'MI', 'CO', 'BG', 'BS', 'RM'], order_by='$sigla') #qany = db.table('glbl.provincia').query(columns='$sigla,$nome',where='NOT ( $sigla = ANY(:s) )',s=['AL','MI','CO','BG','BS','RM'],order_by='$sigla') #event = db.table('base.event') #qevt = event.query(columns='$id,$inpatient,@estimate_id.inv_total,@estimate_id.inv_total_test') #print qevt.sqltext #res = estimate.query(columns='$id,$inv_total_test,$inv_total',limit=1).selection().output('grid') #q = estimate.query(columns='$id,@service_id.@patient_id.name_full') print qin.fetch()
# encoding: utf-8 from gnr.app.gnrapp import GnrApp db = GnrApp('faterpg').db stunt_tbl = db.table('fate.stunt').setStandardSet() db.commit() print 'fatto'
from gnr.core.gnrlist import XlsReader from gnr.app.gnrapp import GnrApp def importXlsComuni(db, docname): reader = XlsReader(docname) comune = db.table('glbl.comune') province_dict = db.table('glbl.provincia').query().fetchAsDict( 'codice_istat') print 'province', province_dict for row in reader(): row = dict(row) row['litoraneo'] = True if row['litoraneo'] is 1 else False row['capoluogo'] = True if row['capoluogo'] is 1 else False row['sigla_provincia'] = province_dict[ row['codice_provincia']]['sigla'] comune.insert(row) if __name__ == '__main__': db = GnrApp('autosped').db importXlsComuni(db, '../../../data/comuni.xls') db.commit() print 'OK'
if r["code"].startswith(parent_rec["code"]): oldrecord = dict(r) r["parent_id"] = parent_rec["id"] self.update(r, oldrecord) hasparent = True break if hasparent: prev_list = [r] + prev_list else: prev_list = [r] if __name__ == "__main__": from gnr.app.gnrapp import GnrApp db = GnrApp("autosped").db nuts = db.table("glbl.nuts") nuts.setParent() db.commit() # f = nuts.query(order_by='code',for_update=True,addPkeyColumn=False).fetch() # prev_list = [] # for r in f: # if prev_listr['code'].startswith(prev_code): # oldrecord = dict(r) # r['parent_id'] = prev_rec['id'] # nuts.update(r,oldrecord) # elif len(r): # prev_rec = r # prev_code = r['code'] # db.commit()
qta = base_qta * randint(0, 5) + randint(0, base_qta) + randint(1, 10) record_riga['aliquota_iva'] = prodotto['aliquota_prodotto'] record_riga['quantita'] = qta record_riga['prodotto_id'] = prodotto['id'] record_riga['prezzo_unitario'] = prodotto['prezzo_unitario'] record_riga['prezzo_totale'] = prodotto['prezzo_unitario'] * qta record_riga['iva'] = record_riga['prezzo_totale'] * record_riga[ 'aliquota_iva'] / Decimal(100) self.tbl_fattura_riga.insert(record_riga) def crea_fattura(self, cliente, data): record_fattura = dict(cliente_id=cliente['id'], data=data) base_qta = self.basi_qta[cliente['cliente_tipo_codice']] self.tbl_fattura.insert(record_fattura) for _ in range(randint(1, 8)): self.crea_riga(record_fattura['id'], base_qta) def popola(self): for data in self.dates: for _ in range(randint(0, self.max_fatture_giorno)): cliente = self.clienti[randint(0, self.len_clienti - 1)] self.crea_fattura(cliente, data) self.db.commit() if __name__ == '__main__': sb = GnrApp('sandbox') pop = Populator(sb) pop.popola()
def getFakeApplication(self,project,package): custom_config = Bag() pkgcode='%s:%s' %(project,package) custom_config.setItem('packages.%s' %pkgcode,None,pkgcode=pkgcode) return GnrApp(custom_config=custom_config)
hasparent = False for parent_rec in prev_list: if r['code'].startswith(parent_rec['code']): oldrecord = dict(r) r['parent_id'] = parent_rec['id'] self.update(r, oldrecord) hasparent = True break if hasparent: prev_list = [r] + prev_list else: prev_list = [r] if __name__ == '__main__': from gnr.app.gnrapp import GnrApp db = GnrApp('autosped').db nuts = db.table('glbl.nuts') nuts.setParent() db.commit() #f = nuts.query(order_by='code',for_update=True,addPkeyColumn=False).fetch() #prev_list = [] #for r in f: # if prev_listr['code'].startswith(prev_code): # oldrecord = dict(r) # r['parent_id'] = prev_rec['id'] # nuts.update(r,oldrecord) # elif len(r): # prev_rec = r # prev_code = r['code'] #db.commit()
tblObj = db.table('showcase.movie') for item in dataBag['movie']: record = {} record['title'] = item.getAttr('title') record['year'] = item.getAttr('year') record['nationality'] = item.getAttr('nationality') record['number'] = item.getAttr('id') record['genre'] = item.getAttr('genre') tblObj.insert(record) def importCast(db, dataBag): tblObj = db.table('showcase.cast') movies = db.table('showcase.movie').query(columns='$id').fetch() people = db.table('showcase.person').query(columns='$id').fetch() for item in dataBag['cast']: record = {} record['person_id'] = people[int(item.getAttr('person_id'))]['id'] record['movie_id'] = movies[int(item.getAttr('movie_id'))]['id'] record['role'] = item.getAttr('role') record['prizes'] = item.getAttr('prizes') tblObj.insert(record) if __name__ == '__main__': db = GnrApp('testgarden').db dataBag = Bag('data.xml') importPeople(db, dataBag) importMovie(db, dataBag) importCast(db, dataBag) db.commit()
record['sigla'] = r[1].strip() record['nome'] = r[0].strip() tbl.insert(record) d[record['nome']] = record['sigla'] return d def importCodici(db, filepath, d): tbl = db.table('glbl.nazione') f = file(filepath) t = f.read() lines = t.split('\n') for l in lines: if l: r = l.split(';') record = {} nome = r[0].strip() if nome in d.keys(): record['sigla'] = d[nome].strip() record['codice_istat'] = r[1].strip() tbl.update(record) if __name__ == '__main__': db = GnrApp('/usr/local/genro/data/instances/condox').db d = importSigleNaz(db, '/Users/saverioporcari/Desktop/sigle_naz.txt') importCodici(db, '/Users/saverioporcari/Desktop/codice_naz.txt', d) db.commit() print 'update done'
def app(self): if not self._app: self._app = GnrApp(self.instance_name, forTesting=self.testing_data or True) return self._app
if isinstance(tmp_result, Bag): result = tmp_result elif isinstance(tmp_result, dict): result = Bag(tmp_result) else: result = Bag(result=tmp_result) except Exception, e: self.db.table('sys.error').writeException( description='Error in task %s %s :%s' % (task['table_name'], task['command'], str(e))) raise result = Bag(error=unicode(e)) log_result = True if log_result: with self.db.tempEnv(connectionName='system'): self.db.table('sys.task_result').insert( dict(task_id=task['id'], result=result, result_time=timestamp)) self.db.commit() def runScheduled(self, page=None): tasks = self.findTasks() for task in tasks: self.runTask(task, page=page) if __name__ == '__main__': from gnr.app.gnrapp import GnrApp a = GnrApp('testgarden') a.db.table('sys.task').findTasks()
def setup_class(cls): cls.app = GnrApp(INSTANCE_NAME) cls.db = cls.app.db
hasparent = False for parent_rec in prev_list: if r['code'].startswith(parent_rec['code']): oldrecord = dict(r) r['parent_id'] = parent_rec['id'] self.update(r,oldrecord) hasparent = True break if hasparent: prev_list = [r]+prev_list else: prev_list = [r] if __name__ == '__main__': from gnr.app.gnrapp import GnrApp db = GnrApp('autosped').db nuts = db.table('glbl.nuts') nuts.setParent() db.commit() #f = nuts.query(order_by='code',for_update=True,addPkeyColumn=False).fetch() #prev_list = [] #for r in f: # if prev_listr['code'].startswith(prev_code): # oldrecord = dict(r) # r['parent_id'] = prev_rec['id'] # nuts.update(r,oldrecord) # elif len(r): # prev_rec = r # prev_code = r['code'] #db.commit()
inq_no_paga = True tipo_prop = 'Inquilino' tipo_gest = u['tipogest'] if ((tipo_gest == 'Ordinaria' and u['spese_ord']) or (tipo_gest != 'Ordinaria' and u['spese_str'])): if u['tipo'] == 'Inquilino': if u['xflag4']: opz = 'I' fraz = 1 inq_no_paga = False else: fraz = 0 if u['xflag1']: fraz = float(pp['quota']) / u['xsumquote'] opz = 'D' else: fraz = 0 result['quota'] = '%s %i/%i' % (opz, u['quota'], u['xsumquote']) result['fraz'] = fraz result['scaduto'] = 0 result['versato'] = 0 result['saldo_prec'] = 0 result['saldo'] = 0 return result if __name__ == "__main__": app = GnrApp('/usr/local/genro/data/instances/idea') db = app.db sit = ManagerSituazioni(db) sit.situazioniPerPersona(299)