def get(self, tenant): user = self.login_required() if user.tenant != tenant: raise RuntimeError('404') designator = self.request.get('designator') if designator: query1 = Akte.all().filter('tenant =', tenant).filter('designator =', designator) query2 = Dokument.all().filter('tenant =', tenant).filter('designator =', designator) query3 = Dokument.all().filter('tenant =', tenant).filter('ref =', designator) query4 = Dokument.all().filter('tenant =', tenant).filter('ref =', designator) results = list(set(query1.fetch(10) + query2.fetch(10) + query3.fetch(10) + query4.fetch(10))) values = dict(results=[x.as_dict(self.abs_url) for x in results], success=True) else: results = [] # 'Term1 "Term2 and Term3"'.split() -> ['Term1', 'Term2 and Term3'] for part in gaetk.tools.split(self.request.get('q')): # would be aswsome to run this in paralell for model in [Akte, Dokument]: for field in ['designator', 'name1', 'plz', 'email', 'ref', 'name2', 'ort']: query = model.all().filter('tenant =', tenant ).filter('%s >=' % field, part ).filter('%s <=' % field, part + u'\ufffd') results.extend([x.as_dict(self.abs_url) for x in query.fetch(25)]) # TODO: scoring and deduping values = dict(results=results, success=True) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values))
def get(self, message_queue_name): """ Liefert eine Übersicht über die Nachrichten in der Queue zurück. Kann in JSON, XML, oder plaintext abgefragt werden. Für eine Beschreibung des Formats siehe README. """ self.on_access(message_queue_name) query = Message.query( Message.message_queue_name == message_queue_name, Message.deleted_at == None).order( Message.created_at) messages = query.fetch(self.max_messages) document = { 'min_retry_interval': self.min_retry_interval, 'max_retry_interval': self.max_retry_interval, 'messages': [self._message_as_dict(msg) for msg in messages], } accept = self.request.headers.get('Accept', '') if accept.startswith('application/json'): self.response.headers["Content-Type"] = 'application/json' self.response.out.write(json.dumps(document)) elif accept.startswith('application/xml'): self.response.headers["Content-Type"] = 'application/xml' self.response.out.write(dict2xml(document, listnames={'messages': 'message'})) else: self.response.headers["Content-Type"] = 'text/plain' self.response.out.write('\n'.join(x['url'] for x in document['messages']))
def get(self, tenant, akte_id): user = self.login_required() if (user.tenant != tenant): raise RuntimeError('404') documents = Dokument.all().filter('tenant =', tenant).filter( 'akte =', db.Key.from_path('Akte', "%s-%s" % (tenant, akte_id))).fetch(50) documents = [x.as_dict(self.abs_url) for x in documents if tenant == x.tenant] values = dict(documents=documents, success=True) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values))
def post(self): """Empfänger-Konfiguration updaten.""" user = self.login_required() self.response.headers["Content-Type"] = "application/json" tenant = user.tenant # tenant = self.request.get('tenant') text = self.request.get('text', '') email = self.request.get('email') credential = Credential.create(tenant=tenant, text=text, email=email) self.response.set_status(201) self.response.out.write(hujson.dumps(dict(uid=credential.uid, secret=credential.secret)))
def post(self): """Empfänger-Konfiguration updaten.""" user = self.login_required() self.response.headers["Content-Type"] = "application/json" tenant = user.tenant # tenant = self.request.get('tenant') text = self.request.get('text', '') email = self.request.get('email') credential = Credential.create(tenant=tenant, text=text, email=email) self.response.set_status(201) self.response.out.write( hujson.dumps(dict(uid=credential.uid, secret=credential.secret)))
def get(self, tenant, designator, format): user = self.login_required() if format == 'json': akte = Akte.get_by_key_name("%s-%s" % (tenant, designator)) if (not akte) or (akte.tenant != tenant) or (user.tenant != tenant): raise RuntimeError('404') values = dict(data=akte.as_dict(self.abs_url), success=True) self.response.headers['Cache-Control'] = 'max-age=15 private' self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values)) else: self.render({'designator': designator}, 'akte.html')
def get(self, tenant, akte_id, doc_id, format): user = self.login_required() document = Dokument.get_by_key_name("%s-%s" % (tenant, doc_id)) if (not document) or (user.tenant != tenant): raise RuntimeError('404') if document.akte.key().name() != akte_id: logging.info(document.akte.key().name()) raise RuntimeError('404') if document.tenant != tenant: raise RuntimeError('404') self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(dict(document=document.as_dict(self.abs_url))))
def get(self, tenant, format): user = self.login_required() if user.tenant != tenant: raise RuntimeError('404') if format == 'json': query = Akte.all().filter('tenant =', tenant).order('-created_at') values = self.paginate(query, datanodename='akten') values['akten'] = [akte.as_dict(self.abs_url) for akte in values['akten']] self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values)) else: self.render({}, 'akten.html')
def get(self, tenant, akte_id): user = self.login_required() if (user.tenant != tenant): raise RuntimeError('404') documents = Dokument.all().filter('tenant =', tenant).filter( 'akte =', db.Key.from_path('Akte', "%s-%s" % (tenant, akte_id))).fetch(50) documents = [ x.as_dict(self.abs_url) for x in documents if tenant == x.tenant ] values = dict(documents=documents, success=True) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values))
def get(self, tenant, akte_id, doc_id, format): user = self.login_required() document = Dokument.get_by_key_name("%s-%s" % (tenant, doc_id)) if (not document) or (user.tenant != tenant): raise RuntimeError('404') if document.akte.key().name() != akte_id: logging.info(document.akte.key().name()) raise RuntimeError('404') if document.tenant != tenant: raise RuntimeError('404') self.response.headers['Content-Type'] = 'application/json' self.response.out.write( json.dumps(dict(document=document.as_dict(self.abs_url))))
def get(self, tenant, format): user = self.login_required() if user.tenant != tenant: raise RuntimeError('404') if format == 'json': query = Akte.all().filter('tenant =', tenant).order('-created_at') values = self.paginate(query, datanodename='akten') values['akten'] = [ akte.as_dict(self.abs_url) for akte in values['akten'] ] self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values)) else: self.render({}, 'akten.html')
def execute_prepare_headers(url, args, bust_cache): args_encoded = urllib.urlencode({'q': hujson.dumps(args)}) url = ("/%s?" % url) + args_encoded headers = {} # See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4 for the reasoning here if bust_cache: logging.debug("busting cache") headers.update({'Cache-Control': "no-cache"}) url += '&ts=%s' % time.time() # sign request digest = hmac.new(_find_credentials(), url, hashlib.sha1).hexdigest() softmexpresshost = os.environ.get('SOFTMEXPRESSHOST', SOFTMEXPRESSHOST) headers.update({'X-sig': digest}) url = 'http://' + softmexpresshost + url return url, headers
def encode(message): """Decode the dict-like message into a valid wire representation. Besides the types familar from Python's json module it can serialize Decimal() objects. #>>> encode({'guid': 123, 'created_by': 'test', 'num': decimal.Decimal('5.00')}) #'{\n "created_by": "test",\n "guid": 123,\n "num": 5.00\n}' """ warnings.warn("hutools.humessaging is deprecated use cs.messaging", DeprecationWarning, stacklevel=2) assert 'created_by' in message assert 'guid' in message ret = json.dumps(message) # replace "Decimal(\\"5.00\\")" with 5.00 return re.sub(_decimal_re, r'\1.\2', ret)
def get(self, tenant): user = self.login_required() if user.tenant != tenant: raise RuntimeError('404') designator = self.request.get('designator') if designator: query1 = Akte.all().filter('tenant =', tenant).filter('designator =', designator) query2 = Dokument.all().filter('tenant =', tenant).filter( 'designator =', designator) query3 = Dokument.all().filter('tenant =', tenant).filter('ref =', designator) query4 = Dokument.all().filter('tenant =', tenant).filter('ref =', designator) results = list( set( query1.fetch(10) + query2.fetch(10) + query3.fetch(10) + query4.fetch(10))) values = dict(results=[x.as_dict(self.abs_url) for x in results], success=True) else: results = [] # 'Term1 "Term2 and Term3"'.split() -> ['Term1', 'Term2 and Term3'] for part in gaetk.tools.split(self.request.get('q')): # would be aswsome to run this in paralell for model in [Akte, Dokument]: for field in [ 'designator', 'name1', 'plz', 'email', 'ref', 'name2', 'ort' ]: query = model.all().filter('tenant =', tenant).filter( '%s >=' % field, part).filter('%s <=' % field, part + u'\ufffd') results.extend( [x.as_dict(self.abs_url) for x in query.fetch(25)]) # TODO: scoring and deduping values = dict(results=results, success=True) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(values))
def execute(url, args, method='GET', ua='', bust_cache=False): """Execute SQL statement""" args_encoded = urllib.urlencode({'q': hujson.dumps(args)}) url = ("/%s?" % url) + args_encoded digest = hmac.new(_find_credentials(), url, hashlib.sha1).hexdigest() softmexpresshost = os.environ.get('SOFTMEXPRESSHOST', 'api.hudora.biz:8082') headers = {'X-sig': digest} # See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4 for the reasoning here if bust_cache: headers['Cache-Control'] = "no-cache" status, headers, content = huTools.http.fetch('http://' + softmexpresshost + url, method=method, headers=headers, ua='%s/husoftm2.backend' % ua) if status != 200: # TODO: this looks extremely fragile. Must have be drunk while coding this. # needs a better implementation if content.startswith('Internal Error: {\'EXIT\',\n {timeout'): raise TimeoutException(content) raise RuntimeError("Server Error: %r" % content) return content