<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tips&amp;Tricks on Genropy</title><link>https://www.genropy.org/blog/categoria/tipstricks/</link><description>Recent content in Tips&amp;Tricks on Genropy</description><generator>Hugo</generator><language>it</language><lastBuildDate>Fri, 14 Apr 2023 14:42:18 +0000</lastBuildDate><atom:link href="https://www.genropy.org/blog/categoria/tipstricks/index.xml" rel="self" type="application/rss+xml"/><item><title>Come avviare un'istanza con certificato SSL in locale</title><link>https://www.genropy.org/blog/come-avviare-unistanza-con-certificato-ssl-in-locale/</link><pubDate>Fri, 14 Apr 2023 14:42:18 +0000</pubDate><guid>https://www.genropy.org/blog/come-avviare-unistanza-con-certificato-ssl-in-locale/</guid><description>&lt;p&gt;Sui server in produzione già da tempo Genropy consiglia la configurazione di un certificato SSL con &lt;a href="https://docs.genropy.org/installation_guide/certbot.html" target="_blank" rel="noreferrer noopener"&gt;Certbot&lt;/a&gt;, proprio come ultimo step del &lt;em&gt;deploy&lt;/em&gt; di un applicativo. A volte ci farebbe tuttavia comodo poter avviare anche in locale un'istanza in &lt;em&gt;&lt;strong&gt;https&lt;/strong&gt;&lt;/em&gt; anziché in &lt;em&gt;http&lt;/em&gt;, soprattutto quando stiamo testando delle chiamate esterne al nostro applicativo, che spesso richiedono un certificato SSL.&lt;/p&gt;
&lt;p&gt;È possibile &lt;strong&gt;avviare anche in locale un&amp;rsquo;istanza Genropy in https&lt;/strong&gt; , previa generazione di un certificato SSL. Vediamo quindi i pochi semplici step necessari per predisporre la nostra macchina per questa possibilità, e come lanciare l&amp;rsquo;istanza in https.&lt;/p&gt;</description></item><item><title>Come ereditare dei default tra record in relazione: l'attributo defaultFrom</title><link>https://www.genropy.org/blog/come-ereditare-dei-default-tra-record-in-relazione-lattributo-defaultfrom/</link><pubDate>Mon, 28 Nov 2022 16:53:40 +0000</pubDate><guid>https://www.genropy.org/blog/come-ereditare-dei-default-tra-record-in-relazione-lattributo-defaultfrom/</guid><description>&lt;p&gt;In una table &lt;strong&gt;gerarchica&lt;/strong&gt; o in caso di record in &lt;strong&gt;relazione&lt;/strong&gt; , può essere comodo prevedere la possibilità di far &amp;ldquo;ereditare&amp;rdquo; dei valori di record genitore o in relazione, così da offrire all&amp;rsquo;inserimento di un nuovo record un &lt;strong&gt;campo di default pre-compilato con il valore desiderato&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Supponiamo di trovarci nella tabella &lt;code&gt;prodotto_tipo&lt;/code&gt;, una tipica &lt;a href="https://docs.genropy.org/genropy_orm/tabelle_gerarchiche.html" target="_blank" rel="noreferrer noopener"&gt;tabella gerarchica&lt;/a&gt; di Genropy, dove quindi è possibile categorizzare i tipi di prodotto in una gerarchia con dei padri (es: "vernici") e dei figli (es: "vernici antiruggine", "primer", "vernici metalli"). È ragionevole supporre che nel caso di alcuni campi di una tabella di questo tipo, come ad esempio il &lt;code&gt;tipo_iva&lt;/code&gt;, questo sia comune tra i record "genitore" e i record "figlio". Non sarebbe quindi comodo trovarsi il campo &lt;em&gt;tipo_iva&lt;/em&gt; pre-popolato, nel momento in cui andrò a inserire un nuovo &lt;em&gt;tipo_prodotto&lt;/em&gt; della medesima categoria "vernici"?&lt;/p&gt;</description></item><item><title>Salvare e distribuire i manuali del documentatore con AWS S3 e Cloudfront</title><link>https://www.genropy.org/blog/salvare-e-distribuire-i-manuali-del-documentatore-con-aws-s3-e-cloudfront/</link><pubDate>Thu, 20 Oct 2022 11:25:00 +0000</pubDate><guid>https://www.genropy.org/blog/salvare-e-distribuire-i-manuali-del-documentatore-con-aws-s3-e-cloudfront/</guid><description>&lt;p&gt;L&amp;rsquo;attività di documentazione può essere piuttosto &amp;ldquo;energivora&amp;rdquo; in termini di spazio disco, soprattutto se si offrono manuali copiosi in termini di immagini, video, e materiale multimediale.&lt;/p&gt;
&lt;p&gt;Proprio per questo abbiamo deciso di sfruttare i &lt;strong&gt;&lt;a href="https://aws.amazon.com/it/s3/" target="_blank" rel="noreferrer noopener"&gt;bucket di AWS&lt;/a&gt;&lt;/strong&gt;, già in buona parte &lt;a href="https://docs.genropy.org/service/service_genropy/storage/aws_s3.html" target="_blank" rel="noreferrer noopener"&gt;integrati in Genropy&lt;/a&gt;, per ospitare anche tutti i manuali e i relativi file. Questo aggiornamento, rilasciato il 31/08/2022 sul &lt;strong&gt;branch &lt;em&gt;develop&lt;/em&gt;&lt;/strong&gt; e nell'imminente futuro anche sul branch &lt;em&gt;master&lt;/em&gt;, richiederà all'utente che faceva uso del documentatore sulle proprie istanze di effettuare qualche &lt;strong&gt;breve procedura di aggiornamento&lt;/strong&gt; per continuare a pubblicare correttamente la documentazione precedente, sia che si desideri usufruire della nuova opportunità offerta dai bucket di AWS, sia che si desideri continuare con la configurazione pre-esistente.&lt;/p&gt;</description></item><item><title>Lo storage dei file con AWS S3</title><link>https://www.genropy.org/blog/lo-storage-dei-file-con-aws-s3/</link><pubDate>Fri, 13 May 2022 13:09:10 +0000</pubDate><guid>https://www.genropy.org/blog/lo-storage-dei-file-con-aws-s3/</guid><description>&lt;p&gt;Normalmente lo storage di file, siano questi allegati di &lt;a href="https://docs.genropy.org/genropy_orm/attachments_table.html" target="_blank" rel="noreferrer noopener"&gt;Attachments Tables&lt;/a&gt;, file immagine caricati tramite &lt;a href="https://docs.genropy.org/widgetpedia/html/img.html" target="_blank" rel="noreferrer noopener"&gt;widget immagine&lt;/a&gt;, o altri file (es: video) caricati con un &lt;a href="https://docs.genropy.org/widgetpedia/components/dropUploader.html" target="_blank" rel="noreferrer noopener"&gt;dropUploader&lt;/a&gt;, avviene sullo stesso server su cui si trova la nostra istanza, generalmente a un path indicato all'interno della cartella &lt;code&gt;site&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In alcuni casi può essere però preferibile separare lo storage di questi file dal server su cui viene eseguita l&amp;rsquo;istanza, per esigenze di performance, di più semplice backup e disponibilità dei dati, di condivisione con altri software, ecc.&lt;/p&gt;</description></item><item><title>Come visualizzare i record con i template di riga</title><link>https://www.genropy.org/blog/come-visualizzare-i-record-con-i-template-di-riga/</link><pubDate>Mon, 31 Jan 2022 09:50:03 +0000</pubDate><guid>https://www.genropy.org/blog/come-visualizzare-i-record-con-i-template-di-riga/</guid><description>&lt;p&gt;Il template di riga (&lt;em&gt;rowtemplate&lt;/em&gt;) è uno strumento che permette di applicare un template alla modalità di visualizzazione del record sulla griglia.&lt;/p&gt;
&lt;p&gt;Il &lt;em&gt;rowtemplate&lt;/em&gt; può di conseguenza essere molto utile il tutte quelle situazioni in cui vogliamo fornire un&amp;rsquo;&lt;strong&gt;anteprima di alcuni dati del record già nella griglia&lt;/strong&gt; , in una forma personalizzata e senza &amp;ldquo;appesantire&amp;rdquo; le colonne della vista, permettendo all&amp;rsquo;utente di confrontare i dati senza aprire record per record. Supponiamo per esempio di voler dare subito un&amp;rsquo;anteprima del totale fatturato e del numero di fatture di un cliente: grazie al template, sarà possibile visualizzare queste informazioni al passaggio del mouse sui record cliente.&lt;/p&gt;</description></item><item><title>Le shortcuts in Genropy</title><link>https://www.genropy.org/blog/le-shortcuts-in-genropy/</link><pubDate>Fri, 08 Oct 2021 12:09:43 +0000</pubDate><guid>https://www.genropy.org/blog/le-shortcuts-in-genropy/</guid><description>&lt;p&gt;Il nostro utente finale dell&amp;rsquo;applicativo può a volte trovarsi a eseguire delle operazioni in sequenza, per esempio la modifica uno a uno di alcuni campi dei record, così come lo sviluppatore che sta eseguendo dei test: in entrambi i casi ci troviamo di fronte a operazione estremamente ripetitive e meccaniche, che potremmo svolgere più velocemente sfruttando delle &lt;strong&gt;scorciatoie da tastiera&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Per questo genere di casi Genropy ci mette a disposizione delle shortcuts di sistema, che ci permettono per esempio di salvare più velocemente, spostarci tra i record, ricaricare la pagina, tutte estremamente personalizzabili a piacimento.&lt;/p&gt;</description></item><item><title>Novità: uso dei controller con bottoni e menuline</title><link>https://www.genropy.org/blog/novita-uso-dei-controller-con-bottoni-e-menuline/</link><pubDate>Tue, 13 Jul 2021 11:50:41 +0000</pubDate><guid>https://www.genropy.org/blog/novita-uso-dei-controller-con-bottoni-e-menuline/</guid><description>&lt;p&gt;Con un importante aggiornamento rilasciato nella &lt;strong&gt;prima settimana di luglio&lt;/strong&gt; abbiamo introdotto alcune importanti novità in casa Genropy, riguardanti il mondo dei &lt;strong&gt;&lt;a href="https://docs.genropy.org/widgetpedia/datastore%20elements/controllers/controllers.html" target="_blank" rel="noreferrer noopener"&gt;controllers&lt;/a&gt;&lt;/strong&gt; collegati a &lt;a href="https://docs.genropy.org/widgetpedia/html/button.html" target="_blank" rel="noreferrer noopener"&gt;bottoni, lightbuttons&lt;/a&gt; e menuline.&lt;/p&gt;
&lt;p&gt;Fino a questo momento, infatti, i bottoni potevano, tramite la &lt;strong&gt;&lt;em&gt;action&lt;/em&gt;&lt;/strong&gt;, specificare direttamente l'azione da eseguire e contenere tutti i parametri necessari, ma questa eventualità poco si adatta ad azioni complesse con tanti parametri, e inoltre rischia di generare confusione in merito alle modalità applicative nonché un codice "non pulito". Una prima possibilità a nostra disposizione per far fronte a questo tipo di situazione era di innescare invece con la &lt;em&gt;&lt;strong&gt;action&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;un&lt;strong&gt; &lt;a href="https://docs.genropy.org/widgetpedia/datastore%20elements/controllers/dataController.html" target="_blank" rel="noreferrer noopener"&gt;dataController&lt;/a&gt; &lt;/strong&gt;tramite l'attributo "&lt;strong&gt;&lt;em&gt;_fired&lt;/em&gt;&lt;/strong&gt;" o tramite il meccanismo &lt;strong&gt;&lt;em&gt;publish/subscribe&lt;/em&gt;&lt;/strong&gt;: in questo modo è possibile separare chiaramente l'oggetto chiamante (il bottone) e l'azione chiamata, che si può andare ad arricchire anche in modo complesso con i parametri necessari.&lt;/p&gt;</description></item><item><title>Come utilizzare l'ORM di Genropy da Terminale</title><link>https://www.genropy.org/blog/come-utilizzare-lorm-di-genropy-da-terminale/</link><pubDate>Mon, 05 Jul 2021 11:25:33 +0000</pubDate><guid>https://www.genropy.org/blog/come-utilizzare-lorm-di-genropy-da-terminale/</guid><description>&lt;p&gt;Sia a scopo di debug che per l&amp;rsquo;accesso da applicazioni terze, a volte può servire &lt;strong&gt;utilizzare l&amp;rsquo;ORM di Genropy anche al di fuori dell&amp;rsquo;applicativo&lt;/strong&gt; stesso. Per questo tipo di esigenza, Genropy offre la possibilità di &lt;strong&gt;istanziare&lt;/strong&gt; comodamente &lt;strong&gt;un&amp;rsquo;applicazione&lt;/strong&gt; semplicemente &lt;strong&gt;da un terminale&lt;/strong&gt;. Così facendo sarà possibile &lt;strong&gt;sfruttare tutte le funzionalità dell&amp;rsquo;ORM di Genropy&lt;/strong&gt; , quindi visualizzare la struttura del model, eseguire operazioni di lettura e scrittura, ecc, anche a webserver inattivo e al di fuori dell&amp;rsquo;interfaccia dell&amp;rsquo;applicativo.&lt;/p&gt;</description></item><item><title>Come duplicare un record</title><link>https://www.genropy.org/blog/come-duplicare-un-record/</link><pubDate>Thu, 04 Feb 2021 11:57:48 +0000</pubDate><guid>https://www.genropy.org/blog/come-duplicare-un-record/</guid><description>&lt;p&gt;Supponiamo di voler consentire all&amp;rsquo;utente del nostro applicativo di duplicare i record in modo semplice e veloce: potrebbe essere il caso di una tabella prodotto, dove ci sono prodotti simili che differiscono solo per la descrizione, o di una serie replicata di interventi, che vogliamo marcare con un numero di copia.&lt;/p&gt;
&lt;p&gt;È possibile in questi casi utilizzare il parametro duplicate=True all'interno del metodo &lt;strong&gt;&lt;em&gt;th_options &lt;/em&gt;&lt;/strong&gt;della&lt;strong&gt;&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;risorsa&lt;/em&gt; della nostra tabella, al fine di mostrare nella &lt;strong&gt;Form&lt;/strong&gt; del record un'iconcina che consenta la duplicazione del record. &lt;/p&gt;</description></item></channel></rss>