def render_GET(self, request): fr = request.args.get('from')[0] to = request.args.get('to')[0] d = couch.openDoc(fr) d1 = couch.openDoc(to) defer.DeferredList([d,d1]).addCallback(self.merge) return "ok"
def render_GET(self, request): fr = request.args.get('from')[0] to = request.args.get('to')[0] d = couch.openDoc(fr) d1 = couch.openDoc(to) defer.DeferredList([d, d1]).addCallback(self.merge) return "ok"
def render_GET(self, request): ne = request.args.get('ne')[0] wi = request.args.get('wi')[0] d1 = couch.openDoc(wi) d2 = couch.openDoc(ne) d1.addCallback(self.deleteWi) d2.addCallback(self.deleteNe) li = defer.DeferredList([d1,d2]) li.addCallback(self.finish, request) return NOT_DONE_YET
def render_GET(self, request): ne = request.args.get('ne')[0] wi = request.args.get('wi')[0] d1 = couch.openDoc(wi) d2 = couch.openDoc(ne) d1.addCallback(self.storeWi, ne) d2.addCallback(self.storeNe, wi) li = defer.DeferredList([d1, d2]) li.addCallback(self.finish, request) return NOT_DONE_YET
def getItem(self, res, gen, codes): try: item = gen.next() except StopIteration: # wit codes returns all wits which stock is more than 0 _all = couch.openView(designID, 'wit_codes', stale=False) _all.addCallback(self.cleanDocs, codes) _all.addErrback(self.pr) return sio = StringIO() item_code = item.pop('code') codes.add(item_code) d = couch.openDoc(item_code, writer=sio) def co(res): self.compareItem(res, item, sio) def st(fail): c = couch.saveDoc(item, docId=item_code) c.addErrback(self.pr) d.addCallbacks(co, st) d.addErrback(self.pr) d.addCallback(self.getItem, gen, codes) d.addErrback(self.pr) return d
def fillComponents(self, promo, request): components = [] for c in promo['components']: components.append(couch.openDoc(c['code'])) li = defer.DeferredList(components) li.addCallback(self.finish, promo, request) return li
def addNewImage(image, _id): def add(doc): d = couch.addAttachments(doc, image)#image is a dictionary d.addCallback(lambda _doc:couch.saveDoc(_doc)) d.addErrback(pr) d = couch.openDoc(_id) d.addCallback(add)
def merge(self, li): from_doc = li[0][1] to_doc = li[1][1] for k, v in from_doc.items(): if k in ('new_stock', 'stock1', '_id', '_rev', 'new_link'): continue if 'price' in k: continue to_doc[k] = v to_doc['stock1'] = to_doc['new_stock'] to_doc['price'] = to_doc['us_price'] to_doc['cloned'] = True defs = [] def name_bin(name): def di(bin): return {name: bin} return di for att in from_doc.get('_attachments', {}): sio = StringIO() defs.append(couch.openDoc(from_doc['_id'], attachment=att, writer=sio)\ .addCallback(lambda some:{att:sio})) return defer.DeferredList(defs).addCallback(self.attach, to_doc)
def cleanDocs(self, _all_docs, codes): """ if no doc in codes (the component is disapeared from wit db) -> put 0 to its stock1""" all_count = 0 deleted = [] def zerostock(_doc): _doc['stock1'] = 0 couch.saveDoc(_doc) for row in _all_docs['rows']: try: int(row['id']) except ValueError: continue all_count +=1 # try: if row['id'] not in codes: d = couch.openDoc(row['id']) d.addCallback(zerostock) deleted.append(row['id']) # destroy cache here! from pc import admin admin.clear_cache() send_email('*****@*****.**', u'Обновление wit-tech', u'Всего позиций:' + unicode(all_count) + u', удалено позиций:' + u','.join(deleted), sender=u'Компьютерный магазин <*****@*****.**>')
def cleanDocs(self, _all_docs, codes): """ if no doc in codes (the component is disapeared from wit db) -> put 0 to its stock1""" all_count = 0 deleted = [] def zerostock(_doc): _doc['stock1'] = 0 couch.saveDoc(_doc) for row in _all_docs['rows']: try: int(row['id']) except ValueError: continue all_count += 1 # try: if row['id'] not in codes: d = couch.openDoc(row['id']) d.addCallback(zerostock) deleted.append(row['id']) # destroy cache here! from pc import admin admin.clear_cache() send_email('*****@*****.**', u'Обновление wit-tech', u'Всего позиций:' + unicode(all_count) + u', удалено позиций:' + u','.join(deleted), sender=u'Компьютерный магазин <*****@*****.**>')
def render_POST(self, request): txt = request.args.get('txt',[None])[0] if txt is None: return "ok" doc = {'_id':base36.gen_id(),'txt':txt,'date':str(date.today()).split('-')} _type = request.args.get('type',[None])[0] if _type is None or _type not in self.types: _type = 'faq' doc.update({'type':_type}) doc.update({'author':request.getCookie('pc_user')}) email = request.args.get('email',[None])[0] if email is not None: doc.update({'email':email}) name = request.args.get('name',[None])[0] if name is not None: doc.update({'name':name}) if name is not None or email is not None: u = couch.openDoc(request.getCookie('pc_user')) u.addCallback(self.storeNameOrEmail, unicode(name, 'utf-8'), email) parent = request.args.get('parent',[None]) if parent[0] is not None: doc['parent'] = parent title = request.args.get('title',[None])[0] if title is not None: doc['title'] = title blog = request.args.get('blog', [None])[0] if blog is not None: return self.storeBlog(doc, request) d = couch.saveDoc(doc) d.addCallback(self.finish, doc, request) return NOT_DONE_YET
def storeDescription(self, request): _id = request.args.get('code')[0] print "store! " + str(_id) _description = simplejson.loads(request.args.get('desription')[0][1:-1]) d = couch.openDoc(_id) d.addErrback(self.noSuchDoc(_id)) d.addCallback(self.saveDescription, _description)
def render_POST(self, request): defs = [] for name in parts_aliases.values(): defs.append(couch.openDoc(name[0])) li = defer.DeferredList(defs) li.addCallback(self.finish, request) return NOT_DONE_YET
def render_POST(self,request): defs = [] for name in parts_aliases.values(): defs.append(couch.openDoc(name[0])) li = defer.DeferredList(defs) li.addCallback(self.finish, request) return NOT_DONE_YET
def storeDescription(self, request): _id = request.args.get('code')[0] print "store! " + str(_id) _description = simplejson.loads( request.args.get('desription')[0][1:-1]) d = couch.openDoc(_id) d.addErrback(self.noSuchDoc(_id)) d.addCallback(self.saveDescription, _description)
def render_GET(self, request): _id = request.args.get("_id", [None])[0] if _id is None: return "fail" d = couch.openDoc('order_' + _id) d.addCallback(self.finish, request) # d.addErrback(self.fail, request) return NOT_DONE_YET
def addNewImage(image, _id): def add(doc): d = couch.addAttachments(doc, image) #image is a dictionary d.addCallback(lambda _doc: couch.saveDoc(_doc)) d.addErrback(pr) d = couch.openDoc(_id) d.addCallback(add)
def render_GET(self, request): _id = request.args.get("_id", [None])[0] if _id is None: return "fail" d = couch.openDoc('order_'+_id) d.addCallback(self.finish, request) # d.addErrback(self.fail, request) return NOT_DONE_YET
def render_POST(self, request): _id = request.args.get('_id', [None])[0] description = request.args.get('descr', [None])[0] if _id is None or description is None: return 'fail params' d = couch.openDoc(_id) d.addCallback(self.store, description, request) d.addErrback(self.fail, 'fail in open', request) return NOT_DONE_YET
def getUser(model): d1 = couch.openDoc(model['author']) mock = defer.Deferred() mock.addCallback(lambda x: model) mock.callback(None) li = defer.DeferredList([mock, d1]) li.addCallback(self.addComponents, _id) li.addCallback(self.finish, request) return li
def getUser(model): d1 = couch.openDoc(model['author']) mock = defer.Deferred() mock.addCallback(lambda x: model) mock.callback(None) li = defer.DeferredList([mock,d1]) li.addCallback(self.addComponents, _id) li.addCallback(self.finish, request) return li
def render_POST(self, request): _id = request.args.get('id')[0] desc = request.args.get('desc')[0] img = request.args.get('img')[0] name = request.args.get('name')[0] warranty = request.args.get('warranty')[0] articul = request.args.get('articul')[0] catalogs = request.args.get('catalogs')[0] d = couch.openDoc(_id) d.addCallback(self.finish, desc, name, img, warranty, articul, catalogs) return "ok"
def getThree(self, result, request): model = None for r in result['rows']: model = r['doc'] break d1 = couch.openDoc(model['author']) mock = defer.Deferred() mock.addCallback(lambda x: model) mock.callback(None) li = defer.DeferredList([mock, d1]) li.addCallback(self.addComponents, model['_id']) li.addCallback(self.finish, request) return li
def render_GET(self, request): _id = request.args.get('id')[0] if len(_id)>3: order_d = couch.openDoc('order_'+_id) order_d.addCallback(self.finish, request) # if no order -> get model order_d.addErrback(self.getModel, _id, request) # if problem with the order -> finish any way order_d.addErrback(self.graceFull, request) else: d = couch.openView(designID, 'last_free', key=_id, include_docs=True) d.addCallback(self.getThree, request) return NOT_DONE_YET
def getThree(self, result, request): model = None for r in result['rows']: model = r['doc'] break d1 = couch.openDoc(model['author']) mock = defer.Deferred() mock.addCallback(lambda x: model) mock.callback(None) li = defer.DeferredList([mock,d1]) li.addCallback(self.addComponents, model['_id']) li.addCallback(self.finish, request) return li
def prepareNewComponents(self, external_id): defs = [] noClean = False if external_id.endswith('1'): external_id = external_id[:-1] noClean = True for c in self.components: if c['spans'][-1] == u'в наличии': c['new_stock'] = 5 else: try: ma = re.match(self.number_pat, c['spans'][-1]) if ma is not None: c['new_stock'] = int(ma.group()) except: c['new_stock'] = 0 try: rur_price = re.match(self.rur_price_pat,c['spans'][0])\ .group().replace('.','').replace(',','.') us_price = re.match(self.us_price_pat,c['spans'][1])\ .groups()[0].replace('.','').replace(',','.') rur_recommended_price = re.match(self.rur_price_pat,c['spans'][2])\ .group().replace('.','').replace(',','.') us_recommended_price = re.match(self.us_price_pat,c['spans'][3])\ .groups()[0].replace('.','').replace(',','.') c['rur_price'] = round(float(rur_price)) c['us_price'] = round(float(us_price), 2) c['rur_recommended_price'] = round( float(rur_recommended_price)) c['us_recommended_price'] = round(float(us_recommended_price), 2) c.pop('spans') c['new_catalogs'] = external_id d = couch.openDoc(c['_id']) d.addCallback(self.updateComponent(c)) d.addErrback(self.storeNewComponent(c)) defs.append(d) except: pass li = defer.DeferredList(defs) if noClean: li.addCallback(lambda x: '0') else: li.addCallback(self.cleanNewDocs, external_id) li.addCallback(lambda deleted: send_email( '*****@*****.**', u'Обновление new system ' + external_id, u'Всего позиций:' + unicode(len(defs)) + u' Удалено:' + deleted, sender=u'Компьютерный магазин <*****@*****.**>')) return li
def render_GET(self, request): pr = request.args.get('pr', [None])[0] access_token = request.args.get('access_token', [None])[0] code = request.args.get('code', [None])[0] if pr is None or (access_token is None and code is None) or pr not in self.auths: return "fail" pc_user = request.getCookie('pc_user') d = couch.openDoc(pc_user) d.addCallback(self.auths[pr], access_token, code, request) def new_user(fail): return self.auths[pr]( {'_id':pc_user,'models':[],'pc_key':base36.gen_id(), 'new':True}, access_token, code, request) d.addErrback(new_user) return NOT_DONE_YET
def render_GET(self, request): _id = request.args.get('id')[0] if len(_id) > 3: order_d = couch.openDoc('order_' + _id) order_d.addCallback(self.finish, request) # if no order -> get model order_d.addErrback(self.getModel, _id, request) # if problem with the order -> finish any way order_d.addErrback(self.graceFull, request) else: d = couch.openView(designID, 'last_free', key=_id, include_docs=True) d.addCallback(self.getThree, request) return NOT_DONE_YET
def prepareNewComponents(self, external_id): defs = [] noClean = False if external_id.endswith('1'): external_id = external_id[:-1] noClean = True for c in self.components: if c['spans'][-1]==u'в наличии': c['new_stock'] = 5 else: try: ma = re.match(self.number_pat,c['spans'][-1]) if ma is not None: c['new_stock'] = int(ma.group()) except: c['new_stock'] = 0 try: rur_price = re.match(self.rur_price_pat,c['spans'][0])\ .group().replace('.','').replace(',','.') us_price = re.match(self.us_price_pat,c['spans'][1])\ .groups()[0].replace('.','').replace(',','.') rur_recommended_price = re.match(self.rur_price_pat,c['spans'][2])\ .group().replace('.','').replace(',','.') us_recommended_price = re.match(self.us_price_pat,c['spans'][3])\ .groups()[0].replace('.','').replace(',','.') c['rur_price'] = round(float(rur_price)) c['us_price'] = round(float(us_price),2) c['rur_recommended_price'] = round(float(rur_recommended_price)) c['us_recommended_price'] = round(float(us_recommended_price),2) c.pop('spans') c['new_catalogs'] = external_id d = couch.openDoc(c['_id']) d.addCallback(self.updateComponent(c)) d.addErrback(self.storeNewComponent(c)) defs.append(d) except: pass li = defer.DeferredList(defs) if noClean: li.addCallback(lambda x: '0') else: li.addCallback(self.cleanNewDocs, external_id) li.addCallback(lambda deleted: send_email('*****@*****.**', u'Обновление new system '+external_id, u'Всего позиций:' + unicode(len(defs))+u' Удалено:'+deleted, sender=u'Компьютерный магазин <*****@*****.**>')) return li
def render_POST(self, request): # userid_extra = request.args.get('userid_extra',[None])[0] amount = request.args.get('amount',[None])[0] userid = request.args.get('userid',[None])[0] userid_extra = request.args.get('userid_extra',[None])[0] paymentid = request.args.get('paymentid',[None])[0] key = request.args.get('key',[None])[0] paymode = request.args.get('paymode',[None])[0] orderid = request.args.get('orderid',[None])[0] serverid = request.args.get('serverid',[None])[0] ha = hashlib.md5() def up(some): if some is None: return ha.update(some) # amount + userid + paymentid + секретный ключ произвольного вида (до 35 символов). up(amount) up(userid) up(paymentid) up(do_key) di = ha.hexdigest() answer = deepcopy(self.xml) if key is not None and di == key: payment = {'userid':userid,'userid_extra':userid_extra,'paymentid':paymentid,'key':key, 'paymode':paymode,'orderid':orderid,'serverid':serverid,'amount':amount, 'type':'do_payment'} d = couch.openDoc(userid) d1 = couch.saveDoc(payment) li = defer.DeferredList([d,d1]) li.addCallback(self.storePayment,payment,answer,request) li.addErrback(self.fail, answer, request) return NOT_DONE_YET else: answer.find('code').text = 'No' answer.find('comment').text = u'Invalid key' return etree.tostring(answer, encoding='utf-8', xml_declaration=True)
def getItem(self, res, gen, codes): try: item = gen.next() except StopIteration: # wit codes returns all wits which stock is more than 0 _all = couch.openView(designID,'wit_codes',stale=False) _all.addCallback(self.cleanDocs, codes) _all.addErrback(self.pr) return sio = StringIO() item_code = item.pop('code') codes.add(item_code) d = couch.openDoc(item_code, writer=sio) def co(res): self.compareItem(res, item, sio) def st(fail): c = couch.saveDoc(item, docId=item_code) c.addErrback(self.pr) d.addCallbacks(co,st) d.addErrback(self.pr) d.addCallback(self.getItem, gen, codes) d.addErrback(self.pr) return d
def merge(self, li): from_doc = li[0][1] to_doc = li[1][1] for k,v in from_doc.items(): if k in ('new_stock','stock1','_id','_rev','new_link'): continue if 'price' in k: continue to_doc[k] = v to_doc['stock1'] = to_doc['new_stock'] to_doc['price'] = to_doc['us_price'] to_doc['cloned'] = True defs = [] def name_bin(name): def di(bin): return {name:bin} return di for att in from_doc.get('_attachments',{}): sio = StringIO() defs.append(couch.openDoc(from_doc['_id'], attachment=att, writer=sio)\ .addCallback(lambda some:{att:sio})) return defer.DeferredList(defs).addCallback(self.attach, to_doc)
def render_GET(self, request): key = request.args.get('key',[None])[0] if key is None: return "ok" promo = couch.openDoc(key) promo.addCallback(self.fillComponents, request) return NOT_DONE_YET
def render_GET(self, request): _id = request.args.get('_id')[0] d = couch.openDoc(_id) d.addCallback(self.goForImage, request) return NOT_DONE_YET
def render_GET(self, request): key = request.args.get('key', [None])[0] if key is None: return "ok" promo = couch.openDoc(key) promo.addCallback(self.fillComponents, request) return NOT_DONE_YET
def render_POST(self, request): to_store = request.args.get('to_store')[0] jto_store = simplejson.loads(to_store) d = couch.openDoc(jto_store['_id']) d.addCallback(self.storeModel, jto_store, request) return NOT_DONE_YET
def partPage(template, skin, request): name = request.path.split('/')[-1] d = couch.openDoc(parts_aliases[name][0]) d.addCallback(renderPartPage, parts_aliases[name][1], template, skin) d.addCallback(lambda some: some.render()) return d
def partPage(template, skin, request): name = request.path.split('/')[-1] d = couch.openDoc(parts_aliases[name][0]) d.addCallback(renderPartPage, parts_aliases[name][1], template, skin) d.addCallback(lambda some:some.render()) return d
def sync(self): d = couch.openDoc(self._id) d.addCallback(self.update) d.addErrback(self.add) return d
def render_GET(self, request): _id = request.args.get('_id')[0] d= couch.openDoc(_id) d.addCallback(self.goForImage, request) return NOT_DONE_YET
def render_POST(self, request): to_store = request.args.get('to_store')[0] jto_store = simplejson.loads(to_store) d = couch.openDoc(jto_store['_id']) d.addCallback(self.storeModel, jto_store,request) return NOT_DONE_YET