def setDao(self, dao):
     """ Si istanzia un nuovo DAO o nuovo o prelevato dalla Treeview
     principale
     """
     if dao is None:
         self.dao = ServCSA()
     else:
         self.dao = dao
     self._refresh()
     return self.dao
class AnagraficaServCSAEdit(AnagraficaEdit):
    """ Modifica un record dell'anagrafica dei servizi CSA
    """
    def __init__(self, anagrafica, daoFrom=None, tipo="Cliente"):
        AnagraficaEdit.__init__(self,
                anagrafica,
                'Gestione Servizi CSA',
                root='anagrafica_serv_csa_detail_vbox',
                path='CSA/gui/_anagrafica_serv_csa_elements.glade',
                isModule=True)
        self._widgetFirstFocus = self.id_articolo_customcombobox
        self.anagrafica = anagrafica

        self.daoFrom = daoFrom
        self.tipo = tipo

    def draw(self, cplx=False):
        """ Funzione che "disegna l'interfaccia, devi annullare alcune combo
        a seconda di cosa richiama la finestra...iniziamo dal caso cliente
        """
        self.id_commessa_customcombobox.setHandler("commessa")

        fillComboboxLuogoInstallazione(self.luogo_installazione_combobox.combobox)
        fillComboboxTipoCombustibile(self.tipo_combustibile_combobox.combobox)
        self.luogo_installazione_combobox.connect('clicked',
                                            on_luogo_installazione_combobox_clicked)
        self.tipo_combustibile_combobox.connect('clicked',
                                            on_tipo_combustibile_combobox_clicked)

        model = self.manutenzione_combobox.get_model()
        model.clear()
        for t in ["MENSILE","ANNUALE","BIENNALE"]:
            model.append((t,))
        fillComboboxCategorieClienti(self.id_categoria_clienti_customcombobox.combobox)
        self.id_installatore_customcombobox.giveAnag(self)


    def setDao(self, dao):
        """ Si istanzia un nuovo DAO o nuovo o prelevato dalla Treeview
        principale
        """
        if dao is None:
            self.dao = ServCSA()
        else:
            self.dao = dao
        self._refresh()
        return self.dao

    def _refresh(self):
        """Funzione che rinfresca la UI all'apertura e dopo alcune operazioni
        di modifica
        """
        self._clear()
        findComboboxRowFromId(self.luogo_installazione_combobox.combobox, self.dao.id_luogo_installazione)
        findComboboxRowFromId(self.tipo_combustibile_combobox.combobox, self.dao.id_tipo_combustibile)
        self.numero_seriale_entry.set_text(self.dao.numero_serie or "")
        self.id_cliente_customcombobox.setId(self.dao.id_cliente)
        self.id_installatore_customcombobox.setId(self.dao.id_persona_giuridica)
        self.id_articolo_customcombobox.setId(self.dao.id_articolo)
        findComboboxRowFromStr(self.manutenzione_combobox, self.dao.manutenzione,0)
        self.data_avviamento_datewidget.set_text(dateToString(self.dao.data_avviamento))
        self.libretto_checkbutton.set_active(bool(self.dao.tenuta_libretto))
        #self.id_commessa_customcombobox.setId(self.dao.id_testata_commessa)
        self.categoriaInstallatore()
        self.setMonth()


    def categoriaInstallatore(self):
        """ Questa funzione serve a controllare il dao precedente,
        vedere quale categoria fornitore è abbinata all'installatore
        e proporla preimpostata"""
        print "DEVO CERCARE LA CATEGORIA DEL PRECEDENTE RECORD E IMPOSTARLO"
        #self.id_fornitore_customcombobox.presetCategoria = "CICCIO"


    def setMonth(self):
        mesi = json.loads( self.dao.cadenza or str([]))#.split(",")
        if "01" in mesi: self.checkbutton_01.set_active(True)
        else: self.checkbutton_01.set_active(False)
        if "02" in mesi: self.checkbutton_02.set_active(True)
        else: self.checkbutton_02.set_active(False)
        if "03" in mesi: self.checkbutton_03.set_active(True)
        else: self.checkbutton_03.set_active(False)
        if "04" in mesi: self.checkbutton_04.set_active(True)
        else: self.checkbutton_04.set_active(False)
        if "05" in mesi: self.checkbutton_05.set_active(True)
        else: self.checkbutton_05.set_active(False)
        if "06" in mesi: self.checkbutton_06.set_active(True)
        else: self.checkbutton_06.set_active(False)
        if "07" in mesi: self.checkbutton_07.set_active(True)
        else: self.checkbutton_07.set_active(False)
        if "08" in mesi: self.checkbutton_08.set_active(True)
        else: self.checkbutton_08.set_active(False)
        if "09" in mesi: self.checkbutton_09.set_active(True)
        else: self.checkbutton_09.set_active(False)
        if "10" in mesi: self.checkbutton_10.set_active(True)
        else: self.checkbutton_10.set_active(False)
        if "11" in mesi: self.checkbutton_11.set_active(True)
        else: self.checkbutton_11.set_active(False)
        if "12" in mesi: self.checkbutton_12.set_active(True)
        else: self.checkbutton_12.set_active(False)

    def getMonth(self):
        mesi = []
        if self.checkbutton_01.get_active() and "01" not in mesi:
            mesi.append("01")
        if self.checkbutton_02.get_active() and "02" not in mesi:
            mesi.append("02")
        if self.checkbutton_03.get_active() and "03" not in mesi:
            mesi.append("03")
        if self.checkbutton_04.get_active() and "04" not in mesi:
            mesi.append("04")
        if self.checkbutton_05.get_active() and "05" not in mesi:
            mesi.append("05")
        if self.checkbutton_06.get_active() and "06" not in mesi:
            mesi.append("06")
        if self.checkbutton_07.get_active() and "07" not in mesi:
            mesi.append("07")
        if self.checkbutton_08.get_active() and "08" not in mesi:
            mesi.append("08")
        if self.checkbutton_09.get_active() and "09" not in mesi:
            mesi.append("09")
        if self.checkbutton_10.get_active() and "10" not in mesi:
            mesi.append("10")
        if self.checkbutton_11.get_active() and "11" not in mesi:
            mesi.append("11")
        if self.checkbutton_12.get_active() and "12" not in mesi:
            mesi.append("12")
        return json.dumps(mesi)

    def _clear(self):
        """ Funzione di reset o pulizia della UI """
        self.data_avviamento_datewidget.insert_today()
        return

    def saveDao(self, tipo=None):
        #if findIdFromCombobox(
                        #self.id_magazzino_customcombobox.combobox) is None:
            #obligatoryField(self.dialogTopLevel,
                    #self.id_magazzino_customcombobox.combobox)
        #idMagazzino = findIdFromCombobox(
                    #self.id_magazzino_customcombobox.combobox)
        #idArticolo = self.id_articolo_customcombobox.getId()

        self.dao.id_cliente = self.id_cliente_customcombobox.getId()
        self.dao.id_persona_giuridica = self.id_installatore_customcombobox.getId()
        self.dao.id_articolo = self.id_articolo_customcombobox.getId()
        #self.dao.id_commessa = self.id_articolo_customcombobox.getId()
        self.dao.numero_serie = self.numero_seriale_entry.get_text()
        self.dao.manutenzione = findStrFromCombobox(self.manutenzione_combobox,0)
        self.dao.tenuta_libretto = bool(self.libretto_checkbutton.get_active())
        self.dao.data_avviamento = stringToDate(self.data_avviamento_datewidget.get_text())
        self.dao.id_tipo_combustibile = findIdFromCombobox(self.tipo_combustibile_combobox.combobox)
        self.dao.id_luogo_installazione = findIdFromCombobox(self.luogo_installazione_combobox.combobox)
        self.dao.cadenza = self.getMonth()
        self.dao.persist()