From 661056ae0b5d9178a92bbc568261688305476696 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Mon, 26 Dec 2011 10:32:18 +0100 Subject: [PATCH] =?utf8?q?Controllo,=20con=20libautoz,=20di=20chi=20pu?= =?utf8?q?=C3=B2=20modificare=20comuni=20e=20vie=20(closes=20#95).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .anjuta/session/anjuta.session | 29 ++++++ .anjuta/session/dock-layout.xml | 2 + .anjuta_sym_db.db | Bin 526336 -> 536576 bytes data/territorio/gui/territorio.gui | 24 ++++- docs/territorio/examples/territorio.conf | 2 +- src/comune.c | 9 ++ src/comuni.c | 20 +++- src/via.c | 37 ++++++-- src/vie.c | 64 +++++++------ src/widget.c | 115 +++++++++++++++++++++++ src/widget.h | 6 ++ 11 files changed, 259 insertions(+), 49 deletions(-) create mode 100644 .anjuta/session/anjuta.session create mode 100644 .anjuta/session/dock-layout.xml diff --git a/.anjuta/session/anjuta.session b/.anjuta/session/anjuta.session new file mode 100644 index 0000000..d63c88a --- /dev/null +++ b/.anjuta/session/anjuta.session @@ -0,0 +1,29 @@ + +[Anjuta] +Maximized=1 +Geometry=1366x741+0+0 + +[File Loader] +Files=file:///home/andreaz/files/comune/solipa/territorio/src/via.c#213%%%file:///home/andreaz/files/comune/solipa/territorio/src/widget.h#80%%%file:///home/andreaz/files/comune/solipa/territorio/src/widget.c#616%%%file:///home/andreaz/files/comune/solipa/territorio/src/vie.c#329 + +[Document Manager] +bookmarks=\n\n + +[Execution] +Run in terminal=2 +Working directories=file:///home/andreaz/files/comune/solipa/territorio + +[Project Manager] +Shortcut=territorio//territorio//src//territorio%%%territorio//territorio//libreria//libterritorio.la%%%territorio//territorio//tests//widget +Expand=territorio + +[Build] +Configuration list=1:Default:%%%1:Debug:Debug%%%1:Profiling:Profiling%%%1:Optimized:Optimized +Selected Configuration=Default +BuildArgs/Default=--enable-maintainer-mode +BuildArgs/Debug=--enable-maintainer-mode 'CFLAGS=-g -O0' 'CXXFLAGS=-g -O0' 'JFLAGS=-g -O0' 'FFLAGS=-g -O0' +BuildArgs/Profiling=--enable-maintainer-mode 'CFLAGS=-g -pg' 'CXXFLAGS=-g -pg' 'JFLAGS=-g -pg' 'FFLAGS=-g -pg' +BuildArgs/Optimized=--enable-maintainer-mode 'CFLAGS=-O2' 'CXXFLAGS=-O2' 'JFLAGS=-O2' 'FFLAGS=-O2' + +[Debugger] +Stop at beginning=2 diff --git a/.anjuta/session/dock-layout.xml b/.anjuta/session/dock-layout.xml new file mode 100644 index 0000000..995aec9 --- /dev/null +++ b/.anjuta/session/dock-layout.xml @@ -0,0 +1,2 @@ + + diff --git a/.anjuta_sym_db.db b/.anjuta_sym_db.db index e8e1eba61dcc27655f02cd1a6e3bdf57a6511385..9c64799adf9937c1b552889a20a48fd8bdffbff2 100644 GIT binary patch delta 26819 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 Scv~-QC+A - + False @@ -101,6 +101,8 @@ + + @@ -3318,12 +3320,15 @@ True True lstore_vie - False + True True 1 Nome + True + True + 1 @@ -3335,10 +3340,13 @@ Comune + True + True + 3 - 2 + 3 @@ -3346,10 +3354,13 @@ Provincia + True + True + 4 - 3 + 4 @@ -3357,10 +3368,13 @@ Regione + True + True + 4 - 4 + 5 diff --git a/docs/territorio/examples/territorio.conf b/docs/territorio/examples/territorio.conf index e4f9853..d9da643 100644 --- a/docs/territorio/examples/territorio.conf +++ b/docs/territorio/examples/territorio.conf @@ -1,6 +1,6 @@ [AUTE] plugin=/usr/local/lib/libaute/plugins/libaute-db -cnc_string=PostgreSQL://postgres:postgres@HOST=localhost;PORT=5432;DB_NAME=aute +cnc_string=PostgreSQL://postgres:postgres@HOST=localhost;PORT=5432;DB_NAME=autedb [AUTOZ] cnc_string=PostgreSQL://postgres:postgres@HOST=localhost;PORT=5432;DB_NAME=autoz diff --git a/src/comune.c b/src/comune.c index d389352..b4ca114 100644 --- a/src/comune.c +++ b/src/comune.c @@ -197,6 +197,15 @@ TerritorioComune { gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (commons->gtkbuilder, "button28")), FALSE); } + else if (priv->id != 0) + { + ires1 = autoz_get_resource_from_id (priv->commons->autoz, + g_strdup_printf ("territorio_comuni_%d_rw", priv->id)); + if (AUTOZ_IS_IRESOURCE (ires1) && !autoz_is_allowed (priv->commons->autoz, priv->commons->role_utente, ires1, FALSE)) + { + gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (commons->gtkbuilder, "button28")), FALSE); + } + } return a; } diff --git a/src/comuni.c b/src/comuni.c index 49e543d..4160127 100644 --- a/src/comuni.c +++ b/src/comuni.c @@ -531,11 +531,27 @@ territorio_comuni_on_btn_elimina_clicked (GtkButton *button, GtkTreeIter iter; guint id; + AutozIResource *ires1; + TerritorioComuni *territorio_comuni = (TerritorioComuni *)user_data; TerritorioComuniPrivate *priv = TERRITORIO_COMUNI_GET_PRIVATE (territorio_comuni); if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_comuni), &iter, + COL_ID, &id, + -1); + ires1 = autoz_get_resource_from_id (priv->commons->autoz, + g_strdup_printf ("territorio_comuni_%d_rw", id)); + if (AUTOZ_IS_IRESOURCE (ires1) && !autoz_is_allowed (priv->commons->autoz, priv->commons->role_utente, ires1, FALSE)) + { + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Non si è autorizzati a eliminare il comune selezionato."); + return; + } + dialog = gtk_message_dialog_new (priv->wtransient, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, @@ -544,10 +560,6 @@ territorio_comuni_on_btn_elimina_clicked (GtkButton *button, risp = gtk_dialog_run (GTK_DIALOG (dialog)); if (risp == GTK_RESPONSE_YES) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_comuni), &iter, - COL_ID, &id, - -1); - gdaex_execute (priv->commons->gdaex, g_strdup_printf ("UPDATE comuni SET status = 'E' WHERE id = %d", id)); diff --git a/src/via.c b/src/via.c index 5ff4a5c..d5242ec 100644 --- a/src/via.c +++ b/src/via.c @@ -69,6 +69,7 @@ struct _TerritorioViaPrivate GtkForm *form; GtkWidget *w; + GtkWidget *twidget; GObject **objects; @@ -121,7 +122,6 @@ TerritorioVia { GError *error; AutozIResource *ires1; - GtkWidget *twidget; TerritorioVia *a = TERRITORIO_VIA (g_object_new (territorio_via_get_type (), NULL)); @@ -149,8 +149,8 @@ TerritorioVia "label41", NULL); - twidget = territorio_widget_new (priv->commons); - g_object_set (G_OBJECT (twidget), + priv->twidget = territorio_widget_new (priv->commons); + g_object_set (G_OBJECT (priv->twidget), "show-stato", FALSE, "show-regione", FALSE, "show-provincia", FALSE, @@ -159,7 +159,7 @@ TerritorioVia "show-via", FALSE, NULL); - territorio_widget_add_to_gtkform (TERRITORIO_WIDGET (twidget), priv->form, + territorio_widget_add_to_gtkform (TERRITORIO_WIDGET (priv->twidget), priv->form, NULL, FALSE, NULL, @@ -172,8 +172,8 @@ TerritorioVia FALSE); gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (priv->commons->gtkbuilder, "hbox3")), - twidget, TRUE, TRUE, 0); - gtk_widget_show_all (twidget); + priv->twidget, TRUE, TRUE, 0); + gtk_widget_show_all (priv->twidget); g_signal_connect (priv->w, "delete-event", G_CALLBACK (territorio_via_on_w_via_delete_event), (gpointer)a); @@ -202,6 +202,15 @@ TerritorioVia { gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (commons->gtkbuilder, "button52")), FALSE); } + else if (priv->id != 0) + { + ires1 = autoz_get_resource_from_id (priv->commons->autoz, + g_strdup_printf ("territorio_comuni_%d_rw", territorio_widget_get_comune (TERRITORIO_WIDGET (priv->twidget)))); + if (AUTOZ_IS_IRESOURCE (ires1) && !autoz_is_allowed (priv->commons->autoz, priv->commons->role_utente, ires1, FALSE)) + { + gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (commons->gtkbuilder, "button52")), FALSE); + } + } return a; } @@ -286,12 +295,9 @@ territorio_via_carica (TerritorioVia *territorio_via) static void territorio_via_salva (TerritorioVia *territorio_via) { - GError *error = NULL; gchar *sql; GtkWidget *dialog; - - GDate *da; - GDate *a; + AutozIResource *ires1; TerritorioViaClass *klass = TERRITORIO_VIA_GET_CLASS (territorio_via); @@ -302,6 +308,17 @@ territorio_via_salva (TerritorioVia *territorio_via) return; } + ires1 = autoz_get_resource_from_id (priv->commons->autoz, + g_strdup_printf ("territorio_comuni_%d_rw", territorio_widget_get_comune (TERRITORIO_WIDGET (priv->twidget)))); + if (AUTOZ_IS_IRESOURCE (ires1) && !autoz_is_allowed (priv->commons->autoz, priv->commons->role_utente, ires1, FALSE)) + { + solipa_message_dialog (priv->w, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Non si è autorizzati a modificare le vie del comune selezionato."); + return; + } + if (priv->id == 0) { sql = gtk_form_get_sql (priv->form, GTK_FORM_SQL_INSERT); diff --git a/src/vie.c b/src/vie.c index c91acad..e504b81 100644 --- a/src/vie.c +++ b/src/vie.c @@ -92,6 +92,7 @@ enum { COL_ID, COL_NOME, + COL_ID_COMUNI, COL_COMUNE, COL_PROVINCIA, COL_REGIONE @@ -182,8 +183,8 @@ TerritorioVie error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, g_strsplit (g_strconcat ("lstore_vie|", - (selezione ? "w_vie" : "vbox14"), - NULL), "|", -1), + (selezione ? "w_vie" : "vbox14"), + NULL), "|", -1), &error); if (error != NULL) { @@ -325,7 +326,7 @@ territorio_vie_carica (TerritorioVie *territorio_vie) } sql = g_strdup_printf ("SELECT v.id, v.nome," - " c.nome AS comune," + " v.id_comuni, c.nome AS comune," " p.nome || ' (' || p.sigla || ')' AS provincia," " r.nome AS regione" " FROM vie AS v" @@ -346,10 +347,10 @@ territorio_vie_carica (TerritorioVie *territorio_vie) for (row = 0; row < rows; row++) { gtk_list_store_append (priv->lstore_vie, &iter); - gtk_list_store_set (priv->lstore_vie, &iter, COL_ID, gdaex_data_model_get_field_value_integer_at (dm, row, "id"), COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), + COL_ID_COMUNI, gdaex_data_model_get_field_value_integer_at (dm, row, "id_comuni"), COL_COMUNE, gdaex_data_model_get_field_value_stringify_at (dm, row, "comune"), COL_PROVINCIA, gdaex_data_model_get_field_value_stringify_at (dm, row, "provincia"), COL_REGIONE, gdaex_data_model_get_field_value_stringify_at (dm, row, "regione"), @@ -387,13 +388,10 @@ territorio_vie_modifica (TerritorioVie *territorio_vie) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una via"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una via."); } } @@ -419,13 +417,10 @@ territorio_vie_selezionato (TerritorioVie *territorio_vie) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una via."); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una via."); } } @@ -555,12 +550,30 @@ territorio_vie_on_btn_elimina_clicked (GtkButton *button, GtkTreeIter iter; guint id; + guint id_comuni; + + AutozIResource *ires1; TerritorioVie *territorio_vie = (TerritorioVie *)user_data; TerritorioViePrivate *priv = TERRITORIO_VIE_GET_PRIVATE (territorio_vie); if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_vie), &iter, + COL_ID, &id, + COL_ID_COMUNI, &id_comuni, + -1); + ires1 = autoz_get_resource_from_id (priv->commons->autoz, + g_strdup_printf ("territorio_comuni_%d_rw", id_comuni)); + if (AUTOZ_IS_IRESOURCE (ires1) && !autoz_is_allowed (priv->commons->autoz, priv->commons->role_utente, ires1, FALSE)) + { + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Non si è autorizzati a eliminare le vie del comune selezionato."); + return; + } + dialog = gtk_message_dialog_new (priv->wtransient, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, @@ -569,10 +582,6 @@ territorio_vie_on_btn_elimina_clicked (GtkButton *button, risp = gtk_dialog_run (GTK_DIALOG (dialog)); if (risp == GTK_RESPONSE_YES) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_vie), &iter, - COL_ID, &id, - -1); - gdaex_execute (priv->commons->gdaex, g_strdup_printf ("UPDATE vie SET status = 'E' WHERE id = %d", id)); @@ -582,13 +591,10 @@ territorio_vie_on_btn_elimina_clicked (GtkButton *button, } else { - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una via"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una via"); } } diff --git a/src/widget.c b/src/widget.c index 541b2d2..cf00abc 100644 --- a/src/widget.c +++ b/src/widget.c @@ -599,6 +599,121 @@ territorio_widget_add_to_gtkform (TerritorioWidget *widget, } } +guint +territorio_widget_get_stato (TerritorioWidget *widget) +{ + guint ret; + gboolean visible; + + TerritorioWidget *territorio_widget = TERRITORIO_WIDGET (widget); + TerritorioWidgetPrivate *priv = TERRITORIO_WIDGET_GET_PRIVATE (territorio_widget); + + g_return_val_if_fail (IS_TERRITORIO_WIDGET (widget), 0); + + ret = 0; + visible = FALSE; + + g_object_get (G_OBJECT (widget), "show-stato", &visible, NULL); + if (visible) + { + ret = strtol (gtk_form_decoder_get_key (GTK_FORM_DECODER (priv->dec_stato)), NULL, 10); + } + + return ret; +} + +guint +territorio_widget_get_regione (TerritorioWidget *widget) +{ + guint ret; + gboolean visible; + + TerritorioWidget *territorio_widget = TERRITORIO_WIDGET (widget); + TerritorioWidgetPrivate *priv = TERRITORIO_WIDGET_GET_PRIVATE (territorio_widget); + + g_return_val_if_fail (IS_TERRITORIO_WIDGET (widget), 0); + + ret = 0; + visible = FALSE; + + g_object_get (G_OBJECT (widget), "show-regione", &visible, NULL); + if (visible) + { + ret = strtol (gtk_form_decoder_get_key (GTK_FORM_DECODER (priv->dec_regione)), NULL, 10); + } + + return ret; +} + +guint +territorio_widget_get_provincia (TerritorioWidget *widget) +{ + guint ret; + gboolean visible; + + TerritorioWidget *territorio_widget = TERRITORIO_WIDGET (widget); + TerritorioWidgetPrivate *priv = TERRITORIO_WIDGET_GET_PRIVATE (territorio_widget); + + g_return_val_if_fail (IS_TERRITORIO_WIDGET (widget), 0); + + ret = 0; + visible = FALSE; + + g_object_get (G_OBJECT (widget), "show-provincia", &visible, NULL); + if (visible) + { + ret = strtol (gtk_form_decoder_get_key (GTK_FORM_DECODER (priv->dec_provincia)), NULL, 10); + } + + return ret; +} + +guint +territorio_widget_get_comune (TerritorioWidget *widget) +{ + guint ret; + gboolean visible; + + TerritorioWidget *territorio_widget = TERRITORIO_WIDGET (widget); + TerritorioWidgetPrivate *priv = TERRITORIO_WIDGET_GET_PRIVATE (territorio_widget); + + g_return_val_if_fail (IS_TERRITORIO_WIDGET (widget), 0); + + ret = 0; + visible = FALSE; + + g_object_get (G_OBJECT (widget), "show-comune", &visible, NULL); + if (visible) + { + ret = strtol (gtk_form_decoder_get_key (GTK_FORM_DECODER (priv->dec_comune)), NULL, 10); + } + + return ret; +} + +guint +territorio_widget_get_via (TerritorioWidget *widget) +{ + guint ret; + gboolean visible; + + TerritorioWidget *territorio_widget = TERRITORIO_WIDGET (widget); + TerritorioWidgetPrivate *priv = TERRITORIO_WIDGET_GET_PRIVATE (territorio_widget); + + g_return_val_if_fail (IS_TERRITORIO_WIDGET (widget), 0); + + ret = 0; + visible = FALSE; + + g_object_get (G_OBJECT (widget), "show-via", &visible, NULL); + if (visible) + { + ret = strtol (gtk_form_decoder_get_key (GTK_FORM_DECODER (priv->dec_via)), NULL, 10); + } + + return ret; +} + /* PRIVATE */ static void territorio_widget_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) diff --git a/src/widget.h b/src/widget.h index ac767cf..c8b710e 100644 --- a/src/widget.h +++ b/src/widget.h @@ -72,6 +72,12 @@ void territorio_widget_add_to_gtkform (TerritorioWidget *widget, const gchar *via_field, gboolean via_obligatory); +guint territorio_widget_get_stato (TerritorioWidget *widget); +guint territorio_widget_get_regione (TerritorioWidget *widget); +guint territorio_widget_get_provincia (TerritorioWidget *widget); +guint territorio_widget_get_comune (TerritorioWidget *widget); +guint territorio_widget_get_via (TerritorioWidget *widget); + G_END_DECLS -- 2.49.0