Compare commits

..

No commits in common. "d40dd2c81d18de47e4a6791a01d92141a2b18aa4" and "12ce9b1906643d0163000cfc4ab6fa045c532817" have entirely different histories.

6 changed files with 29 additions and 53 deletions

View File

@ -19,7 +19,7 @@ services:
condition: any condition: any
placement: placement:
constraints: constraints:
- node.role == worker # - node.role == worker
- node.labels.zone == ru - node.labels.zone == ru
update_config: update_config:
parallelism: 1 parallelism: 1
@ -41,7 +41,7 @@ services:
condition: any condition: any
placement: placement:
constraints: constraints:
- node.role == worker # - node.role == worker
- node.labels.zone == ru - node.labels.zone == ru
update_config: update_config:
parallelism: 1 parallelism: 1
@ -63,7 +63,7 @@ services:
condition: any condition: any
placement: placement:
constraints: constraints:
- node.role == worker # - node.role == worker
- node.labels.zone == ru - node.labels.zone == ru
update_config: update_config:
parallelism: 1 parallelism: 1
@ -87,7 +87,7 @@ services:
condition: any condition: any
placement: placement:
constraints: constraints:
- node.role == worker # - node.role == worker
- node.labels.zone == ru - node.labels.zone == ru
update_config: update_config:
parallelism: 1 parallelism: 1

View File

@ -3,7 +3,9 @@ import os
import telebot import telebot
from telebot.types import Message from telebot.types import Message
import settings
from helpers.mongo import mongo from helpers.mongo import mongo
from helpers.sprint_platform import platform
bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN")) bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN"))
@ -16,5 +18,7 @@ def on_start(message: Message):
@bot.message_handler() @bot.message_handler()
def do_action(message: Message): def do_action(message: Message):
if settings.STAGE == 'development' and not platform.is_staff(telegram_id=message.chat.id):
return
from helpers.answer import Answer from helpers.answer import Answer
Answer(message).process() Answer(message).process()

View File

@ -1,5 +1,4 @@
import datetime import datetime
import logging
from random import choice from random import choice
from telebot.types import Message, ReplyKeyboardRemove from telebot.types import Message, ReplyKeyboardRemove
@ -14,15 +13,6 @@ from helpers.sprint_platform import platform
from helpers.ruz import ruz from helpers.ruz import ruz
class User:
def __init__(self, telegram_id):
self.telegram_id = telegram_id
@property
def platform_staff(self):
return platform.is_staff(telegram_id=self.telegram_id)
class Answer: class Answer:
user: dict user: dict
@ -30,6 +20,7 @@ class Answer:
message_text: str message_text: str
def __init__(self, message: Message): def __init__(self, message: Message):
self.message = message
self.message = message self.message = message
self.message_text = message.text or message.caption or "" self.message_text = message.text or message.caption or ""
user = mongo.users_collection.find_one({"chat_id": message.chat.id}) user = mongo.users_collection.find_one({"chat_id": message.chat.id})
@ -52,14 +43,6 @@ class Answer:
self.user = user self.user = user
def process(self): def process(self):
user = User(self.user['chat_id'])
try:
bot_enabled_exp = platform.get_experiment('bot_enabled')
if not bot_enabled_exp['enabled'] or not eval(bot_enabled_exp['condition']):
return
except Exception as exc:
logging.info(exc)
return
getattr( getattr(
self, self,
"handle_state_" + self.user['state'], "handle_state_" + self.user['state'],
@ -162,21 +145,6 @@ class Answer:
self.set_state("reset") self.set_state("reset")
return return
elif self.message_text == "Подключение Алисы": elif self.message_text == "Подключение Алисы":
alice_exp = platform.get_experiment('alice')
telegram_id = self.user['chat_id']
try:
user = User(telegram_id)
alice_exp_enabled = alice_exp['enabled'] and eval(alice_exp['condition'])
except Exception as exc:
logging.info(exc)
alice_exp_enabled = False
if not alice_exp_enabled:
self.send_message(
'Эта функция еще не работает!',
reply_markup=main_keyboard(self.user['chat_id']),
parse_mode='Markdown'
)
return
if self.user.get('yandex_id', None) is None: if self.user.get('yandex_id', None) is None:
words = platform.get_config('words') words = platform.get_config('words')
while True: while True:

View File

@ -13,7 +13,12 @@ def main_keyboard(telegram_id):
kb.row("Ежедневные уведомления") kb.row("Ежедневные уведомления")
alice_exp = platform.get_experiment('alice') alice_exp = platform.get_experiment('alice')
try: try:
from helpers.answer import User class User:
def __init__(self, telegram_id):
self.telegram_id = telegram_id
@property
def platform_staff(self):
return platform.is_staff(telegram_id=self.telegram_id)
user = User(telegram_id) user = User(telegram_id)
alice_exp_enabled = alice_exp['enabled'] and eval(alice_exp['condition']) alice_exp_enabled = alice_exp['enabled'] and eval(alice_exp['condition'])
except Exception as exc: except Exception as exc:

View File

@ -39,7 +39,7 @@ class RUZ:
del data['stream_links'] del data['stream_links']
def get_schedule(self, user: dict, begin_date: datetime.datetime): def get_schedule(self, user: dict, begin_date: datetime.datetime):
start_date_str = begin_date.strftime("%Y-%m-%d") start_date_str = begin_date.strftime("%Y.%m.%d")
search_str = settings.RUZ_API + f"v3/ruz/lessons?start={start_date_str}&offset=30&email={user['email']}" search_str = settings.RUZ_API + f"v3/ruz/lessons?start={start_date_str}&offset=30&email={user['email']}"
try: try:
data = get(search_str) data = get(search_str)

View File

@ -22,7 +22,6 @@ class PlatformClient:
self.fetch_url = urllib.parse.urljoin(self.endpoint, 'fetch') self.fetch_url = urllib.parse.urljoin(self.endpoint, 'fetch')
self.config_storage = {} self.config_storage = {}
self.experiment_storage = {} self.experiment_storage = {}
self.staff_storage = {}
self.poll_data() self.poll_data()
if need_poll: if need_poll:
self.poll_data_in_thread() self.poll_data_in_thread()
@ -33,7 +32,7 @@ class PlatformClient:
sleep(30) sleep(30)
self.fetch() self.fetch()
Thread(target=inner, daemon=True).start() Thread(target=inner).start()
def poll_data(self): def poll_data(self):
self.fetch(with_exception=True) self.fetch(with_exception=True)
@ -64,10 +63,6 @@ class PlatformClient:
local_platform = json.loads(open('local_platform.json', 'r').read()) local_platform = json.loads(open('local_platform.json', 'r').read())
self.config_storage = local_platform['configs'] self.config_storage = local_platform['configs']
self.experiment_storage = local_platform['experiments'] self.experiment_storage = local_platform['experiments']
self.staff_storage = {
key: set(value)
for key, value in local_platform['platform_staff'].items()
}
return return
response_data = self.request_with_retries(self.fetch_url, { response_data = self.request_with_retries(self.fetch_url, {
'project': self.app_name, 'project': self.app_name,
@ -75,10 +70,6 @@ class PlatformClient:
}, with_exception) }, with_exception)
self.config_storage = response_data['configs'] self.config_storage = response_data['configs']
self.experiment_storage = response_data['experiments'] self.experiment_storage = response_data['experiments']
self.staff_storage = {
key: set(value)
for key, value in response_data['platform_staff'].items()
}
def fetch_configs(self, with_exception=False): def fetch_configs(self, with_exception=False):
if self.stage == 'local': if self.stage == 'local':
@ -107,10 +98,18 @@ class PlatformClient:
self.experiment_storage[experiment] = response_data self.experiment_storage[experiment] = response_data
def is_staff(self, **kwargs): def is_staff(self, **kwargs):
for key, value in kwargs.items(): if self.stage == 'local':
if value in self.staff_storage[key]: local_platform = json.loads(open('local_platform.json', 'r').read())
return True local_staff = local_platform['staff']
return False for element in local_staff:
for key, value in kwargs.items():
if element[key] == value:
return True
return False
response_data = self.request_with_retries(self.staff_url, kwargs)
if response_data is None:
return False
return response_data['is_staff']
def get_config(self, name): def get_config(self, name):
return self.config_storage[name] return self.config_storage[name]