[genropy] Re: Uso dei packages...

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy <genropy@xxxxxxxxxxxxx>
  • Date: Tue, 8 Nov 2016 23:49:40 +0100


Il giorno 08 nov 2016, alle ore 23:38, Massimo Masson <max@xxxxxxxxxxxxxxx> 
ha scritto:

Il 07/11/2016 17:42, Massimo Masson ha scritto:
[...]
La prova che vorrei fare è usare una (o più) tabelle di un
progetto:package esterno al progetto (se è un package interno al
progetto rientro nella stessa casistica comunque, giusto?) per
utilizzarle in un form.
[...]

Mi sto riguardando i vecchi tutorial, e sto ragionando e facendo prove.

Sono sull'esempio relativo alla tabella "Cliente", dove viene definita una 
relazione al package esterno tramite la provincia. Nel model si trova la 
relazione:

[...]
tbl.column(‘provincia’, size=’2’, name_long=’Provincia’, 
name_short=’pr’).relation(‘glbl.provincia.sigla’, relation_name=’clienti’, 
mode=’foreignkey’)
[...]

ok, capisco: glbl.provincia.sigla => package.tabella.campo_chiave

il package esterno era stato definito nell'istanza del progetto fatturazione, 
in instanceconfig.xml, con:
[...]
<package>
      [...]
      <gnr_it_glbl pkgcode="gnr_it:glbl" />
</package>
[...]

Da qui capisco che il progetto era gnr_it, e sono interessato al package glbl.

Quello che non capisco, o che al livello attuale delle mie conoscenze non mi 
aspetterei in questo modo, è il riferimento a "glbl" come nome del package 
nella .relation(...) di cui sopra.

Mi spiego: mi sarei aspettato un riferimento che comprendesse il progetto cui 
il package appartiene (gnr_it:glbl per essere esplicito), per evitare 
sovrapposizioni con altri packages. Così facendo invece, se avessi due 
packages con lo stesso nome in due progetti diversi, come potrei 
distinguerli? Oppure ciascun package dovrebbe avere un nome univoco 
indipendentemente dal progetto in cui è definito?

Fai un'osservazione corretta sul piano teorico. In pratica il è necessario 
adottare una strategia di nomi di package che, per
loro natura, si prestano ad essere usati in diversi contesti.

In pratica, ogni progetto ha uno o più package principali e importano package 
comuni.

Ad esempio erpy definisce erpy_base, erpy_coge, erpy_mag e via dicendo ovvero 
nel package comunque viene
messo anche il nome del progetto principale. Diciamo che non esiste una 
strategia di nomi molto
burocratica. In ogni caso non ci possono essere omonimie all'interno di 
un'istanza e quindi in caso di dubbio
pensa a mettere un prefisso al nome del package se pensi che sia usabile in 
progetti diversi.


Altra domanda: in alternativa potrei aspettarmi di fare riferimento non a 
progetto:package o al package, ma al nome definito in instanceconfig.xml 
(gnr_it_glbl per intenderci).
Quel nome così definito dove viene utilizzato nel mio progetto/package?
(perché quel nome è collegato ad un progetto:package ben definito, e questo 
mi sembra chiaro).

Il punto è che usi spessissimo il nome del package all'interno del tuo codice 
python e quindi
non può essere parametrico.


Perdonami Giovanni, ma evidentemente non ho ancora realmente finito di 
mettere ordine in questi concetti... ma per me è importante.
Francamente in questo momento mi risultano più difficili questi aspetti che 
progettare il model di una mia analisi :-)




Grazie dei chiarimenti e delle correzioni,
Massimo.



Tu chiedi pure che ripetere non fa mai male ;)


G

Other related posts: