Придумал безопасный способ показа виджета пользователем. Пользовать переходит на уникальный url из личного кабинета, который его идентифицирует в БД. Веб страница обращается к прокси-серверу, он: 1. перенаправляет запросы к ресурсам в графану 2. запросы к БД переваривает и выдает только с почтой юзера
Придумал, как ограничить отображение только устройств пользователя, однако этот способ не безопасный.
В dashboard variables:
email (тип query) source (influxDB) SHOW TAG VALUES FROM waterius WITH KEY=email where email=${__user.email:sqlstring} Отобразит только электронную почту залогиненого в Grafana пользователя.
Вторая переменная token прежняя: SHOW TAG VALUES FROM waterius WITH KEY=token WHERE "email" =~ /^email/
Создаем пользователя. Пусть его почта demo@demo.ru При авторизации в дашборде будет показываться только demo@demo.ru.
К сожалению, данный способ нельзя публиковать, т.к. от браузера идут сырые запросы к БД и любой пользователь сможет запросить данные чужого.
Если знаете, как можно дать доступ к Grafana так, чтобы пользователь мог запрашивать из БД только свои данные, напишите.
Да, уже померили, спасибо. До ассемблера не дошли. Но перешли на analogread для совместимости с намуром. Следущей оптимизацией может быть запоминание типа счетчика, чтобы если он геркон, то digitalread, если намур — analogread делать. Правда, не факт, что в 4кб уложимся.
analogread в tinycore оптимальный, digitalread нет, поэтому там битами поработал.
Простите, я правильно понял, что вуз размещает на официальном сайте литературу по учебе, просмотр бесплатный, а скачивание платное?! о_0
А сколько рублей, если не секрет, за методичку по предмету?
Вот так я считаю комиссию Алиэкспресса и комиссию партнерской программы:
Цикл по каждому товару в заказе:
for dto in data['child_order_list']['global_aeop_tp_child_order_dto']:
g = Good()
g.name = self.parse_name_from_attr(dto)
g.sum = float(dto['init_order_amt']['amount'])
g.quantity = int(dto['product_count'])
g.price = float(dto['product_price']['amount'])
if 'afflicate_fee_rate' in dto:
# партнерская комиссия, рублей
g.affiliate_commission = g.price * g.quantity * float(dto['afflicate_fee_rate'])
if 'escrow_fee_rate' in dto:
# комиссия Алиэкспресса
g.ali_commission = g.price * g.quantity * float(dto['escrow_fee_rate'])
if 'refund_info' in dto and dto['refund_info']:
amt = dto['refund_info']['refund_cash_amt']
# если был возврат товара
g.refund = 1.0 * amt['cent'] / amt['cent_factor']
p.s. да, я знаю, что лучше в копейках считать
А вот здесь парсинг цвета товара:
def parse_name_from_attr(self, dto):
attr = json.loads(dto['product_attributes'])
if 'sku' in attr: # для тестов
for a in attr['sku']:
if 'selfDefineValue' in a:
return a['selfDefineValue']
#if attr['pName'] == 'Color':
# if attr['pValue'] == 'White':
# elif attr['pValue'] == 'Blue':
# elif attr['pValue'] == 'YELLOW':
for a in attr['sku']:
if 'pName' in a and a['pName'] == 'Color':
if a['pValue'] == 'Black':
return 'Ватериус'
Кажется у меня что-то работает «не так», раз я не обновляю сессионный ключ уже полгода…
Я описал его получение у себя в ЖЖ:
sessionkey — Ключ, который мы должны получить после авторизации. Есть 2 пути его получения: авторизация через OAuth 2.0 или «браузер». Т.к. пока есть цель написать локальный Питон скрипт без сервера, выберем 2й вариант.
Откроем в браузере oauth.aliexpress.com/authorize?response_type=token&client_id=111111111&state=1212&view=web&sp=ae, где 111111111 — ваш appKey
Соглашаемся с Соглашением и видим access_token. Его и пишем в sessionkey.
Китайский SDK еще с 3м Питоном не работал, я переписал ядро. По ссылке скрипт для получения заказов.
Вот так, например, я записываю трек номера Почты России в заказы на Алиэкспресс:
def send_track_id(order_id, track_id):
"""
Отправка номера отправления в заказ на Алиэкспресс
:param order_id: номер заказа
:param track_id: номер отправления
:return:
"""
req = api.AliexpressSolutionOrderFulfillRequest(url, port)
req.set_app_info(appinfo(ALIEXPRESS_APPKEY, ALIEXPRESS_SECRET))
#req.description = 'Почта России в регионы'
req.service_name = 'RUSSIAN_POST_RU_PROVINCE_RUB' #'Почта России в регионы'
req.tracking_website = 'https://www.pochta.ru/tracking'
req.out_ref = str(order_id)
req.send_type = 'all'
req.logistics_no = str(track_id)
try:
resp = req.getResponse(ALIEXPRESS_SESSION_KEY)
if resp['aliexpress_solution_order_fulfill_response']['result']['result_success']:
return True
except TopException as err:
if err.errorcode == 15:
if '该交易订单已填写发货通知' in err.submsg:
raise Exception('Трек номер уже заполнен')
raise err
Всё так.
Добавлю: НАМУР — это 2-х проводный интерфейс. Там параллельно и последовательно стоит по резистору. 4 провода производители счётчиков сделали, чтобы было оба интерфейса сразу.
Я не знаю, может это компилятор оптимизирует, но деление на 64 можно записать как
delay >> 5
Я продлил время жизни гирлянды припаяв резистор последовательно...
Киира, неимоверно крута! Поздравляю со статьёй! Очень полезно =)
Спасибо вам!
Спасибо большое!
А вы чем занимаетесь?
Оказалось, что это задача сопоставима с регистрацией на Wildberries сложности...
Придумал безопасный способ показа виджета пользователем. Пользовать переходит на уникальный url из личного кабинета, который его идентифицирует в БД.
Веб страница обращается к прокси-серверу, он:
1. перенаправляет запросы к ресурсам в графану
2. запросы к БД переваривает и выдает только с почтой юзера
Придумал, как ограничить отображение только устройств пользователя, однако этот способ не безопасный.
В dashboard variables:
email (тип query)
source (influxDB)
SHOW TAG VALUES FROM waterius WITH KEY=email where email=${__user.email:sqlstring}
Отобразит только электронную почту залогиненого в Grafana пользователя.
Вторая переменная token прежняя:
SHOW TAG VALUES FROM waterius WITH KEY=token WHERE "email" =~ /^email/
Создаем пользователя. Пусть его почта demo@demo.ru
При авторизации в дашборде будет показываться только demo@demo.ru.
К сожалению, данный способ нельзя публиковать, т.к. от браузера идут сырые запросы к БД и любой пользователь сможет запросить данные чужого.
Если знаете, как можно дать доступ к Grafana так, чтобы пользователь мог запрашивать из БД только свои данные, напишите.
Спасибо! Ох уж эти размерности =).
Офигенно! Жду продолжения!
p.s. То чувство, когда родной Политехнический музей настолько музей, что даже шкафы для экспонатов стали экспонатами =)
analogread в tinycore оптимальный, digitalread нет, поэтому там битами поработал.
А сколько рублей, если не секрет, за методичку по предмету?
Цикл по каждому товару в заказе:
p.s. да, я знаю, что лучше в копейках считать
А вот здесь парсинг цвета товара:
Я описал его получение у себя в ЖЖ:
Китайский SDK еще с 3м Питоном не работал, я переписал ядро.
По ссылке скрипт для получения заказов.
Вот так, например, я записываю трек номера Почты России в заказы на Алиэкспресс:
Добавлю: НАМУР — это 2-х проводный интерфейс. Там параллельно и последовательно стоит по резистору. 4 провода производители счётчиков сделали, чтобы было оба интерфейса сразу.
Спасибо! Буду благодарен за репост в соцсетях :)