def get(self): try: key = db.Key(self.request.get('key')) except: self.response.set_status(404) self.response.headers['Content-Type'] = 'text/plain; charset=utf-8' self.response.out.write('Not Found\n') return ci = ContactInfo.get(key) if ci is None: self.response.set_status(404) self.response.headers['Content-Type'] = 'text/plain; charset=utf-8' self.response.out.write('Not Found\n') else: self.response.set_status(200) self.response.headers['Content-Type'] \ = 'application/octet-stream' self.response.headers['Content-Length'] \ = len(ci.data) self.response.headers['Content-Disposition'] \ = 'inline; filename="account_%d.enc"' % ci.account_id self.response.out.write(ci.data)
def query_for(self, q): return ContactInfo.gql( 'WHERE account_id = :1 ORDER BY filed DESC, __key__', int(q) )
def query_for(self, q): return ContactInfo.gql( 'WHERE domain = :1 ORDER BY account_id, filed DESC, __key__', q )
def post(self): self.response.headers['Content-Type'] = 'text/plain; charset=utf-8' ci = ContactInfo() try: if APPSEC != self.request.get('APPSEC'): raise ValueError ci.account_id = int(self.request.get('account_id')) if ci.account_id < 1: raise ValueError d = self.request.get('data') if d is None or len(d) < 1: raise ValueError ci.data = db.Blob(d.encode('utf-8')) ci.email = self.request.get('email') if ci.email is None or len(ci.email) == 0: ci.email = None ci.domain = None else: ci.email = ci.email.lower() ci.domain = ci.email[ci.email.index('@') + 1:] f = self.request.get('filed') if f is None or len(f) == 0: f = datetime.utcnow() else: f = datetime.utcfromtimestamp(int(f)) ci.filed = f except: self.response.set_status(500) self.response.out.write('BAD INPUT\n') raise try: ci.put() except: self.response.set_status(500) self.response.out.write('DATA STORE FAIL\n') raise self.response.set_status(200) self.response.out.write('OK\n')