[genropy] Re: Problemi in webpages

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy@xxxxxxxxxxxxx
  • Date: Fri, 30 Sep 2016 16:43:59 +0200


Il giorno 30 set 2016, alle ore 16:34, Luigi Renna <luigi@xxxxxxxxxxxxx> ha 
scritto:



Il 29/09/2016 18:40, Giovanni Porcari ha scritto:
Ultima nota : se il socio è già registrato per l'assemblea dovresti impedire
un doppio caricamento.

Per farlo potresti mettere alla dbselect della scelta socio una condition:

        fb.dbselect(value='^.socio', dbtable='test.soci',
                    lbl='Socio', rowcaption='$denominazione', 
selected_id='.codice_socio',
                    auxColumns='$denominazione,$codsocio', colspan=2, 
width='100%'
                    condition="@presenza_socio.idassemblea!=:assemblea", 
condition_assemblea='^.assemblea')

Per farlo devi aver messo come relation_name tra socio e presenza 
'presenza_socio'.

Se hai dei dubbi o se non va fammi sapere.


Grazie, funziona tutto tranne questa fb.dbselect, debbo ancora provare il 
plainTableHandler, io avevo gia una relazione tra presenze e soci, 

class Table(object):
    def config_db(self,pkg):
        tbl =  
pkg.table('presenze',pkey='id',caption_field='idsocio',name_long='presenze',name_plural='presenze')
        self.sysFields(tbl)
        tbl.column('delegato',size='1',name_long='delegato')
        tbl.column('datacarico',dtype='DH',name_long='data carico')
        
tbl.column('idassemblea',size='22',name_long='idassemblea').relation('assemblea.id',relation_name='presenze_assemblea',
 mode='foreignkey', onDelete='cascade')
        
tbl.column('idsocio',size='22',name_long='idsocio').relation('soci.id',relation_name='presenze_soci',
 mode='foreignkey', onDelete='cascade')

ma utilizzando questa relazione mi da l'errore: Error code GNR-001 : Missing 
field @presenze_socio in table test.soci (requested field )

In che modo caso mai posso mettere la relazione nel campo ID nel model? Posso 
relazionare lo stesso campo a più tabelle e se si come?
Grazie



Innanzitutto mi permetto di darti un piccolo consiglio che poi ci agevola nel 
darti aiuto:

a meno che non ci siano ragioni particolari ti suggerisco le seguenti 
convenzioni:

Nome di tabella singolare socio e non soci e presenza e non presenze. 
Nome chiave primaria sempre e solo 'id'
nomi foreign key = nome della tabella + '_id'

usando quest convenzioni avresti:

tbl.column('assemblea_id',size='22',name_long='assembleaId').relation('assemblea.id',relation_name='presenze_assemblea',
 mode='foreignkey', onDelete='cascade')
tbl.column('socio_id',size='22',name_long='socioId').relation('socio.id',relation_name='presenze_socio',
 mode='foreignkey', onDelete='cascade')

Il vantaggio è che guardando i vari esempi e il codice di genropy ti ritrovi 
più facilmente ed è più facile capire.

Tornando al tuo problema, mi metteresti esattamente il codice della dbselect ?

se è quello che ti avevo suggerito è :

    fb.dbselect(value='^.socio', dbtable='test.soci',
                   lbl='Socio', rowcaption='$denominazione', 
selected_id='.codice_socio',
                   auxColumns='$denominazione,$codsocio', colspan=2, 
width='100%'
                   condition="@presenza_socio.idassemblea!=:assemblea", 

e quindi noterai che il relation name è 'presenza_socio' mentre tu hai scritto 
'presenze_socio'.

La ragione potrebbe quindi essere questa.

Ora ti è chiaro il motivo per cui sono pignolo su singolari e plurali ma è 
facile
poi confondersi :)

G




Other related posts: