.. _orm_genropy/orm_genropy/model/package: 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 *GnrDboPackage* - ridefiniamo un metodo obbligatorio ``config_attributes``, dove andiamo a specificare tutti gli attributi del *package*, innanzitutto ``comment``, i vari ``name_``, l'``sqlschema`` (ovvero lo schema delle tabelle sul database), e una serie di altri attributi facoltativi. .. hint:: 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 :ref:`sezione dedicata` . .. raw:: html
**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') | +------------------------+------+--------------------------------------------------+ .. sectionauthor:: Davide Paci