async def await_cmd(message: types.message): check_id(message.from_user) await message.chat.do(types.ChatActions.TYPING) with Session as session: user = session.query(User).filter_by(id=message.from_user.id).first() logger.info(f"{message.from_user.username} do edt awaited command") url = str() if message.photo: file_path = await bot.get_file(message.photo[0].file_id) file_url = f"https://api.telegram.org/file/bot{API_TOKEN}/{file_path['file_path']}" qr = decode(Image.open(requests.get(file_url, stream=True).raw)) if qr: url = str(qr[0].data) elif message.text: msg_url = re_url.findall(message.text) if msg_url: url = msg_url[0] if url: resources = url[url.find("resources") + 10:][:4] elif message.text: resources = message.text try: string_to_container(requests.get(Calendar("", int(resources)).url).text) except (ParseError, ConnectionError, InvalidSchema, MissingSchema, ValueError, UnboundLocalError): msg = lang(user, "setedt_err_res") else: user.resources = int(resources) msg = lang(user, "setedt") user.await_cmd = str() session.commit() await message.reply(msg, parse_mode=ParseMode.MARKDOWN, reply_markup=key)
def test_gehol(self): # convert ics to utf8: recode l9..utf8 *.ics cal = os.path.join(os.path.dirname(__file__), "gehol", "BA1.ics") with open(cal) as ics: ics = ics.read() ics = string_to_container(ics)[0] self.assertTrue(ics)
def test_parse(self): content = string_to_container(cal5) self.assertEqual(1, len(content)) cal = content.pop() self.assertEqual('VCALENDAR', cal.name) self.assertTrue(isinstance(cal, Container)) self.assertEqual('VERSION', cal[0].name) self.assertEqual('2.0', cal[0].value) self.assertEqual(cal5.strip(), str(cal).strip())
def test_parse(self): content = string_to_container(cal5) self.assertEqual(1, len(content)) cal = content.pop() self.assertEqual('VCALENDAR', cal.name) self.assertTrue(isinstance(cal, Container)) self.assertEqual('VERSION', cal[0].name) self.assertEqual('2.0', cal[0].value) self.assertEqual(cal5.strip().splitlines(), str(cal).strip().splitlines())
def test_parse(self): content = string_to_container(empty_calendar_with_version) self.assertEqual(1, len(content)) cal = content.pop() self.assertEqual('VCALENDAR', cal.name) self.assertTrue(isinstance(cal, Container)) self.assertEqual('VERSION', cal[0].name) self.assertEqual('2.0', cal[0].value) self.assertEqual(empty_calendar_with_version.strip().splitlines(), str(cal).strip().splitlines())
def test_many_lines(self): i = 0 for line in string_to_container(cal1)[0]: self.assertNotEqual('', line.name) if isinstance(line, ContentLine): self.assertNotEqual('', line.value) if line.name == 'DESCRIPTION': self.assertEqual('Lorem ipsum dolor sit amet, \ consectetur adipiscing elit. \ Sed vitae facilisis enim. \ Morbi blandit et lectus venenatis tristique. \ Donec sit amet egestas lacus. \ Donec ullamcorper, mi vitae congue dictum, \ quam dolor luctus augue, id cursus purus justo vel lorem. \ Ut feugiat enim ipsum, quis porta nibh ultricies congue. \ Pellentesque nisl mi, molestie id sem vel, \ vehicula nullam.', line.value) i += 1
def test_without_x(self): c = string_to_container(calendar_without_prodid)[0] c2 = string_to_container(calendar_without_prodid)[0] remove_x(c) self.assertSequenceEqual(c, c2)
def test_with_x(self): c = string_to_container(cal1)[0] remove_x(c) for line in c: self.assertFalse(line.name.startswith('X-'))
def test_without_x(self): c = string_to_container(cal2)[0] c2 = string_to_container(cal2)[0] remove_x(c) self.assertSequenceEqual(c, c2)