Exemple #1
0
 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"
Exemple #2
0
 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"
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
    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
Exemple #6
0
 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
Exemple #7
0
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)
Exemple #8
0
    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)
Exemple #9
0
 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
Exemple #10
0
    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'Компьютерный магазин <*****@*****.**>')
Exemple #11
0
    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'Компьютерный магазин <*****@*****.**>')
Exemple #12
0
    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
Exemple #13
0
 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)
Exemple #14
0
 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
Exemple #15
0
 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
Exemple #16
0
 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)
Exemple #17
0
 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
Exemple #18
0
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)
Exemple #19
0
 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
Exemple #20
0
 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
Exemple #21
0
 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
Exemple #22
0
 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
Exemple #23
0
 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
Exemple #24
0
 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"
Exemple #25
0
 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"
Exemple #26
0
 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
Exemple #27
0
 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
Exemple #28
0
 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
Exemple #29
0
 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
Exemple #30
0
    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
Exemple #31
0
 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
Exemple #32
0
 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
Exemple #33
0
    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)
Exemple #34
0
 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
Exemple #35
0
    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)
Exemple #36
0
 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
Exemple #37
0
 def render_GET(self, request):
     _id = request.args.get('_id')[0]
     d = couch.openDoc(_id)
     d.addCallback(self.goForImage, request)
     return NOT_DONE_YET
Exemple #38
0
 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
Exemple #39
0
 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
Exemple #40
0
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
Exemple #41
0
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
Exemple #42
0
 def sync(self):
     d = couch.openDoc(self._id)
     d.addCallback(self.update)
     d.addErrback(self.add)
     return d
Exemple #43
0
 def render_GET(self, request):
     _id = request.args.get('_id')[0]
     d= couch.openDoc(_id)
     d.addCallback(self.goForImage, request)
     return NOT_DONE_YET
Exemple #44
0
 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