<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorial on Genropy</title><link>https://www.genropy.org/blog/categoria/tutorial/</link><description>Recent content in Tutorial on Genropy</description><generator>Hugo</generator><language>it</language><lastBuildDate>Wed, 16 Apr 2025 16:27:00 +0000</lastBuildDate><atom:link href="https://www.genropy.org/blog/categoria/tutorial/index.xml" rel="self" type="application/rss+xml"/><item><title>Genropy e Docker: come creare le immagini degli applicativi</title><link>https://www.genropy.org/blog/genropy-e-docker-come-creare-le-immagini-degli-applicativi/</link><pubDate>Wed, 16 Apr 2025 16:27:00 +0000</pubDate><guid>https://www.genropy.org/blog/genropy-e-docker-come-creare-le-immagini-degli-applicativi/</guid><description>&lt;p&gt;Con il rilascio della &lt;a href="https://www.genropy.org/media/2025/04/Release-25.04-ultime-novita-di-Genropy.webp" target="_blank" rel="noreferrer noopener"&gt;versione 25.04.10 di Genropy&lt;/a&gt; è stato introdotto uno strumento di utilità per la generazione di immagini Docker. Grazie a questo nuovo strumento, è possibile creare un'immagine dell'applicativo e di tutto il necessario per poterla eseguire (&lt;em&gt;package&lt;/em&gt;, librerie, e Genropy stesso), senza bisogno di installazioni manuali o configurazioni complesse.&lt;/p&gt;
&lt;p&gt;Significa che da oggi abbiamo a disposizione un &lt;strong&gt;modo semplice e ripetibile per creare &lt;em&gt;container&lt;/em&gt; pronti al &lt;em&gt;deploy&lt;/em&gt;&lt;/strong&gt; , anche automatizzabili in pipeline CI/CD.&lt;/p&gt;</description></item><item><title>Novità: nuova modalità di installazione</title><link>https://www.genropy.org/blog/novita-nuova-modalita-di-installazione/</link><pubDate>Thu, 07 Mar 2024 15:46:17 +0000</pubDate><guid>https://www.genropy.org/blog/novita-nuova-modalita-di-installazione/</guid><description>&lt;p&gt;Siamo lieti di annunciare una grande novità che semplificherà notevolmente l&amp;rsquo;installazione di Genropy.&lt;/p&gt;
&lt;p&gt;Con il rilascio della &lt;strong&gt;versione 24.3&lt;/strong&gt; è ora disponibile il nuovo &lt;em&gt;&lt;strong&gt;installer&lt;/strong&gt;&lt;/em&gt; , che sostituendosi alla procedura precedente permette di eseguire l&amp;rsquo;installazione tramite &lt;em&gt;&lt;strong&gt;pip&lt;/strong&gt;&lt;/em&gt; , semplificando notevolmente la corretta gestione delle dipendenze sia su Mac che su Windows.&lt;/p&gt;
&lt;p&gt;È quindi possibile installare Genropy in due modalità, una &amp;ldquo;rapida&amp;rdquo; consigliata per utenti alle prime armi, che vogliono solo testare rapidamente Genropy, e una più &amp;ldquo;completa&amp;rdquo;, consigliata per gli sviluppatori abituali che necessitano del codice sorgente a portata di mano.&lt;/p&gt;</description></item><item><title>Come personalizzare le procedure di importazione</title><link>https://www.genropy.org/blog/come-personalizzare-le-procedure-di-importazione/</link><pubDate>Fri, 08 Apr 2022 11:14:44 +0000</pubDate><guid>https://www.genropy.org/blog/come-personalizzare-le-procedure-di-importazione/</guid><description>&lt;p&gt;Il tema dell'importazione da file Excel è ampiamente diffuso in Genropy, si pensi alla possibilità di &lt;a href="https://docs.genropy.org/manuale_utente_genropy/basic_elements/basic_grid.html#altre-operazioni-esportare-e-importare-excel" target="_blank" rel="noreferrer noopener"&gt;importare record di una tabella da file xls&lt;/a&gt; o addirittura alla &lt;a href="https://www.genropy.org/blog/da-file-excel-al-web-app-in-meno-di-3-minuti/" target="_blank" rel="noreferrer noopener"&gt;possibilità di creare completamente da zero un intero applicativo&lt;/a&gt; proprio da una serie di fogli. &lt;/p&gt;
&lt;p&gt;La procedura di importazione consente quindi di popolare le tabelle associando le colonne a quelle di un foglio di calcolo, anche se queste hanno nomi diversi. Supponiamo però di avere bisogno di &lt;strong&gt;personalizzare questa procedura di importazione.&lt;/strong&gt; Potrebbe essere il caso di un&amp;rsquo;importazione in cui abbiamo dei campi in relazione, per esempio, ed è quindi necessario effettuare delle query preventive, oppure i valori devono essere scritti su più tabelle, devono essere effettuate delle operazioni di controllo o modifica, ecc.&lt;/p&gt;</description></item><item><title>Come integrare un modulo di contatto Wordpress CF7 in Genropy con le API REST</title><link>https://www.genropy.org/blog/come-integrare-un-modulo-di-contatto-wordpress-cf7-in-genropy-con-le-api-rest/</link><pubDate>Tue, 22 Feb 2022 11:21:10 +0000</pubDate><guid>https://www.genropy.org/blog/come-integrare-un-modulo-di-contatto-wordpress-cf7-in-genropy-con-le-api-rest/</guid><description>&lt;p&gt;Molto spesso può capitare di voler integrare un applicativo Genropy con delle fonti di dati esterni (siti web, altri applicativi, fogli di calcolo). Una delle possibili necessità potrebbe essere quella di raccogliere i dati da un sito Wordpress: può essere il caso di una generica richiesta di informazioni da un modulo di contatto (CRM), dell&amp;rsquo;iscrizione a una newsletter, o ancora dell&amp;rsquo;iscrizione al sito, dell&amp;rsquo;invio dei dati di un ordine al software di fatturazione.&lt;/p&gt;</description></item><item><title>Come gestire file in Genropy: le attachmentTable</title><link>https://www.genropy.org/blog/come-gestire-file-in-genropy-le-attachmenttable/</link><pubDate>Mon, 22 Nov 2021 14:42:26 +0000</pubDate><guid>https://www.genropy.org/blog/come-gestire-file-in-genropy-le-attachmenttable/</guid><description>&lt;p&gt;In un software si ha molto spesso a che fare con la &lt;strong&gt;gestione di file su disco&lt;/strong&gt; , di tipologie anche molto diverse a seconda del tipo di applicativo: cataloghi, brochure, curriculum, schede tecniche, bolle di trasporto, contratti, ecc.&lt;/p&gt;
&lt;p&gt;Ciò che li accomuna è il &lt;strong&gt;collegamento con una tabella principale&lt;/strong&gt; , quella dei prodotti, dei candidati, degli ordini, anche questa ovviamente molto diversa a seconda delle funzioni dell&amp;rsquo;applicativo. Come quindi &lt;strong&gt;gestire facilmente file così diversi in ambiti totalmente differenti&lt;/strong&gt;?&lt;/p&gt;</description></item><item><title>formulaColumn parametriche</title><link>https://www.genropy.org/blog/formulacolumn-parametriche/</link><pubDate>Fri, 05 Nov 2021 14:21:58 +0000</pubDate><guid>https://www.genropy.org/blog/formulacolumn-parametriche/</guid><description>&lt;p&gt;Le &lt;a href="https://docs.genropy.org/genropy_orm/formulaColumn/formulaColumn.html" target="_blank" rel="noreferrer noopener"&gt;formulaColumn&lt;/a&gt; sono &lt;strong&gt;colonne virtuali calcolate in tempo reale al caricamento della pagina&lt;/strong&gt; dell'applicativo. Queste sono molto utili per effettuare calcoli sempre aggiornati da visualizzare in una griglia, come per esempio il totale fatturato di uno specifico cliente che visualizziamo in &lt;a href="https://docs.genropy.org/installation_guide/sandbox.html" target="_blank" rel="noreferrer noopener"&gt;Sandbox&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tuttavia, prendendo a titolo di esempio proprio questo totale fatturato, questo è un valore &amp;ldquo;assoluto&amp;rdquo;, indipendente cioè da una data, sia questa la data di lavoro, sia questa invece un&amp;rsquo;ipotetica data specificata manualmente via codice o tramite interfaccia.&lt;/p&gt;</description></item><item><title>Come realizzare un component Python in Genropy</title><link>https://www.genropy.org/blog/come-realizzare-un-component-python-in-genropy/</link><pubDate>Thu, 09 Sep 2021 11:32:42 +0000</pubDate><guid>https://www.genropy.org/blog/come-realizzare-un-component-python-in-genropy/</guid><description>&lt;p&gt;In alcuni casi può capitare di voler &lt;strong&gt;personalizzare il comportamento&lt;/strong&gt; di alcuni widget o component &amp;ldquo;core&amp;rdquo; di Genropy, oppure &lt;strong&gt;creare veri e propri blocchi o interfacce personalizzate da zero&lt;/strong&gt;. Prendiamo ad esempio il caso di una form particolarmente complessa, che vogliamo ripetere uguale (o quasi) su più pagine.&lt;/p&gt;
&lt;p&gt;È sempre buona norma rendere il nostro codice il più possibile &lt;strong&gt;riutilizzabile, flessibile e generico&lt;/strong&gt;: piuttosto che scrivere quindi righe e righe di codice ogni volta, ci converrà utilizzare i component di Genropy, che ci permettono di &lt;strong&gt;scrivere un blocco di codice in un punto dell'applicativo e richiamarlo comodamente al bisogno&lt;/strong&gt;. Un component può essere molto semplice o anche estremamente complesso: si pensi ad esempio al &lt;strong&gt;component core per eccellenza di Genropy, il &lt;a href="https://docs.genropy.org/tablehandler/" target="_blank" rel="noreferrer noopener"&gt;TableHandler&lt;/a&gt;&lt;/strong&gt;, grazie al quale con una sola riga di codice è possibile mostrare la particolare visualizzazione dei record di una tabella. &lt;/p&gt;</description></item><item><title>Le Preferenze in Genropy</title><link>https://www.genropy.org/blog/le-preferenze-in-genropy/</link><pubDate>Thu, 06 May 2021 16:21:13 +0000</pubDate><guid>https://www.genropy.org/blog/le-preferenze-in-genropy/</guid><description>&lt;p&gt;Ipotizziamo di voler inserire all&amp;rsquo;interno del nostro applicativo una procedura di controllo che impedisca il salvataggio di un record &amp;ldquo;fattura&amp;rdquo; se l&amp;rsquo;importo totale è al di sotto di un importo minimo, oppure di voler aggiungere un limite massimo allo sconto inseribile, o ancora impostare un costo della spedizione sulla base di valori reperibili da una tabella di riferimento.&lt;/p&gt;
&lt;p&gt;La soluzione potrebbe essere estremamente semplice. Prendendo il primo caso, sarebbe sufficiente posizionarsi all'interno di un &lt;em&gt;&lt;a href="https://docs.genropy.org/genropy_orm/trigger_intro.html" target="_blank" rel="noreferrer noopener"&gt;trigger&lt;/a&gt;&lt;/em&gt; e al momento del calcolo del totale in vista del salvataggio andare a sollevare un'eccezione se il totale è inferiore all'importo che specifichiamo, ad esempio "1":&lt;/p&gt;</description></item><item><title>Come arricchire le viste con le Sections</title><link>https://www.genropy.org/blog/come-arricchire-le-viste-con-le-sections/</link><pubDate>Mon, 03 May 2021 13:30:47 +0000</pubDate><guid>https://www.genropy.org/blog/come-arricchire-le-viste-con-le-sections/</guid><description>&lt;p&gt;Quando si ha a che fare con &lt;strong&gt;molti dati all'interno di una stessa vista&lt;/strong&gt; potremmo aver bisogno di sistemi per filtrare rapidamente questi dati sulla base di criteri predefiniti. In un precedente tutorial avevamo già visto come usare a tale scopo le &lt;a href="https://www.genropy.org/blog/come-definire-le-querybysample-per-impostare-criteri-di-ricerca-predefiniti/" target="_blank" rel="noreferrer noopener"&gt;&lt;strong&gt;queryBySample&lt;/strong&gt;&lt;/a&gt;, che sono particolarmente utili quando si vuole offrire dei &lt;strong&gt;criteri di ricerca predefiniti&lt;/strong&gt; (es: ricerca per artista, per titolo della canzone, per album, per genere musicale). &lt;/p&gt;
&lt;p&gt;Ipotizziamo però un caso in cui si voglia individuare tutte le tracce audio di un certo formato (&amp;ldquo;mp4&amp;rdquo;, &amp;ldquo;wav&amp;rdquo; e così via), o appartenenti allo stesso genere musicale, o raggruppando i risultati per durata: tutti casi, quindi, in cui si ha a che fare con &lt;strong&gt;pochi criteri di scelta, sempre uguali&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Come usare i semafori con i valori booleani</title><link>https://www.genropy.org/blog/come-usare-i-semafori-con-i-booleani/</link><pubDate>Fri, 12 Feb 2021 09:51:09 +0000</pubDate><guid>https://www.genropy.org/blog/come-usare-i-semafori-con-i-booleani/</guid><description>&lt;p&gt;Supponiamo di dover &lt;strong&gt;visualizzare in una Form&lt;/strong&gt; &lt;strong&gt;un valore booleano &lt;/strong&gt;che può assumere tre stati: &lt;strong&gt;Vero, Falso e nullo&lt;/strong&gt;. Può essere per esempio il caso di un campo "Iscritto alla newsletter", dove se presente una data di iscrizione viene restituito &lt;em&gt;Vero&lt;/em&gt;, se presente una data di disiscrizione viene restituito &lt;em&gt;Falso&lt;/em&gt;, o se non presente nessuna data viene restituito &lt;em&gt;null&lt;/em&gt;. Si noti quindi che il campo in sé non prevede la possibilità di inserire alcun valore direttamente, ma &lt;strong&gt;dipende da altri campi&lt;/strong&gt;, la data di iscrizione e la data di disiscrizione, che vengono peraltro compilati su una pagina esterna alla Form, e il nostro obiettivo è di mostrare nella Form questo &lt;strong&gt;valore di sola lettura&lt;/strong&gt; in modo chiaro e rapido per l'utilizzatore finale. &lt;/p&gt;</description></item><item><title>Come partizionare i dati e creare un applicativo multi-tenant</title><link>https://www.genropy.org/blog/come-partizionare-i-dati-e-creare-un-applicativo-multi-tenant/</link><pubDate>Thu, 23 Jul 2020 09:54:00 +0000</pubDate><guid>https://www.genropy.org/blog/come-partizionare-i-dati-e-creare-un-applicativo-multi-tenant/</guid><description>&lt;p&gt;Il partizionamento dei dati può rivelarsi molto utile quando l'applicativo è utilizzato da utenti che hanno necessità di accedere all'applicazione &lt;strong&gt;in modo limitato, visualizzando e modificando solo i record loro riservati&lt;/strong&gt; o da loro stessi inseriti, quando cioè ci troviamo di fronte a un &lt;strong&gt;applicativo multi-tenant&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Il partizionamento di per sé è un meccanismo che si può attivare in due semplici step:&lt;/p&gt;
&lt;p&gt;1. modificare il model della table come segue:&lt;/p&gt;</description></item><item><title>Come definire le queryBySample</title><link>https://www.genropy.org/blog/come-definire-le-querybysample-per-impostare-criteri-di-ricerca-predefiniti/</link><pubDate>Wed, 06 May 2020 18:34:51 +0000</pubDate><guid>https://www.genropy.org/blog/come-definire-le-querybysample-per-impostare-criteri-di-ricerca-predefiniti/</guid><description>&lt;p&gt;In questo tutorial proseguiremo con il miglioramento dell'applicativo che abbiamo generato automaticamente nella &lt;a href="https://www.genropy.org/blog/dal-database-alla-web-app-in-meno-di-2-minuti/" target="_blank" rel="noreferrer noopener"&gt;Genropill 4: "Dal database alla web app in meno di 2 minuti"&lt;/a&gt; e che abbiamo cominciato a modificare nel &lt;a href="https://www.genropy.org/blog/definire-classi-view-e-form-diverse-in-base-alle-necessita/" target="_blank" rel="noreferrer noopener"&gt;Tutorial: "Definire classi view e form diverse in base alle necessità"&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Nel caso precedente avevamo creato classi &lt;strong&gt;View&lt;/strong&gt; e &lt;strong&gt;Form&lt;/strong&gt; differenti in base a differenti scenari d'uso. Tra le personalizzazioni effettuate avevamo visto velocemente l'uso del metodo &lt;strong&gt;&lt;em&gt;th_queryBySample&lt;/em&gt;&lt;/strong&gt;, per definire nella pagina uno strumento di &lt;strong&gt;ricerca più immediato&lt;/strong&gt; e semplice per l'utente finale.&lt;/p&gt;</description></item><item><title>Definire classi view e form diverse in base alle necessità</title><link>https://www.genropy.org/blog/definire-classi-view-e-form-diverse-in-base-alle-necessita/</link><pubDate>Wed, 22 Apr 2020 10:49:54 +0000</pubDate><guid>https://www.genropy.org/blog/definire-classi-view-e-form-diverse-in-base-alle-necessita/</guid><description>&lt;p&gt;Un tipo di pagina molto usata in Genropy è la &lt;strong&gt;&lt;em&gt;thpage&lt;/em&gt;&lt;/strong&gt;, ovvero una pagina che è quasi interamente costituita da un &lt;em&gt;tableHandler &lt;/em&gt;con l'aggiunta di qualche strumento avanzato in più. Nella sua configurazione di default si tratta di uno &lt;em&gt;stackTableHandler&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Lo &lt;strong&gt;&lt;em&gt;stackTableHandler &lt;/em&gt;è un component Genropy che si basa sull'idea di due fogli sovrapposti (&lt;em&gt;stack&lt;/em&gt;).&lt;/strong&gt; Il primo foglio permette di visualizzare i dati di una table di database in una griglia, mentre il secondo contiene la form relativa ad un singolo record.&lt;/p&gt;</description></item><item><title>Come effettuare Dump e Restore del database di applicazione</title><link>https://www.genropy.org/blog/come-effettuare-dump-e-restore-del-database-di-applicazione/</link><pubDate>Thu, 02 Apr 2020 12:17:58 +0000</pubDate><guid>https://www.genropy.org/blog/come-effettuare-dump-e-restore-del-database-di-applicazione/</guid><description>&lt;p&gt;Quando si lavora alla realizzazione e manutenzione di una web application è spesso necessario&lt;strong&gt; migrare velocemente il database da un'installazione ad un'altra,&lt;/strong&gt; tipicamente dalla versione in produzione all'ambiente di sviluppo/test.&lt;/p&gt;
&lt;p&gt;Ci troviamo quindi di fronte ad operazioni di &lt;em&gt;dump&lt;/em&gt; e &lt;em&gt;restore&lt;/em&gt; di un database per le quali in Genropy mette a disposizione degli strumenti che rendendono la procedura più pratica e immediata. Questi strumenti sono ottimizzati per applicazioni con database &lt;strong&gt;PostgreSQL.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Trucchi utili per lavorare con Genropy</title><link>https://www.genropy.org/blog/risorse-utili-per-lavorare-con-genropy/</link><pubDate>Mon, 10 Feb 2020 15:09:44 +0000</pubDate><guid>https://www.genropy.org/blog/risorse-utili-per-lavorare-con-genropy/</guid><description>&lt;p&gt;Genropy &amp;ldquo;fresco&amp;rdquo; di installazione è già di per sé uno strumento estremamente potente, ma con alcuni accorgimenti possiamo renderci la vita ancora più facile e, perché no, anche più accattivante dal punto di vista grafico&amp;hellip;&lt;/p&gt;
&lt;p&gt;Il video ci mostra l&amp;rsquo;utilizzo di alcune risorse utili per lavorare con Genropy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tema grafico &amp;ldquo;mimi&amp;rdquo;&lt;/li&gt;
&lt;li&gt;configurare il sistema per postgreSQL&lt;/li&gt;
&lt;li&gt;risorse per la stampa in pdf&lt;/li&gt;
&lt;li&gt;plugin VSCode&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="height:21px" aria-hidden="true" class="wp-block-spacer"&gt;&lt;/div&gt;
&lt;div class="video-embed" style="position:relative;width:100%;padding-top:56.25%;"&gt;
 &lt;iframe src="https://video.softwell.it/source/vimeo/388011482/embed" title="vimeo-video"
 style="position:absolute;top:0;left:0;width:100%;height:100%;"
 frameborder="0" loading="lazy"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen"
 allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p class="has-text-align-left"&gt;&lt;em&gt;Per attivare i sottotitoli premere il bottone CC&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Genropy: video tutorial per l'installazione</title><link>https://www.genropy.org/blog/genropy-video-tutorial-per-linstallazione/</link><pubDate>Thu, 23 Jan 2020 18:38:36 +0000</pubDate><guid>https://www.genropy.org/blog/genropy-video-tutorial-per-linstallazione/</guid><description>&lt;p&gt;L&amp;rsquo;installazione è ovviamente il primo passo per poter entrare nel mondo di Genropy e cominciare a costruire le proprie applicazioni web.&lt;/p&gt;
&lt;p&gt;L'installazione, per un utente che ha già installati i prerequisiti del framework è di norma molto semplice e richiede solo pochi minuti. D'altra parte ci rendiamo conto che per chi non è ancora abituato a lavorare con strumenti &lt;strong&gt;open source &lt;/strong&gt;può richiedere alcuni passaggi tecnici non banali. Per questo motivo, al fine di rendere Genropy il più possibile fruibile a tutti, abbiamo deciso di affiancare alla nostra &lt;a rel="noreferrer noopener" aria-label="Guida all'Installazione (si apre in una nuova scheda)" href="https://docs.genropy.org/installation_guide/framework_installation.html" target="_blank"&gt;Guida all'installazione&lt;/a&gt; anche due video tutorial: uno per l'installazione in ambiente Mac, l'altro in ambiente Windows. Nelle descrizioni dei video troverete un elenco dei passaggi richiesti.&lt;/p&gt;</description></item><item><title>Assaggi di Genropy</title><link>https://www.genropy.org/blog/assaggi-di-genropy/</link><pubDate>Thu, 01 Aug 2019 14:28:59 +0000</pubDate><guid>https://www.genropy.org/blog/assaggi-di-genropy/</guid><description>&lt;p&gt;Questo è il primo di una serie di post che avranno lo scopo di illustrare attraverso dei semplici esempi pratici alcuni concetti fondamentali dello sviluppo con Genropy. Tutti questi articoli includeranno codice sorgente e la parte di pagina viva corrispondente: puoi passare dalla visualizzazione del codice e della pagina usando gli appositi bottoni &lt;strong&gt;SOURCE&lt;/strong&gt; e &lt;strong&gt;DEMO&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In questo primo assaggio realizzerò la schermata iniziale di un ipotetico gioco in cui i giocatori dovranno inserire il proprio nome e scegliere il loro colore preferito. Con questo esempio voglio spiegare i seguenti concetti:&lt;/p&gt;</description></item></channel></rss>