def index(): #common.page_stats(db, response['view']) #print request.args response.title = T( "Обмен биткоинов криптовалют на электронные деньги Яндекс") response.subtitle = T('Dogecoin Litecoin NEXT') if False and session.date_log: d_diff = datetime.datetime.today() - session.date_log if d_diff.seconds > 1200: session.date_log = None session.YD_acc = '-' acc = session.toDlrAcc title = acc and T( 'Ваш кошелек') + ':' + acc[:3] + '***' + acc[-3:] or response.title subtitle = session.date_log and (T('Дата посещения %s') % session.date_log) or response.subtitle try: session.date_log = request.now except: print 'to_wallet session error .date_log:', type( request.now), request.now # берем только тех кто за рубли и для этого дела # причем по 1 аккаунту на диллера тут нужно - для писка # какой диллер вообще на кошельки принимает ed_name = None if request.vars: vn = 'ed' if vn in request.vars: ed_name = request.vars[vn] limit_bal, inp_dealers_tab = ed_common.get_edealers_for_to_wallet( db, deal, curr_out, ecurr_out_id, ed_name) if len(inp_dealers_tab) == 0: return err_dict( T('ОШИБКА: Нет доступных диллеров') + (ed_name and (' ' + T('или неправильно задано имя [%s] системы электронных денег!') % ed_name) or '')) inp_dealers = [] for r in inp_dealers_tab: inp_dealers.append( [r[0], ('%s [%s], ' + T('доступно') + ' %s, %s...%s') % r[1]]) from gluon.storage import Storage vars = Storage() if request.vars: vn = 'sum' if vn in request.vars: vars[vn] = test_vol(request.vars[vn]) vn = 'acc' if vn in request.vars: acc = request.vars[vn] vars[vn] = acc if not ed_name: return err_dict( T("ОШИБКА: Не задано имя системы электронных денег для данного кошелька %s! Пример ссылки: %s?ed=yandex&sum=1500&acc=423456780345" ) % (acc, URL()), True) vn = 'mess' if 'mess' in request.vars: vars[vn] = request.vars[vn] h = CAT() dealer = None for rr in db_client.get_xcurrs_for_deal(db, 0, curr_out, deal, dealer): #print rr id = '%s' % rr['id'] disabled = rr['expired'] if disabled: memo = CAT( T('Курс не найден'), ', ', T('Когда курс будет получен платеж пройдёт автоматически'), '. ', T('Или попробуйте зайти позже')) _class = 'col sel_xcurrNRT' else: memo = CAT( SPAN(' ', T('по курсу'), (' %8g' % rr['price']), ' ', T(' нужно оплатить около')), ' ', B(SPAN(_class='pay_vol')), ' ', rr['name']) _class = 'col sel_xcurrRTE' # пусть клики все равно будут onclick = ''' //$(this).css('z-index','0'); $('#tag%s').hide('fast'); $('#cvr%s').css('display','block'); // .css('z-index','10'); ajax('%s',['vol','acc','dealer'], 'tag%s'); ''' % (id, id, URL('get', args=[id]), id) #print rr h += DIV( DIV( DIV( #T('Есть'), ': ', rr['bal_out'],' ', IMG(_src=URL('static', 'images/currs/' + rr['abbrev'] + '.png'), _width=60, __height=36, _class='lst_icon', _id='lst_icon' + id), SPAN(rr['price'], _class='price hidden'), SPAN(rr['abbrev'], _class='abbrev hidden'), memo, '. ', SPAN(T('Всего было продаж:'), rr['used'], _class='small'), _onclick=onclick if onclick else '', _id='btn%s' % id, _class=_class, ), DIV(TAG.i(_class='fa fa-spin fa-spinner right wait1'), _id='cvr%s' % id, _class='col sel_xcurrCVR'), _class='row sel_xcurr'), _class='container') h += DIV(_id='tag%s' % id, _class='blue-c') xcurrs_h = h _, reclams = recl.get(db, 2) #response.top_line = None return dict( title=title, subtitle=subtitle, acc=acc, inp_dealers=inp_dealers, limit_bal=limit_bal, # это для ограничения в поле ввода и пересчета в нем MIN=db_common.gMIN(deal, None), MAX=int(deal.MAX_pay or 2555), vars=vars, xcurrs_h=xcurrs_h, reclams=reclams)
def index(): #if not IS_LOCAL: # redirect(URL('ipay','more','to_pay',args=request.args)) #common.page_stats(db, response['view']) if len(request.args) == 0: redirect(URL('deal', 'index')) deal_id = request.args(0) if len(deal_id) > 10 or not deal_id.isdigit(): redirect(URL('deal', 'index')) deal = db.deals[deal_id] if not deal: redirect(URL('deal', 'index')) deal.update_record(wants=deal.wants + 1) if not deal.used: redirect(URL('deal', 'index')) response.title = 'Платежи оплата биткоинами криптовалютой услуги %s' % deal.name client = db(db.clients.deal_id == deal.id).select().first() if client: # to_shop/index/2?order=12&user=eytu #redirect(URL('to_shop','index',args=[client.id], vars=request.vars)) raise HTTP(200, T('ERROR: it is client "%s"') % client.email) vol = (deal.MIN_pay or 100) * 2 dealer, dealer_acc, dealer_deal = ed_common.select_ed_acc( db, deal, ecurr_out, vol, True) if not dealer: raise HTTP(200, T('ERROR: not found dealer for "%s"') % deal.name) dealer_acc = ed_common.sel_acc_max_for_balance(db, dealer, ecurr_out, vol, unlim=True) #print dealer.info dealer_info = dealer.info and json.loads(dealer.info) shops_url = dealer_info['shops_url'] #MAX = deal.MAX_pay or 777 MIN = db_common.gMIN(deal, dealer) if not response.vars: response.vars = {} if deal.url and len(deal.url) > 0: shops_url = deal.url else: shops_url = dealer_info['shops_url'] + "%s" % dealer_deal.scid deal_img = make_img(deal, dealer_info, shops_url) title=XML(XML(T("Задайте параметры платежа для ") + '<BR>') + XML( deal_img or '' ) + ' ' +\ XML( A(deal.name, _href=shops_url, _target="_blank"))) title = XML( XML(deal_img or '') + ' <b>' + deal.name + '</b> ' + 'оплата биткоинами и криптовалютой') deal_cat = db.deals_cat[deal.cat_id] subtitle = XML( 'Другие услуги вида %s' % A(deal_cat.name, _href=URL('deal', 'index', args=[deal_cat.id]))) response.vars['s_url'] = XML(A(T('тут'), _href=shops_url, _target="_blank")) response.vars['shops_url'] = shops_url acc_pars = None if dealer_deal.grab_form: # тут тырим форму с сайта яндекса напрямую #scid, name, img, form = ed_form.load_YD(...) response.vars['grab_form'] = ed_form.load_YD(shops_url, URL('more', 'pay')) #print response.vars['grab_form'] else: acc_pars = [] ajax_vars = [] if dealer_deal.p2p: if deal.template_ == '--': pay_pars_deal = [] pay_pars_dealer = [] else: pay_pars_deal = ed_common.PAY_PARS_P2P pay_pars_dealer = ed_YD.PAY_PARS_P2P else: pay_pars_deal = deal.template_ and json.loads( deal.template_) or ed_common.PAY_PARS pay_pars_dealer = dealer_deal.template_ and json.loads( dealer_deal.template_) or ed_YD.PAY_PARS #print dealer_deal.template_, json.loads(dealer_deal.template_) #print dealer_deal #print pay_pars_deal #print pay_pars_dealer calcs = dealer_deal.calcs_ or {} for p in pay_pars_deal: read_only = None if 'calc' in p: continue if type(p) == type([]): continue #print p p_n_name = p.get('n') p_t = p_n_name and pay_pars_dealer.get(p_n_name) def_val = subsel_parent = None add_pars = {} calc2 = calcs.get(p_n_name) #print 'calc2', calc2 if calc2 != None and type(calc2) not in [ type(dict()), type([]), type({}) ]: # тут простое вычисление - прпустим continue if calc2: # это поле вычисляется автоматически # или есть зависимые от него поля subsel_name = calc2.get('subsel') subsel_parent = calc2.get('parent') if subsel_name: # это поле главное и у него есть подчиненное поле add_pars[ '_onChange'] = 'ajax("../subsel_callback", ["%s", "deal_id", "dealer_deal_id"], "%s");' % ( p_n_name, 'div_' + subsel_name) #_onChange="ajax('selsub2_callback', ['%s'], '%s');" % (sel1_name, sel2_div_name), if subsel_parent: add_pars['_disabled'] = 'disabled' if not subsel_name and not subsel_parent: # это поле обычное вычисляемое -- пропустим continue # если параметры передаются как параметры после ? def_val = request.vars.get(p_n_name) if def_val: read_only = True sel = p_t and p_t.get('sel') lab_ = p.get('l') tip_ = p.get('m') if sel: lab_ = LABEL(lab_ and T(lab_) or p_n_name) opt = [] for item in sel: #for (v, l) in item.iteritems(): opt.append(OPTION(item['label'], _value=item['value'])) #print opt inp = SELECT(opt, _name=p_n_name, _id=p_n_name, _type="text", _class='field blue-c', **add_pars) elif p_n_name: lab_ = LABEL(lab_ and T(lab_) or p_n_name) # если имя поля задано то поле покажем inp = INPUT( _name=p_n_name, _id=p_n_name, # тут имя поля указываем для диллера _placeholder=p.get('ph', ''), _value=def_val or session.vars and session.vars.get(p.get('n')) or p.get('v'), _readonly=read_only, #_size=('ln' in p and p['ln'] or 5)+1, _onblur='ln' in p and 'get_acc(this, %s, "%s");' % (p['ln'] or 0, 'символов %s'), requires=IS_NOT_EMPTY(), _class='field blue-c', **add_pars) elif lab_: acc_pars.append({ 'l': HR(_align="center", _width="auto", _size="3", _color="#ffffff"), 'i': '' }) ##lab_ = LABEL(lab_ and T(lab_) or '') lab_ = LABEL(H5(T(lab_))) inp = '' elif tip_: lab_ = LABEL( H4( TAG.i(_class='fa fa-exclamation-triangle', _style='color:yellow; font-size:1.5em;'), ' ', tip_)) inp = '' if subsel_parent: # это подчиненное поле - результат аякса # то вложем его внутрь inp = DIV(inp, _id='div_' + p_n_name) item = { 'l': lab_, 'i': inp, } info = p.get('i') if info: item['l'] += '*' item['m'] = XML(info) acc_pars.append(item) if p_n_name: ## для полей АЯКСа ## причем надо от УНИКОДЕ строки избавиться - поэтому % _sss = p_n_name.encode('ascii') ##print _sss, type(_sss) ajax_vars.append(_sss) #print i_d, request.args #if False and len(request.args)>i_d+1: # # цена тоже задана # volume_out = float(request.args[i_d+1]) # response.vars['vol_readonly'] = True response.vars['e_bal'], MAX = get_e_bal(deal, dealer, dealer_acc) volume_out = 377 if request.vars: #print request.vars if 'mess' in request.vars: response.vars['shop_mess'] = request.vars['mess'] if 'sum' in request.vars: volume_out = test_vol(request.vars['sum'], MIN, MAX) response.vars['vol_readonly'] = True session.vol = volume_out response.vars['deal_id'] = deal_id response.vars['dealer_deal_id'] = dealer_deal.id response.vars['MIN'] = MIN response.vars['MAX'] = MAX response.vars['volume_out'] = volume_out response.vars['not_gifted'] = deal.not_gifted # except Exception as e: # db.deal_errs.insert( deal_id = deal.id, dealer_id = dealer.id, err = '%s' % e) # поля для передачи по запросу АЯКСа ajax_vars.append('vol') ajax_vars = '%s' % ajax_vars h = CAT() for rr in db_client.get_xcurrs_for_deal(db, 0, curr_out, deal, dealer): #print row id = '%s' % rr['id'] disabled = rr['expired'] #bgc = 'gold' if disabled: memo = CAT( T('Курс не найден'), ', ', T('Когда курс будет получен платеж пройдёт автоматически'), '. ', T('Или попробуйте зайти позже')) _class = 'col sel_xcurrNRT' else: memo = CAT( SPAN(' ', T('по курсу'), (' %8g' % rr['price']), ' ', T('нужно оплатить примерно')), ' ', B(SPAN(_class='pay_vol')), ' ', rr['name']) _class = 'col sel_xcurrRTE' # пусть клики все равно будут onclick = ''' //$(this).css('z-index','0'); $('#tag%s').hide('fast'); $('#cvr%s').css('display','block'); // .css('z-index','10'); ajax('%s',%s,'tag%s'); ''' % (id, id, URL('get', args=[id, deal_id ]), ajax_vars, id) #print row h += DIV( DIV( DIV( #T('Есть'), ': ', rr['bal_out'],' ', IMG(_src=URL('static', 'images/currs/' + rr['abbrev'] + '.png'), _width=60, __height=36, _class='lst_icon', _id='lst_icon' + id), SPAN(rr['price'], _class='price hidden'), SPAN(rr['abbrev'], _class='abbrev hidden'), memo, '. ', SPAN(T('Всего было оплат:'), rr['used'], _class='small'), _onclick=onclick if onclick else '', #_style=style, _id='btn%s' % id, _class=_class, ), DIV(TAG.i(_class='fa fa-spin fa-spinner right wait1'), _id='cvr%s' % id, _class='col sel_xcurrCVR'), _class='row sel_xcurr'), _class='container') h += DIV(_id='tag%s' % id, _class='blue-c') xcurrs_h = h #response.top_line = None return dict( title=title, subtitle=subtitle, deal_name=deal.name, deal_info=deal.show_text, deal_icon=make_img(deal, dealer_info), MIN=MIN, MAX=MAX, #reclams=reclams, pars=acc_pars, xcurrs_h=xcurrs_h)
def index(): response.title = T("Перевод криптоденег в электронные деньги") if session.visitor_date_log: d_diff = datetime.datetime.today() - session.visitor_date_log if d_diff.seconds > 1200: session.visitor_date_log = None session.visitor_wallet = '-' h = CAT() for ecurr_out in db(db.ecurrs).select(): curr = db.currs[ecurr_out.curr_id] hh = CAT( H3( IMG(_src=URL('default', 'download', args=['db', curr.icon]), _width=42, _height=42, _class='lst_icon', _id='lst_icon%s' % id), curr.name, ' ', INPUT(_name=curr.abbrev, _value='123'), )) for r in db((db.dealers_accs.ecurr_id == ecurr_out.id) & (db.dealers_accs.used == True) & (db.dealers.id == db.dealers_accs.dealer_id) & (db.dealers.used == True) & (db.dealer_deals.dealer_id == db.dealers.id) & (db.dealer_deals.deal_id == deal.id)).select( groupby=db.dealers_accs.dealer_id): min = 10 dealer_acc = ed_common.sel_acc_max(db, r.dealers, ecurr_out, 0, True) bal, max = get_e_bal(deal, r.dealers, dealer_acc) _id = r.dealers.id tag = 'tag%s' % _id url = URL('to_wallet2', 'go2', args=[curr.id, _id]) st = 'display: table-cell; vertical-align: middle;' fee = curr.fee_out tax = r.dealer_deals.tax + curr.tax_out hh += DIV( u( r.dealers.name, #URL('to_wallet2', 'go1', args=[curr.id, r.dealers.id]), None, 'col-sm-5', onclick="$('#%s').text('%s');ajax('%s', ['%s'], '%s')" % (tag, T('Working...'), url, curr.abbrev, tag)), DIV(T('Min / Max'), ': ', min, ' / ', max, BR(), T('Is:'), ' ', bal, BR(), T('Fee & Tax'), ' - ', fee, ' & ', tax, '%', _class='btn_mc col-sm-5'), _class='row') hh += DIV(_id=tag, _class='row') h += hh return dict(h=h) if len(dd) == 0: response.subtitle = T("ОШИБКА: Нет подходящих работников!") return dict(vars=None) ed_sel = SELECT(dd, value='1', _name='dealer') volume_out = float(100) pairs = db_client.get_xcurrs_for_deal(db, volume_out, curr_out, deal, None) vars = { 'phone': session.visitor_wallet or None, #'mess' = request.args, 'MIN': deal.MIN_pay or 3, 'MAX': deal.MAX_pay or 1333, 'ed_sel': ed_sel, 'last_visit': session.visitor_date_log } wallet = None if request.vars: vn = 'sum' if vn in request.vars: vars[vn] = request.vars[vn] vn = 'wallet' if vn in request.vars: wallet = request.vars[vn] vars[vn] = wallet if not ed_name: response.subtitle = T( "ОШИБКА: Не задано имя системы электронных денег для данного кошелька %s!" ) % wallet return dict(vars=None) vn = 'mess' if 'mess' in request.vars: vars[vn] = request.vars[vn] title1 = wallet and T('Оплата на %s') % ed_name or T('Ваш кошелек') wallet = wallet or session.visitor_wallet or None if wallet: response.title = title1 + ':' + wallet[:3] + '****' + wallet[-3:] #print request.args if len(request.args) > 0: response.flash = ERRS[request.args[0]] _, reclams = recl.get(db, 2) # тут балансы у разных диллеров vars['e_bal'] = get_e_bal(deal, dealer, dealer_acc) return dict(reclams=reclams, vars=vars, xcurrs_list=pairs)
def sel(): addr_out = None h = CAT(SCRIPT(''' $('.btn_sel').removeClass('disabled'); $('html, body').animate( { scrollTop: $('#sel').offset().top - $('#aside1').height() }, 500 ); ''')) try: curr_out_id = request.args(0) curr_out_id = curr_out_id and int(curr_out_id) curr_out = db.currs[ curr_out_id ] curr_out_name = curr_out.name except: return h+'error curr_id' deal_name = 'to COIN' deal = db(db.deals.name == deal_name).select().first() if deal: deal_id = deal.id else: curr_rub = db(db.currs.abbrev=='RUB').select().first() deal_id = db.deals.insert(name = deal_name, name2 = deal_name, fee_curr_id = curr_rub.id, used = False, fee = 1, MIN_pay = 0, MAX_pay = 0) deal = db.deals[ deal_id ] from gluon.storage import Storage vars = Storage() if request.vars: vn = 'vol' if vn in request.vars: vars[vn] = test_vol(request.vars[vn]) vn = 'addr' if vn in request.vars: addr_out = request.vars[vn] vars[vn] = addr_out dealer = None for rr in db_client.get_xcurrs_for_deal(db, 0, curr_out, deal, dealer): if rr['id'] == curr_out.id: continue #print rr id = '%s' % rr['id'] disabled = rr['expired'] if disabled: memo = CAT(T('Курс не найден'),', ', T('Когда курс будет получен платеж пройдёт автоматически'), '. ', T('Или попробуйте зайти позже')) _class = 'col sel_xcurrNRT' else: memo = CAT(SPAN(' ', T('по курсу'), (' %8g' % rr['price']), ' ', T(' нужно оплатить около')),' ', B(SPAN(_class='pay_vol')), ' ', rr['name']) _class = 'col sel_xcurrRTE' # пусть клики все равно будут onclick=''' //$(this).css('z-index','0'); $('#tag%s').hide('fast'); $('#cvr%s').css('display','block'); // .css('z-index','10'); ajax('%s',['vol','addr','curr_out'], 'tag%s'); ''' % (id, id, URL('get', args=[deal_id, id]), id) #print rr h += DIV( DIV( DIV( #T('Есть'), ': ', rr['bal_out'],' ', IMG(_src=URL('static','images/currs/' + rr['abbrev'] + '.png'), _width=60, __height=36, _class='lst_icon', _id='lst_icon' + id), SPAN(rr['price'], _class='price hidden'), SPAN(rr['abbrev'], _class='abbrev hidden'), memo, '. ', SPAN(T('Всего было продаж:'), rr['used'], _class='small'), _onclick=onclick if onclick else '', _id='btn%s' % id, _class=_class, ), DIV(TAG.i(_class='fa fa-spin fa-spinner right wait1'), _id='cvr%s' % id, _class='col sel_xcurrCVR'), _class='row sel_xcurr'), _class='container') h += DIV(_id='tag%s' % id, _class='blue-c') _, reclams = recl.get(db,2) #response.top_line = None return dict(curr_out_id = curr_out_id, addr=addr_out, img_url = URL('static','images/currs/' + curr_out.abbrev + '.png'), curr_out_name = curr_out_name, vars=vars, xcurrs_h=h, reclams=reclams)
def index(): #common.page_stats(db, response['view']) response.title = T("Пополнить биткоинами телефон") response.subtitle = T('Оплатить телефон биткоинами') if False and session.date_log: d_diff = datetime.datetime.today() - session.date_log if d_diff.seconds > 1200: session.date_log = None session.toPhone = None #print request.vars if request.vars: #print 'reset' vol = test_vol(request.vars.sum) session.vol = vol if vol else None phone = request.vars.phone phone = phone and valid_phone(phone) print phone if phone: session.toPhone = phone else: phone = session.toPhone ##print 'phone, session.phone:', phone, session.toPhone if phone and len(phone) == 10: phone = session.toPhone = '7' + phone title = phone and CAT( T('Ваш телефон') + ':' + phone[:3] + '***' + phone[-3:] + ' ', SPAN(response.title, _class='small')) or response.title subtitle = session.date_log and (T('Дата посещения %s') % session.date_log) or response.subtitle try: session.date_log = request.now except: print 'to_phone session error .date_log:', type( request.now), request.now h = CAT() hh = CAT(H1(response.title), response.subtitle and H3(response.subtitle) or '') h += DIV(hh, _class='container') phone_deal7 = phone if phone and len(phone) == 11 and phone[0] == '7': phone_deal7 = phone[1:] h = CAT() for rr in db_client.get_xcurrs_for_deal(db, 0, curr_out, deal, dealer): #print row id = '%s' % rr['id'] disabled = rr['expired'] #bgc = 'gold' if disabled: memo = CAT( T('Курс не найден'), ', ', T('Когда курс будет получен платеж пройдёт автоматически'), '. ', T('Или попробуйте зайти позже')) _class = 'col sel_xcurrNRT' else: memo = CAT( SPAN(' ', T('по курсу'), (' %8g' % rr['price']), ' ', T('нужно оплатить примерно')), ' ', B(SPAN(_class='pay_vol')), ' ', rr['name']) _class = 'col sel_xcurrRTE' # пусть клики все равно будут onclick = ''' //$(this).css('z-index','0'); $('#tag%s').hide('fast'); $('#cvr%s').css('display','block'); // .css('z-index','10'); ajax('%s',['vol', 'phone', 'gift_cod'], 'tag%s'); ''' % (id, id, URL('get', args=[id]), id) #print row h += DIV( DIV( DIV( #T('Есть'), ': ', rr['bal_out'],' ', IMG(_src=URL('static', 'images/currs/' + rr['abbrev'] + '.png'), _width=60, __height=36, _class='lst_icon', _id='lst_icon' + id), SPAN(rr['price'], _class='price hidden'), SPAN(rr['abbrev'], _class='abbrev hidden'), memo, '. ', SPAN(T('Всего было оплат:'), rr['used'], _class='small'), _onclick=onclick if onclick else '', #_style=style, _id='btn%s' % id, _class=_class, ), DIV(TAG.i(_class='fa fa-spin fa-spinner right wait1'), _id='cvr%s' % id, _class='col sel_xcurrCVR'), _class='row sel_xcurr'), _class='container') h += DIV(_id='tag%s' % id, _class='blue-c') xcurrs_h = h import recl _, reclams = recl.get(db, 2) ''' response.top_line = DIV( TAG.center(tl), _id="top_line") ''' response.top_line = None return dict(title=title, subtitle=subtitle, MIN=MIN, MAX=MAX, phone_deal7=phone_deal7, free_bal=free_bal, xcurrs_h=xcurrs_h, reclams=reclams)