Skip to content

Commit 1683a67

Browse files
committed
[MIG] mail_gateway_telegram: Migration to 17.0
TT50728
1 parent b04069b commit 1683a67

File tree

10 files changed

+81
-60
lines changed

10 files changed

+81
-60
lines changed

mail_gateway_telegram/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ Authors
120120
Contributors
121121
------------
122122

123-
- Enric Tobella <[email protected]>
124-
- Olga Marco <[email protected]>
123+
- Enric Tobella <[email protected]>
124+
- Olga Marco <[email protected]>
125125

126126
Other credits
127127
-------------

mail_gateway_telegram/__manifest__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# Copyright 2024 Dixmit
2+
# Copyright 2025 Tecnativa
23
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
34

45
{
56
"name": "Mail Telegram Gateway",
67
"summary": """
78
Set a gateway for telegram""",
8-
"version": "16.0.1.0.1",
9+
"version": "17.0.1.0.0",
910
"license": "AGPL-3",
1011
"author": "Creu Blanca,Dixmit,Odoo Community Association (OCA)",
1112
"website": "https://github.com/OCA/social",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from . import mail_gateway_channel
1+
from . import discuss_channel
22
from . import mail_gateway
33
from . import mail_gateway_telegram

mail_gateway_telegram/models/mail_gateway_channel.py renamed to mail_gateway_telegram/models/discuss_channel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
from odoo.addons.base.models.avatar_mixin import get_hsl_from_seed
88

99

10-
class MailChannel(models.Model):
11-
_inherit = "mail.channel"
10+
class DiscussChannel(models.Model):
11+
_inherit = "discuss.channel"
1212

1313
def _generate_avatar_gateway(self):
1414
if self.gateway_id.gateway_type == "telegram":

mail_gateway_telegram/models/mail_gateway_telegram.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,16 @@ def _get_telegram_attachment_name(self, attachment):
130130
async def _process_telegram_attachment(self, attachment):
131131
if isinstance(attachment, tuple):
132132
attachment = attachment[-1]
133-
# That might happen with images, we will get the last one as it is the bigger one.
133+
# That might happen with images, we will get the last one as it is the
134+
# bigger one.
134135
if isinstance(
135136
attachment,
136137
(
137-
telegram.Game,
138-
telegram.Invoice,
139-
telegram.Location,
140-
telegram.SuccessfulPayment,
141-
telegram.Venue,
138+
telegram.Game
139+
| telegram.Invoice
140+
| telegram.Location
141+
| telegram.SuccessfulPayment
142+
| telegram.Venue
142143
),
143144
):
144145
return
@@ -190,12 +191,9 @@ def _process_update(self, chat, update):
190191
effective_attachment = current_attachment
191192
if isinstance(effective_attachment, telegram.Location):
192193
body += (
193-
'<a target="_blank" href="https://www.google.com/'
194-
'maps/search/?api=1&query=%s,%s">Location</a>'
195-
% (
196-
effective_attachment.latitude,
197-
effective_attachment.longitude,
198-
)
194+
f'<a target="_blank" href="https://www.google.com/'
195+
f"maps/search/?api=1&query={effective_attachment.latitude},"
196+
f'{effective_attachment.longitude}">Location</a>'
199197
)
200198
attachment_data = asyncio.run(
201199
self._process_telegram_attachment(effective_attachment)
@@ -204,7 +202,12 @@ def _process_update(self, chat, update):
204202
attachments.append(attachment_data)
205203
if len(body) > 0 or attachments:
206204
author = self._get_author(chat.gateway_id, update)
207-
new_message = chat.message_post(
205+
if author._name == "mail.guest":
206+
chat = chat.with_user(self.env.ref("base.public_user").id).with_context(
207+
guest=author
208+
)
209+
# TODO: Check the sudo...
210+
new_message = chat.sudo().message_post(
208211
body=body,
209212
author_id=author._name == "res.partner" and author.id,
210213
gateway_type="telegram",

mail_gateway_telegram/static/description/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -431,11 +431,11 @@ <h2><a class="toc-backref" href="#toc-entry-4">Limitations</a></h2>
431431
create a telegram bot that will send data to you on an external process
432432
with the following code.</p>
433433
<pre class="code python literal-block">
434-
<span class="kn">from</span> <span class="nn">telegram.ext</span> <span class="kn">import</span> <span class="n">Filters</span><span class="p">,</span> <span class="n">MessageHandler</span><span class="p">,</span> <span class="n">Updater</span><span class="w">
435-
</span><span class="kn">import</span> <span class="nn">requests</span><span class="w">
434+
<span class="kn">from</span><span class="w"> </span><span class="nn">telegram.ext</span><span class="w"> </span><span class="kn">import</span> <span class="n">Filters</span><span class="p">,</span> <span class="n">MessageHandler</span><span class="p">,</span> <span class="n">Updater</span><span class="w">
435+
</span><span class="kn">import</span><span class="w"> </span><span class="nn">requests</span><span class="w">
436436
</span><span class="n">dp</span> <span class="o">=</span> <span class="n">Updater</span><span class="p">(</span><span class="n">YOUR_TOKEN</span><span class="p">)</span><span class="w">
437437

438-
</span><span class="k">def</span> <span class="nf">message_callback</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">_context</span><span class="p">):</span><span class="w">
438+
</span><span class="k">def</span><span class="w"> </span><span class="nf">message_callback</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">_context</span><span class="p">):</span><span class="w">
439439
</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">YOUR_CONTROLLER</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">update</span><span class="o">.</span><span class="n">to_dict</span><span class="p">())</span><span class="w">
440440

441441

mail_gateway_telegram/static/src/components/message/message.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
22
<templates xml:space="preserve">
3-
<t t-inherit="mail.MessageViewNotification" t-inherit-mode="extension">
3+
<t t-inherit="mail.Message.notification" t-inherit-mode="extension">
44
<xpath expr="//div" position="after">
55
<i
66
class="fa fa-paper-plane text-info"
7-
t-if="messageView.message.gateway_type == 'telegram' and messageView.message.notifications.length == 0"
7+
t-if="message.gateway_type == 'telegram' and message.notifications.length == 0"
88
/>
99
</xpath>
1010
</t>

mail_gateway_telegram/tests/test_mail_gateway_telegram.py

Lines changed: 49 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ def setUpClass(cls):
147147
},
148148
"entities": [{"type": "bot_command", "offset": 0, "length": 6}],
149149
"date": 1639666351,
150-
"text": "/start %s%s" % (cls.password, cls.password),
150+
"text": f"/start {cls.password}{cls.password}",
151151
},
152152
}
153153
cls.message_04 = {
@@ -318,12 +318,14 @@ def test_webhook_unsecure_channel(self):
318318
with patch("telegram.Bot", getMyBot()):
319319
self.gateway.set_webhook()
320320
self.assertFalse(
321-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
321+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
322322
)
323323

324324
with patch("telegram.Bot", ExtBot):
325325
self.set_message(self.message_01, self.webhook)
326-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
326+
chat = self.env["discuss.channel"].search(
327+
[("gateway_id", "=", self.gateway.id)]
328+
)
327329
self.assertTrue(chat)
328330
self.assertTrue(chat.message_ids)
329331

@@ -334,11 +336,13 @@ def test_webhook_unsecure_channel_start(self):
334336
with patch.object(telegram, "Bot", getMyBot()):
335337
self.gateway.set_webhook()
336338
self.assertFalse(
337-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
339+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
338340
)
339341
with patch("telegram.Bot", ExtBot):
340342
self.set_message(self.message_02, self.webhook)
341-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
343+
chat = self.env["discuss.channel"].search(
344+
[("gateway_id", "=", self.gateway.id)]
345+
)
342346
self.assertTrue(chat)
343347
self.assertFalse(chat.message_ids)
344348
with patch("telegram.Bot", getMyBot()):
@@ -357,23 +361,31 @@ def test_webhook_secure_channel(self):
357361
)
358362
self.gateway.flush_recordset()
359363
self.assertFalse(
360-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
364+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
361365
)
362366
with patch("telegram.Bot", ExtBot):
363367
self.set_message(self.message_01, self.webhook)
364-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
368+
chat = self.env["discuss.channel"].search(
369+
[("gateway_id", "=", self.gateway.id)]
370+
)
365371
self.assertFalse(chat)
366372
with patch("telegram.Bot", ExtBot):
367373
self.set_message(self.message_02, self.webhook)
368-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
374+
chat = self.env["discuss.channel"].search(
375+
[("gateway_id", "=", self.gateway.id)]
376+
)
369377
self.assertFalse(chat)
370378
with patch("telegram.Bot", ExtBot):
371379
self.set_message(self.message_03, self.webhook)
372-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
380+
chat = self.env["discuss.channel"].search(
381+
[("gateway_id", "=", self.gateway.id)]
382+
)
373383
self.assertFalse(chat)
374384
with patch("telegram.Bot", ExtBot):
375385
self.set_message(self.message_04, self.webhook)
376-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
386+
chat = self.env["discuss.channel"].search(
387+
[("gateway_id", "=", self.gateway.id)]
388+
)
377389
self.assertTrue(chat)
378390
self.assertFalse(chat.message_ids)
379391
with patch("telegram.Bot", ExtBot):
@@ -383,11 +395,11 @@ def test_webhook_secure_channel(self):
383395

384396
def test_webhook_no_webhook(self):
385397
self.assertFalse(
386-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
398+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
387399
)
388400
self.set_message(self.message_01, self.webhook + self.webhook)
389401
self.assertFalse(
390-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
402+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
391403
)
392404

393405
def test_post_message(self):
@@ -397,11 +409,11 @@ def test_post_message(self):
397409
with patch.object(telegram, "Bot", getMyBot()):
398410
self.gateway.set_webhook()
399411
self.assertFalse(
400-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
412+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
401413
)
402414
with patch.object(telegram, "Bot", getMyBot()):
403415
self.set_message(self.message_02, self.webhook)
404-
channel = self.env["mail.channel"].search(
416+
channel = self.env["discuss.channel"].search(
405417
[("gateway_id", "=", self.gateway.id)]
406418
)
407419
self.assertFalse(
@@ -428,11 +440,11 @@ def test_post_message_image(self):
428440
with patch.object(telegram, "Bot", getMyBot()):
429441
self.gateway.set_webhook()
430442
self.assertFalse(
431-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
443+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
432444
)
433445
with patch.object(telegram, "Bot", getMyBot()):
434446
self.set_message(self.message_02, self.webhook)
435-
channel = self.env["mail.channel"].search(
447+
channel = self.env["discuss.channel"].search(
436448
[("gateway_id", "=", self.gateway.id)]
437449
)
438450
self.assertFalse(
@@ -459,11 +471,11 @@ def test_post_message_error(self):
459471
with patch.object(telegram, "Bot", getMyBot()):
460472
self.gateway.set_webhook()
461473
self.assertFalse(
462-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
474+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
463475
)
464476
with patch.object(telegram, "Bot", getMyBot()):
465477
self.set_message(self.message_02, self.webhook)
466-
channel = self.env["mail.channel"].search(
478+
channel = self.env["discuss.channel"].search(
467479
[("gateway_id", "=", self.gateway.id)]
468480
)
469481
self.assertFalse(
@@ -492,11 +504,11 @@ def test_post_message_document(self):
492504
with patch.object(telegram, "Bot", getMyBot()):
493505
self.gateway.set_webhook()
494506
self.assertFalse(
495-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
507+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
496508
)
497509
with patch.object(telegram, "Bot", getMyBot()):
498510
self.set_message(self.message_02, self.webhook)
499-
channel = self.env["mail.channel"].search(
511+
channel = self.env["discuss.channel"].search(
500512
[("gateway_id", "=", self.gateway.id)]
501513
)
502514
self.assertFalse(
@@ -523,11 +535,13 @@ def test_webhook_attachment(self):
523535
with patch("telegram.Bot", getMyBot()):
524536
self.gateway.set_webhook()
525537
self.assertFalse(
526-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
538+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
527539
)
528540
with patch("telegram.Bot", getMyBot()):
529541
self.set_message(self.message_05, self.webhook)
530-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
542+
chat = self.env["discuss.channel"].search(
543+
[("gateway_id", "=", self.gateway.id)]
544+
)
531545
self.assertTrue(chat)
532546
self.assertTrue(chat.message_ids)
533547
self.assertTrue(chat.message_ids.attachment_ids)
@@ -539,14 +553,16 @@ def test_webhook_sticker(self):
539553
with patch("telegram.Bot", getMyBot()):
540554
self.gateway.set_webhook()
541555
self.assertFalse(
542-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
556+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
543557
)
544558
with patch(
545559
"telegram.Bot",
546560
getMyBot(file="addons/mail_gateway_telegram/tests/sticker.tgs"),
547561
):
548562
self.set_message(self.message_07, self.webhook, timeout=30)
549-
chat = self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
563+
chat = self.env["discuss.channel"].search(
564+
[("gateway_id", "=", self.gateway.id)]
565+
)
550566
self.assertTrue(chat)
551567
self.assertTrue(chat.message_ids)
552568
self.assertTrue(chat.message_ids.attachment_ids)
@@ -560,7 +576,7 @@ def test_webhook_reply(self):
560576
with patch.object(telegram, "Bot", getMyBot()):
561577
self.set_message(self.message_02, self.webhook)
562578

563-
channel = self.env["mail.channel"].search(
579+
channel = self.env["discuss.channel"].search(
564580
[("gateway_id", "=", self.gateway.id)]
565581
)
566582
self.assertFalse(
@@ -614,7 +630,7 @@ def test_webhook_reply_new_partner(self):
614630
with patch.object(telegram, "Bot", getMyBot()):
615631
self.set_message(self.message_02, self.webhook)
616632

617-
channel = self.env["mail.channel"].search(
633+
channel = self.env["discuss.channel"].search(
618634
[("gateway_id", "=", self.gateway.id)]
619635
)
620636
self.assertFalse(
@@ -672,7 +688,7 @@ def test_link_mail_message(self):
672688
with patch.object(telegram, "Bot", getMyBot()):
673689
self.set_message(self.message_01, self.webhook)
674690
messages = self.partner.message_ids
675-
channel = self.env["mail.channel"].search(
691+
channel = self.env["discuss.channel"].search(
676692
[("gateway_id", "=", self.gateway.id)]
677693
)
678694
self.assertTrue(channel.message_ids)
@@ -693,7 +709,7 @@ def test_send_mail_message(self):
693709
with patch.object(telegram, "Bot", getMyBot()):
694710
self.set_message(self.message_01, self.webhook)
695711

696-
channel = self.env["mail.channel"].search(
712+
channel = self.env["discuss.channel"].search(
697713
[("gateway_id", "=", self.gateway.id)]
698714
)
699715
self.assertFalse(
@@ -748,10 +764,10 @@ def test_channel(self):
748764
with patch.object(telegram, "Bot", getMyBot()):
749765
self.set_message(self.message_02, self.webhook)
750766

751-
channel = self.env["mail.channel"].search(
767+
channel = self.env["discuss.channel"].search(
752768
[("gateway_id", "=", self.gateway.id)]
753769
)
754-
channel_info = channel.channel_info()[0]
770+
channel_info = channel._channel_info()[0]
755771
self.assertEqual(channel_info["gateway"]["id"], self.gateway.id)
756772
self.assertTrue(channel.avatar_128)
757773

@@ -762,11 +778,11 @@ def test_message_update(self):
762778
with patch.object(telegram, "Bot", getMyBot()):
763779
self.gateway.set_webhook()
764780
self.assertFalse(
765-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
781+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
766782
)
767783
with patch.object(telegram, "Bot", getMyBot()):
768784
self.set_message(self.message_02, self.webhook)
769-
channel = self.env["mail.channel"].search(
785+
channel = self.env["discuss.channel"].search(
770786
[("gateway_id", "=", self.gateway.id)]
771787
)
772788
self.assertFalse(
@@ -791,7 +807,7 @@ def test_messaging(self):
791807
with patch.object(telegram, "Bot", getMyBot()):
792808
self.gateway.set_webhook()
793809
self.assertFalse(
794-
self.env["mail.channel"].search([("gateway_id", "=", self.gateway.id)])
810+
self.env["discuss.channel"].search([("gateway_id", "=", self.gateway.id)])
795811
)
796812
with patch.object(telegram, "Bot", getMyBot()):
797813
self.set_message(self.message_02, self.webhook)

mail_gateway_telegram/views/mail_gateway.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@
1212
<field name="has_new_channel_security" position="after">
1313
<field
1414
name="telegram_security_key"
15-
attrs="{'invisible': ['|', ('gateway_type', '!=', 'telegram'), ('has_new_channel_security', '=', False)], 'required': [('gateway_type', '=', 'telegram'), ('has_new_channel_security', '=', True)]}"
15+
invisible="gateway_type != 'telegram' or not has_new_channel_security"
16+
required="gateway_type == 'telegram' and has_new_channel_security"
1617
/>
1718
</field>
1819
<notebook position="inside">
1920
<page
2021
name="telegram"
2122
string="Telegram configuration"
22-
attrs="{'invisible': [('gateway_type', '!=', 'telegram')]}"
23+
invisible="gateway_type != 'telegram'"
2324
>
2425
<div>
2526
<ol>

0 commit comments

Comments
 (0)