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.

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