Exemplo n.º 1
0
    def infoProcedimento(self, tipo_sogg):
        client = self.client
        doc = self.document
        idoc = IolDocument(doc)
        procedimento = client.service.trovaProcedimento(doc.getItem('numero_pratica'))
        result = dict(procedimento)
        infoDoc = idoc.serializeDoc()
        res = dict()
        if result["id"]:
            res = dict(client.service.infoPratica(result["id"]))
            
        if res["success"]:
            r = dict(res["result"])
            for k, v in r.items():
                infoDoc[k] = v

            res = dict(client.service.infoSoggetto(result["id"],tipo_sogg))
            # import pdb;pdb.set_trace();
        if res["success"]:
            r = list(res["result"])
            infoDoc["soggetti"] = list()
            for v in r:
                infoDoc["soggetti"].append(dict(v))
            
            res = dict(client.service.infoIndirizzi(result["id"]))
            #import pdb;pdb.set_trace()
            if res["success"]:
                r = list(res["result"])
                infoDoc["indirizzi"] = list()
                for v in r:
                    infoDoc["indirizzi"].append(dict(v))

        return infoDoc
Exemplo n.º 2
0
 def getAllegati(self, obj):
     doc = obj.document
     idoc = IolDocument(doc)
     results = list()
     mapfields = self.mapping['allegato']
     for k, v in mapfields.items():
         allegato = obj.client.factory.create('allegato')
         files_allegati = list()
         for el in v:
             f = idoc.getAttachmentInfo(el)
             if f:
                 for info in f:
                     file_allegato = obj.client.factory.create(
                         'file_allegato')
                     file_allegato.nome_file = info['name']
                     file_allegato.tipo_file = info['mimetype']
                     file_allegato.size_file = info['size']
                     #file_allegato.file = ''
                     file_allegato.file = info['b64file']
                     files_allegati.append(file_allegato)
             allegato.documento = k
             allegato.allegato = 1
             allegato.files = files_allegati
         if allegato.files and allegato.documento:
             results.append(allegato)
     return results
Exemplo n.º 3
0
 def getNCEU(self, obj):
     doc = obj.document
     idoc = IolDocument(doc)
     results = list()
     mapfields = self.mapping['nceu']
     for r in idoc.getDatagridValue('elenco_nceu'):
         fType = obj.client.factory.create('particella')
         for k, v in mapfields.items():
             if v:
                 fType[k] = r[v]
         results.append(fType)
     return results
Exemplo n.º 4
0
 def getProcedimento(self, obj):
     doc = obj.document
     idoc = IolDocument(doc)
     pr = obj.client.factory.create('procedimento')
     pr.tipo = 21300
     pr.oggetto = doc.getItem('descrizione_intervento', '')
     pr.note = '\n'.join(idoc.getLabels('tipologia_intervento'))
     pr.protocollo = doc.getItem('numero_protocollo', '')
     pr.data_prot = doc.getItem('data_prot',
                                DateTime()).strftime("%d/%m/%Y")
     pr.data_presentazione = doc.getItem('data_presentazione',
                                         DateTime().strftime("%d/%m/%Y"))
     pr.online = 1
     pr.resp_proc = self.resp_proc
     pr.data_resp = DateTime().strftime("%d/%m/%Y")
     return pr
Exemplo n.º 5
0
    def getIndirizzi(self, obj):
        doc = obj.document
        idoc = IolDocument(doc)
        results = list()
        elencoVie = dict()
        vie = obj.client.service.elencoVie()[2]
        for via in vie:
            elencoVie[str(via.value)] = str(via.label)

        mapfields = self.mapping['indirizzo']
        for r in idoc.getDatagridValue('elenco_civici'):
            fType = obj.client.factory.create('indirizzo')
            for k, v in mapfields.items():
                if v:
                    if k == 'via':
                        fType[k] = elencoVie[r[v]]
                    else:
                        fType[k] = r[v]
            results.append(fType)
        return results
Exemplo n.º 6
0
    def getWizardInfo(self):
        doc = self.document
        # Inizializzo il risultato
        result = dict(actions=[],
                      state="",
                      base_url="%s/content_status_modify?workflow_action=" %
                      (doc.absolute_url()),
                      forms=[])
        #Istanzio l'oggetto IolDocument

        iDoc = IolDocument(doc)
        info = loadJsonFile("%s/applications/wizard_info/%s.json" %
                            (self.path, self.tipo_app)).result

        wfInfo = iDoc.wfInfo()
        if doc.portal_type == 'PlominoForm':
            result["state"] = info["initial_state"]
            result["actions"] = info["initial_actions"]
        else:
            result["state"] = wfInfo["wf_state"]
            result["actions"] = wfInfo["wf_actions"]
        for v in info["states"]:
            cls_list = list()
            if not iDoc.isActionSupported(v["action"]):
                cls_list.append('link-disabled')
                action = ""
            else:
                action = v["action"]
            if result["state"] == v["state"]:
                cls_list.append("active")

            i = {
                "label": v["label"],
                "class": " ".join(cls_list),
                "action": action
            }
            result["forms"].append(i)
        return result
Exemplo n.º 7
0
    def sendThisMail(self,
                     obj,
                     ObjectId,
                     sender='',
                     debug=0,
                     To='',
                     password=''):
        doc = obj

        db = doc.getParentDatabase()
        iDoc = IolApp(doc)
        diz_mail = iDoc.getConvData('mail_%s' % ('accreditamento'))
        msg_info = dict(nome_app_richiesta=doc.getItem('nome_app_richiesta'),
                        link_pratica=doc.absolute_url())
        args = dict(To=doc.getItem('fisica_email') if To == '' else To,
                    From=sender,
                    as_script=debug)
        custom_args = dict()

        if not args['To']:

            plone_tools = getToolByName(doc.getParentDatabase().aq_inner,
                                        'plone_utils')
            msg = ''''ATTENZIONE! Non e' stato possibile inviare la mail perche' non esiste nessun destinatario'''
            plone_tools.addPortalMessage(msg, request=doc.REQUEST)

        attach_list = doc.getFilenames()

        if ObjectId in diz_mail.keys():

            if diz_mail[ObjectId].get('attach') != "":
                msg_info.update(dict(attach=diz_mail[ObjectId].get('attach')))

                custom_args = dict(
                    Object=diz_mail[ObjectId].get('object') % msg_info,
                    msg=doc.mime_file(
                        file='' if not msg_info.get('attach') in attach_list
                        else doc[msg_info['attach']],
                        text=diz_mail[ObjectId].get('text') % msg_info,
                        nomefile=diz_mail[ObjectId].get('nomefile')) %
                    msg_info)
            else:
                custom_args = dict(
                    Object=diz_mail[ObjectId].get('object') % msg_info,
                    msg=diz_mail[ObjectId].get('text') % msg_info)
        if custom_args:
            args.update(custom_args)

            return IolDocument(doc).sendMail(**args)
Exemplo n.º 8
0
    def sendThisMail(self,
                     obj,
                     ObjectId,
                     sender='',
                     debug=0,
                     To='',
                     password=''):
        doc = obj

        db = doc.getParentDatabase()
        iDoc = IolApp(doc)
        diz_mail = iDoc.getConvData('mail_%s' % ('scia'))

        msg_info = dict(numero_pratica=doc.getItem('numero_pratica'),
                        titolo=doc.Title(),
                        now=DateTime().strftime('%d/%m/%Y'),
                        istruttore=doc.getItem('istruttore'),
                        numero_protocollo=doc.getItem('numero_protocollo'),
                        data_protocollo=doc.getItem('data_protocollo'),
                        link_pratica=doc.absolute_url(),
                        data_pratica=doc.getItem('data_pratica'),
                        istruttoria_motivo_sospensione=doc.getItem(
                            'istruttoria_motivo_sospensione'),
                        nome_app=doc.getItem('iol_tipo_app'),
                        richiedente_nome=doc.getItem('fisica_nome'),
                        richiedente_cognome=doc.getItem('fisica_cognome'))
        args = dict(To=doc.getItem('progettista_pec') if To == '' else To,
                    From=sender,
                    as_script=debug)
        custom_args = dict()

        if not args['To']:

            plone_tools = getToolByName(doc.getParentDatabase().aq_inner,
                                        'plone_utils')
            msg = ''''ATTENZIONE! Non e' stato possibile inviare la mail perche' non esiste nessun destinatario'''
            plone_tools.addPortalMessage(msg, request=doc.REQUEST)

        attach_list = doc.getFilenames()

        if ObjectId in diz_mail.keys():

            if diz_mail[ObjectId].get('attach') != "":
                msg_info.update(
                    dict(documenti_autorizzazione=doc.getItem(
                        'documenti_autorizzazione')))
                msg_info.update(dict(attach=diz_mail[ObjectId].get('attach')))

                custom_args = dict(
                    Object=diz_mail[ObjectId].get('object') % msg_info,
                    msg=doc.mime_file(
                        file='' if not msg_info.get('attach') in attach_list
                        else doc[msg_info['attach']],
                        text=diz_mail[ObjectId].get('text') % msg_info,
                        nomefile=diz_mail[ObjectId].get('nomefile')) %
                    msg_info)
            else:
                custom_args = dict(
                    Object=diz_mail[ObjectId].get('object') % msg_info,
                    msg=diz_mail[ObjectId].get('text') % msg_info)

        if custom_args:
            args.update(custom_args)

            return IolDocument(doc).sendMail(**args)
Exemplo n.º 9
0
    def getSoggetti(self, obj):
        doc = obj.document
        idoc = IolDocument(doc)
        soggetti = list()
        ruoli = [
            'richiedente', 'proprietario', 'progettista', 'direttore',
            'esecutore'
        ]
        # Recupero informazioni sui richiedenti/proprietari
        soggetto = obj.client.factory.create('soggetto')
        for i in ruoli:
            soggetto[i] = 0
        mapfields = self.mapping['richiedente']
        for k, v in mapfields.items():
            if v:
                soggetto[k] = json.dumps(doc.getItem(v, None),
                                         cls=dateEncoder,
                                         use_decimal=True)

        soggetto['richiedente'] = 1
        soggetto['comunicazioni'] = 1
        if soggetto['sesso'] == 'Maschile':
            soggetto['sesso'] = 'M'
        else:
            soggetto['sesso'] = 'F'
        # Il richiedente è anche proprietario
        if doc.getItem('fisica_titolo', '').lower() == 'proprietario':
            soggetto['proprietario'] = 1
        soggetti.append(soggetto)
        for r in idoc.getDatagridValue('anagrafica_soggetti'):
            soggetto = obj.client.factory.create('soggetto')
            for i in ruoli:
                soggetto[i] = 0
            for k, v in mapfields.items():
                if v:
                    if v in r.keys():
                        soggetto[k] = r[v]
                    else:
                        soggetto[k] = ''
            soggetto['richiedente'] = 1
            soggetto['comunicazioni'] = 1
            if soggetto['sesso'] == 'Maschile':
                soggetto['sesso'] = 'M'
            else:
                soggetto['sesso'] = 'F'
            # Il richiedente è anche proprietario
            if 'fisica_titolo' in r.keys():
                titolo = r['fisica_titolo']
            else:
                titolo = ''
            if titolo.lower() == 'proprietario':
                soggetto['proprietario'] = 1
            soggetti.append(soggetto)

        # Recupero informazioni sul progettista
        soggetto = obj.client.factory.create('soggetto')
        for i in ruoli:
            soggetto[i] = 0
        mapfields = self.mapping['progettista']
        for k, v in mapfields.items():
            if v:
                value = doc.getItem(v, None)
                if isinstance(value, DateTime):
                    soggetto[k] = value.strftime("%d/%m/%Y")
                else:
                    soggetto[k] = value

        soggetto['progettista'] = 1
        soggetto['comunicazioni'] = 1
        if soggetto['sesso'] == 'Maschile':
            soggetto['sesso'] = 'M'
        else:
            soggetto['sesso'] = 'F'

        direttore = doc.getItem('direttore_opt', 'nodirettore')
        if direttore == 'direttoreesecutore':
            soggetto['direttore'] = 1
        soggetti.append(soggetto)
        # Il progettista è anche direttore lavori
        # Recupero informazioni sul direttore lavori

        if direttore == 'direttore':
            soggetto = obj.client.factory.create('soggetto')
            for i in ruoli:
                soggetto[i] = 0
            mapfields = self.mapping['direttore']
            for k, v in mapfields.items():
                if v:
                    soggetto[k] = json.dumps(doc.getItem(v, None),
                                             cls=dateEncoder,
                                             use_decimal=True)
            soggetto['direttore'] = 1
            soggetto['comunicazioni'] = 1
            if soggetto['sesso'] == 'Maschile':
                soggetto['sesso'] = 'M'
            else:
                soggetto['sesso'] = 'F'
            soggetti.append(soggetto)

        # Recupero informazioni sugli esecutori se necessario
        if doc.getItem('lavori_economia_opt', 'economia') == 'economia':
            pass
        else:
            soggetto = obj.client.factory.create('soggetto')
            for i in ruoli:
                soggetto[i] = 0
            mapfields = self.mapping['esecutore']
            for k, v in mapfields.items():
                if v:
                    soggetto[k] = json.dumps(doc.getItem(v, None),
                                             cls=dateEncoder,
                                             use_decimal=True)

            soggetto['esecutore'] = 1
            soggetto['comunicazioni'] = 1
            if soggetto['sesso'] == 'Maschile':
                soggetto['sesso'] = 'M'
            else:
                soggetto['sesso'] = 'F'

            soggetti.append(soggetto)
            for r in idoc.getDatagridValue('altri_esecutori'):
                soggetto = obj.client.factory.create('soggetto')
                for i in ruoli:
                    soggetto[i] = 0
                for k, v in mapfields.items():
                    if v:
                        if v in r.keys():
                            soggetto[k] = r[v]
                        else:
                            soggetto[k] = ''
                soggetto['esecutore'] = 1
                soggetto['comunicazioni'] = 1
                if soggetto['sesso'] == 'Maschile':
                    soggetto['sesso'] = 'M'
                else:
                    soggetto['sesso'] = 'F'
                soggetti.append(soggetto)
        return soggetti
Exemplo n.º 10
0
## Script (Python) "guard_c1"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument 
doc = state_change.object
idoc = IolDocument(doc)
return idoc.wfState() == 'dati'
Exemplo n.º 11
0
 def __init__(self, obj):
     self.document = obj
     iDoc = IolDocument(obj)
     self.tipo_app = iDoc.getIolApp()
     self.path = os.path.dirname(os.path.abspath(__file__))
Exemplo n.º 12
0
## Script (Python) "guard_a1"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument 
doc = state_change.object
if not doc.isDocument():
    return True

idoc = IolDocument(doc)
return idoc.wfState() == 'richiedenti'
Exemplo n.º 13
0
## Script (Python) "guard_f1"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument 
doc = state_change.object
idoc = IolDocument(doc)
return idoc.wfState() == 'oneri'
Exemplo n.º 14
0
## Script (Python) "guard_d1"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument 
doc = state_change.object
idoc = IolDocument(doc)
return idoc.wfState() == 'altri_soggetti' and 'cila' in idoc.getIolApp()
Exemplo n.º 15
0
## Script (Python) "guard_e1"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument 
doc = state_change.object
idoc = IolDocument(doc)
return idoc.wfState() == 'sicurezza'
Exemplo n.º 16
0
def saveData(doc,events):
    #getting database configuration
    param_name = 'db_%s' %doc.getParentDatabase().id
    conf = getConnection(doc.getParentDatabase())
    if not conf:
        api.portal.show_message(message='Replication not configured', request=doc.REQUEST)
        return -1
       
    #istantiation of SQLAlquemy object
    try:
        db = sql.create_engine(conf['conn_string'])
        metadata = sql.schema.MetaData(bind=db,reflect=True,schema=conf['db_schema'])
        table = sql.Table(conf['db_table'], metadata, autoload=True)
        orm.clear_mappers() 
        rowmapper = orm.mapper(plominoData,table)
    except Exception as e:
        api.portal.show_message(message=u'Si sono verificati errori nella connessione al database : %s' %str(e), request=doc.REQUEST )
        return -1
    #creating session
    Sess = orm.sessionmaker(bind = db)
    session = Sess()

    
    #getting data from plominoDocument
    try:
        serialData = getPlominoValues(doc)
        d = json.loads(json.dumps(serialData, default=DateTime.DateTime.ISO,use_decimal=True ))
    except Exception as e:
        api.portal.show_message(message='Si sono verificati errori nella serializzazione del documento %s' %str(e), request=doc.REQUEST)
        d = dict()
    
    #initialize object plominoData
    wf = getToolByName(doc, 'portal_workflow')
    id = doc.getId()
    roles = getIolRoles(doc)
    d['id'] = id
    data = dict(
        id = id,
        plominoform = doc.getForm().getFormName(),
        plominodb = doc.getParentDatabase().id,
        url = doc.absolute_url(),
        review_state = IolDocument(doc).wfState(),
        review_history = list(), #json.loads(json.dumps(wf.getInfoFor(doc,'review_history'), default=DateTime.DateTime.ISO,use_decimal=True )),
        iol_owner = roles['iol_owner'],
        iol_viewer = roles['iol_viewer'],
        iol_reviewer = roles['iol_reviewer'],
        iol_manager = roles['iol_manager'],
        path = doc.getPhysicalPath()[1:],
        last_modified = datetime.datetime.now(),
        data = d,
    )
    try:    
        row = plominoData(data['id'],data['plominodb'],data['plominoform'],data["url"], data["review_state"], data["review_history"],data['iol_owner'],data['iol_viewer'],data['iol_reviewer'],data['iol_manager'],data['path'],data['last_modified'],d)
        session = Sess()
        #deleting row from database
        session.query(plominoData).filter_by(id=id).delete()
        session.commit()
        #adding row to database
        session.add(row)
        session.commit()
        session.close()
        db.dispose()
    except Exception as e:
        api.portal.show_message(message=u'Si sono verificati errore nel salvataggio su database %s' %str(e), request=doc.REQUEST )
        db.dispose()
        return -1
    return 1
Exemplo n.º 17
0
## Script (Python) "guard_b1"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument 
doc = state_change.object
idoc = IolDocument(doc)
return idoc.wfState() == 'ubicazione'
Exemplo n.º 18
0
## Script (Python) "guard_d2"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=state_change,workflow
##title=
##
from iol.gisweb.utils.IolDocument import IolDocument
doc = state_change.object
idoc = IolDocument(doc)
return idoc.wfState() == 'altri_soggetti' and idoc.getIolApp() == 'scia'