def get_properties(context, prop, prop_name): msgid = _(u"not_available") not_avaiable = context.translate(msgid) try: return prop[prop_name] except: return not_avaiable
def secondarykeys_processing(self, jsondata): msgid = _(u"not_available") not_available = self.context.translate(msgid) table_ids = ["keyName","key"] return update_dossiers(jsondata, table_ids, not_available, has_address=False)
def get_documents(self): documents_url = '%s%s%s/documents' % (self.novac_url, PUBLIC_FODLER_WS, self.id_dossier) json_from_ws = self.called_ws(documents_url) if not json_from_ws: self.logger.error('Not able to call ws %s' % documents_url) msg_error = _(u'Not able to call ws') return [msg_error] jsondata = json_processing(json_from_ws) if not jsondata: msg_error = _(u'Not able to read this json') self.logger.error('%s : %s' % (msg_error, jsondata)) return [msg_error] return self.documents_processing(jsondata)
def utils_url(self): error = False msg_error = "" if not self.novac_url: error=True msg_error=_(u'No url for cirb.novac.novac_url') return {'novac_url':self.novac_url, 'error':error, 'msg_error':msg_error}
def call_put_url(request_url, request_headers, data): # request_headers is a dict logger = logging.getLogger('cirb.novac.utils.call_put_url') oldtimeout = socket.getdefaulttimeout() results = '' url = request_url try: opener = urllib2.build_opener(urllib2.HTTPHandler) socket.setdefaulttimeout(7) # let's wait 7 sec request = urllib2.Request(url, data=data) for header in request_headers: try: request.add_header(header.keys()[0], header.values()[0]) except: logger.error(_('headers bad formated')) request.get_method = lambda: 'PUT' results = opener.open(request).read() except HTTPError, e: exception = _('The server couldn\'t fulfill the request. Error code: %s. Url: %s' % (e.code, url)) logger.error(exception) return False
def dossier_processing(self, jsondata): msgid = _(u"not_available") not_available = self.context.translate(msgid) print jsondata table_ids = ["id","refNova","typeDossier","object","streetName", "numberFrom", "numberTo","zipcode", "municipality", "publicInquiry","startPublicInquiry","endPublicInquiry", "statusPermit","codeDossier", "pointCC","dateCC", "languageRequest","dateDossierComplet","specificReference", "municipalityOwner", "manager", "dateActivationPSK"] return update_dossiers(jsondata, table_ids, not_available, has_address=True)
def listprivate(self): self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state') user = get_user(self.request, self.context) if not user: msg_error = _('User undefined.') return self.listprivate_error(msg_error) results = {} results['user'] = user['name'] results['error'] = False results['novac_url'] = self.novac_url return results
def called_url(request_url, request_headers, params=''): # for exemple : content_type = application/xml """ """ oldtimeout = socket.getdefaulttimeout() results = '' url = request_url if params: url = '%s?%s' % (url, params) try: socket.setdefaulttimeout(7) # let's wait 7 sec request = urllib2.Request(url) for header in request_headers: try: request.add_header(header.keys()[0], header.values()[0]) except: logger.info(_('headers bad formated')) opener = urllib2.build_opener() results = opener.open(request).read() except HTTPError, e: exception = _('The server couldn\'t fulfill the request. Error code: %s. Url: %s' % (e.code, url)) logger.error(exception) return False
def public(self): error = False try: num_dossier = self.request.form.get("id") except: msg_error = u"Not num_dossier in url (GET)" return self.public_error(msg_error) url = "%s/%s/%s/" % (self.novac_url, PUB_DOSSIER, num_dossier) json_from_ws = self.call_ws(url) if not json_from_ws: msg_error = _(u"Not able to call this dossier : %s" % url) return self.public_error(msg_error) jsondata = json_processing(json_from_ws) if not jsondata: msg_error = _(u"Not able to read this json : %s" % jsondata) return self.public_error(msg_error) results = self.dossier_processing(jsondata) # data and celled_url used for test return {"data": jsondata, "results": results, "error": error, "called_url": url}
def dossier_processing(self, jsondata): msgid = _(u"not_available") not_available = self.context.translate(msgid) # in public novaRef instead of refNova table_ids = ["id","refNova","typeDossier","object","streetName", "numberFrom", "numberTo","zipCode", "municipality", "publicInquiry","startPublicInquiry","endPublicInquiry", "statusPermit","codeDossier", "pointCC","dateCC", "languageRequest","dateDossierComplet","dateNotifDecision", "dateDeadline","municipalityOwner","specificReference", "isOwner", "x", "y", "gestionnaire_Name", "gestionnaire_Phone", "gestionnaire_Email", "avisFd", "instance"] return Dossier(jsondata, table_ids, not_available, has_address=True, lang=self.context.Language())
def private(self): msg_error='' if not self.novac_url: msg_error=_(u'No url for novac url') return self.private_error(msg_error) elif not self.id_dossier: msg_error=_(u'No id folder in get method') return self.private_error(msg_error) dossier_url = '%s%s%s' % (self.novac_url, PRIVATE_FODLER_WS, self.id_dossier) json_from_ws = self.called_ws(dossier_url) if not json_from_ws: self.logger.error = ('Not able to call ws %s' % dossier_url) msg_error = _(u'Not able to call ws') return self.private_error(msg_error) jsondata = json_processing(json_from_ws) if not jsondata: msg_error = _(u'Not able to read this json : %s' % jsondata) return self.private_error(msg_error) results = self.dossier_processing(jsondata) results = update_municipality_owner(self.context, results) # Historic of dossier history_url = '%s%s' % (dossier_url, HISTORY) history = self.called_ws(history_url) if not history: self.logger.info('Not able to call ws %s' % history_url) msg_error = _(u'Not able to call ws') return self.private_error(msg_error) jsonhistory = json_processing(history) if not jsonhistory: msg_error = _(u'Not able to read this json : %s' % jsonhistory) return self.private_error(msg_error) history_ids = ['consultationDate','keyName'] historys = update_dossiers(jsonhistory, history_ids, "not_available", has_address=False) h_res = self.formated_history_date(historys) user = get_user(self.request, self.context) if not user: msg_error = _('User undefined.') return self.private_error(msg_error) results['user'] = user['name'] results['jsondata'] = jsondata results['jsonhistory'] = jsonhistory results['error'] = False results['h_res'] = h_res return results
def dossier_processing(self, jsondata): msgid = _(u"not_available") not_available = self.context.translate(msgid) table_ids = [ "id", "novaRef", "typeDossier", "object", "streetName", "numberFrom", "numberTo", "zipCode", "municipality", "publicInquiry", "startPublicInquiry", "endPublicInquiry", "statusPermit", "codeDossier", "pointCC", "dateCC", "languageRequest", "dateDossierComplet", "dateNotifDecision", "dateDeadline", "municipalityOwner", "specificReference", "instance", ] geometry = jsondata.get("geometry", None) if geometry: geo_results = Dossier(geometry, ["x", "y"], not_available, has_address=False) else: self.logger.error("public url return a no excpected json, no 'geometry' parameter") dossier = jsondata.get("properties", None) if dossier: dos_results = Dossier(dossier, table_ids, not_available, has_address=True) else: self.logger.error("public url return a no excpected json, no 'properties' parameter") dos_results = update_municipality_owner(self.context, dos_results) return dict(dos_results.items() + geo_results.items())
def activate_key(self): # TODO return 'Bad Key' if 500 is returned by ws key = urllib.quote_plus(self.request.form.get('key')) #query_string = self.request.environ['QUERY_STRING'] #key = urllib.quote_plus(query_string.replace('key=','')) try: user = get_user(self.request, self.context) except: user = get_user(self.request) if not user: self.logger.error('User is not logged') self.logger.info("key : %s - user : %s" % (key, user['id'])) activate_url = '%s%s%s&RNHEAD=%s' %(self.novac_url,ACTIVATION,key, user['id']) #activate_url = activate_url.encode('utf-8') headers = [{'Content-Type':'application/xml'}, {'RNHEAD':user['id']}, {'Accept-Language':'%s-be' % self.lang}] results = call_put_url(activate_url, headers, 'key=%s&RNHEAD=%s' % (key, user['id'])) if not results: msg_error = _(u"Not able to activate a dossier.") return self.listprivate_error(msg_error) return {"error":True,}
def view_name(self): return _(u"Private")
try: socket.setdefaulttimeout(7) # let's wait 7 sec request = urllib2.Request(url) for header in request_headers: try: request.add_header(header.keys()[0], header.values()[0]) except: logger.info(_('headers bad formated')) opener = urllib2.build_opener() results = opener.open(request).read() except HTTPError, e: exception = _('The server couldn\'t fulfill the request. Error code: %s. Url: %s' % (e.code, url)) logger.error(exception) return False except URLError, e: exception = _('We failed to reach server %s.<br />Reason: %s' % (url, e.reason)) logger.error(exception) return False finally: socket.setdefaulttimeout(oldtimeout) return results def call_put_url(request_url, request_headers, data): # request_headers is a dict logger = logging.getLogger('cirb.novac.utils.call_put_url') oldtimeout = socket.getdefaulttimeout() results = '' url = request_url try: opener = urllib2.build_opener(urllib2.HTTPHandler) socket.setdefaulttimeout(7) # let's wait 7 sec
def view_name(self): return _(u"Public")
def view_name(self): return _(u"Listprivate")
def second_level(self): return _(u"Listprivate")