R: R: [Zope-it] Re: Problemi con SQLgroup e una domanda
Giuseppe Masili
g.masili@mixad.it
Thu, 15 Mar 2001 18:07:15 +0100
Fai un'altra select di controllo prima di fare l'insert.
Nel Caso in cui in quel preciso istante un altro utente è stato + veloce, un
REDIRECT manderà
ad una pagina di errore nella quale gli verrà segnalato che è troppo lento :))
Altrimenti procederà a prenotare in quel determinato orario.
gli SQLMethods nel Tuo DTML Method vengono eseguiti uno dopo l'altro.
# Volevo anche ringraziarti per aver fatto presente nella ml italiana che sono
# stati risolti i problemi di ParsedXML 01.b3 per Win.
--
AdeL
irc.debian.org 6667 #Zope-it
Zanotti Michele wrote:
> Ciao Giuseppe,
> vigile angelo custode della nostra trafficatissima ml! :)
> Come vedi non mi arrendo e approfitto ancora della tua cortesia e
> competenza. Per oggi il mio Zope-time è finito, se vuoi rispondermi fallo
> quando vuoi.
> > Prima cosa un buon DB
> Potrei usare anche Oracle, ma vorrei utilizzare Interbase, per avere la
> possibilità di gestirmi un mio ambiente di prova e mettere su un sistema il
> più possibile free. (Sicurezza a parte!
> mi pare documentato e su Linux&C. ci sono decenti -al mio livello- articoli
> che ne parlano bene).
> > Farei una SELECT che visualizzi tutte le risorse disponibili.
> > magari rappresentate graficamente in una tabella.
> > Contrassegnare tutte quelle libere con un link del tipo
> > <a href="[link al Tuo DTML Method]?[id=della risorsa]">prenota</a>
> > creando questi link con un ciclo sui risultati della select e mettendo
> >id=<dtml-var id_risorsa>
> Per visualizzare mi piacerebbe utilizzare il dtml-calendar, ho un pò di
> difficoltà a capire se ha una opzione di configurazione in italiano e nelle
> prove precedenti ho ottenuto visualizzazioni scorrette nel caso chiedessi
> solo di mostrare i giorni da lunedì a venerdì.
> >- Il DTML Method deve contenere un insert nel Tuo DB e un REDIRECT alla Tua
> >tabella
> >rifacendo la SELECT per controllare la modifica.
> Qui secondo me dipende da come si intende memorizzare le prenotazioni. Io
> penso ad una tabella
> idRisorsa, dataPrenotazione, oraInizioPren, oraFinePren etc.. Con questo
> approccio, a mio parere, devo per forza fare un controllo prima di eseguire
> l'insert, che tecnicamente potrebbe anche andare a buon fine ma poi dare
> risultati disastrosi (io prenoto dalle 9 alle 12, tu dalle 11 alle 13, e...
> va bè, andiamo a farci un caffè... devo proprio offrirtene uno).
> Comunque "a prescindere" la mia curiosità è: se nel DTMLMethod ho due
> SQLMethods, essi vengono gestiti come fossero parte di una transazione
> serializzata (spero sia il termine esatto)? Mi spiego col caso in questione:
> se con una select controllo che la risorsa è libera ed eventualmente con un
> insert inserisco, posso essere sicuro che in mezzo a loro non si inseriscano
> select e insert di un altro utente? Insomma vorrei capire un pò di più come
> ragiona Zope in questi casi.
> Scusa se te l'ho fatta lunga, ma vorrei essere chiaro.
> Ciao e ancora grazie.
> Michele
> P.S. SQLGroup mi sembra un tag estremamente potente, dato che puoi
> utilizzare lo stesso template per query diverse!
>
> bye
>
> --
> AdeL
>
> > Ciao Stefano,
> > la tua mail mi è di notevole conforto spirituale, è bello non sentirsi
> soli
> > :).
> > Se segui la ml americana, forse avrai visto che ho racimolato tutto il mio
> > poco inglese e...
> > mi hanno risposto (uno, Casey Duncan, mi pare) e mi sembra che funzioni!
> > Basta mettere invece che type="string" type="nb" comunque ti allego la
> > risposta:
> > "Use type=nb in place of type=string on the last 2 sql-tests. "nb" stands
> > for non-blank string. Normal string accept blank values as you have
> > found already."
> > Rimane il fatto che secondo me in Zope Book in quel punto c'è un pò di
> > confusione. (Ho scritto
> > anche all'indirizzo riportato in fondo al capitolo ma finora non mi hanno
> > risposto).
> > Aggiungo una domanda. Vorrei implementare un piccolo sistema di
> prenotazione
> > di una risorsa (tipo una sala riunioni), una select per vedere se è
> libera,
> > eventualmente un insert per prenotare.
> > Se metto i due sqlmethod in una stesso dtml-method, tenendo conto che
> userei
> > interbase 6.01, posso
> > confidare che zope li esegua con una transazione serializzata e posso
> > considerare il problema del bloccaggio risolto, o mi consigliate di
> mettere
> > select ed insert in una transazione serializzate in una stored procedure?
> O
> > c'è di meglio (non ho mai affrontato il problema del lock delle tabelle).
>
> _______________________________________________
> Zope-it maillist - Zope-it@zope.org
> http://lists.zope.org/mailman/listinfo/zope-it