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
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
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
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
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
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
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)
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)
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
## 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'
def __init__(self, obj): self.document = obj iDoc = IolDocument(obj) self.tipo_app = iDoc.getIolApp() self.path = os.path.dirname(os.path.abspath(__file__))
## 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'
## 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'
## 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()
## 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'
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
## 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'
## 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'