Definire un package¶
Prendiamo a titolo di esempio il file main del package fatt di Sandbox:
class Package(GnrDboPackage):
def config_attributes(self):
return dict(comment='Package demo fatturazione',sqlschema='fatt',language='it',
name_short='Fatturazione', name_long='Fatturazione', name_full='Fatturazione')
def config_db(self, pkg):
pass
def custom_type_money(self):
return dict(dtype='N',format='#,###.00')
Per creare un package quindi:
definiamo una classe
Package
che eredita da GnrDboPackageridefiniamo un metodo obbligatorio
config_attributes
, dove andiamo a specificare tutti gli attributi del package, innanzituttocomment
, i variname_
, l”sqlschema
(ovvero lo schema delle tabelle sul database), e una serie di altri attributi facoltativi.
Suggerimento
Un package può richiedere obbligatoriamente degli altri package. Definendo questa dipendenza con il metodo:
def required_packages(self):
return ['gnrcore:glbl']
Faremo sì che anche senza indicare nell’istanza il package obbligatorio, questo verrà incluso automaticamente al lancio, così da evitare errori. Può essere un buon modo per evitare di includere specificatamente alcuni package molto di base (come per esempio glbl)
Notiamo che la classe Package che abbiamo così definito è una classe «astratta» di mixin. Sarà poi il motore di Genropy a istanziare l’oggetto DbPackageObj partendo dalla traccia semplificata che abbiamo fornito noi: il programmatore si limita infatti a descrivere la «punta dell’iceberg», e l’ORM si occuperà del resto.
Per i dettagli sul funzionamento dell’oggetto Package rimandiamo alla sezione dedicata .
Parametri:
Nome parametro |
Tipo |
Descrizione |
---|---|---|
comment |
T |
Un attributo descrittivo sul package |
sqlschema |
T |
Definisce il nome dello schema SQL |
sqlprefix |
B |
Definisce se lo schema presenta un prefisso o meno |
name_short |
T |
Il nome breve |
name_long |
T |
Il nome lungo (usato nel menu) |
name_full |
T |
Il nome completo |
packageTags |
T |
Specificando i packageTags, verranno automaticamente creati dei tag di autorizzazione (es: packageTags=”BTEST:Beta tester”) |
Autore della sezione: Davide Paci