leadguru-jobs 0.668.0__tar.gz → 0.669.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/notifications/notification.py +101 -14
  4. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/mongo_repository.py +9 -1
  5. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/setup.py +2 -2
  6. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/MANIFEST.in +0 -0
  7. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/README.md +0 -0
  8. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  9. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  10. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  11. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  12. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  13. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/__init__.py +0 -0
  14. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/assets/images/arrow.png +0 -0
  15. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/assets/images/arrow_blue.png +0 -0
  16. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/assets/images/firework.png +0 -0
  17. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/assets/images/lock.png +0 -0
  18. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/assets/images/logo.png +0 -0
  19. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/assets/images/mail.png +0 -0
  20. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/basejobs.py +0 -0
  21. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/env.py +0 -0
  22. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/__init__.py +0 -0
  23. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/analytics.py +0 -0
  24. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  25. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/chat_history.py +0 -0
  26. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/connect_sources.py +0 -0
  27. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  28. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
  29. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/mass_message.py +0 -0
  30. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/send_code.py +0 -0
  31. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
  32. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  33. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  34. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  35. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  36. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
  37. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  38. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  39. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  40. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  41. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  42. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  43. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  44. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  45. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  46. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
  47. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
  48. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  49. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/analytics.py +0 -0
  50. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/engine.py +0 -0
  51. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/enums.py +0 -0
  52. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  53. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/model.py +0 -0
  54. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/__init__.py +0 -0
  55. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/base.py +0 -0
  56. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/boards/__init__.py +0 -0
  57. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/boards/board.py +0 -0
  58. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/boards/status.py +0 -0
  59. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
  60. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/bots/base_bot.py +0 -0
  61. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/bots/bot_info.py +0 -0
  62. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/bots/dedicated_bot.py +0 -0
  63. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
  64. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/chat/file.py +0 -0
  65. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/chat/grouped_messages.py +0 -0
  66. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/chat/message.py +0 -0
  67. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/chat/request.py +0 -0
  68. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/chat/scheduled_message.py +0 -0
  69. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
  70. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/contacts/contact.py +0 -0
  71. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/__init__.py +0 -0
  72. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
  73. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/cloud/file.py +0 -0
  74. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
  75. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/discord/user.py +0 -0
  76. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
  77. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/slack/timezone.py +0 -0
  78. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/slack/user.py +0 -0
  79. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/external/user_workspace.py +0 -0
  80. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
  81. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/leads/config.py +0 -0
  82. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/leads/extended_lead.py +0 -0
  83. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/leads/lead.py +0 -0
  84. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/leads/message.py +0 -0
  85. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
  86. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/notifications/notification_settings.py +0 -0
  87. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/people/__init__.py +0 -0
  88. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/people/people.py +0 -0
  89. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/people/profile.py +0 -0
  90. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/post/__init__.py +0 -0
  91. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/post/message.py +0 -0
  92. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/post/post.py +0 -0
  93. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
  94. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/templates/template.py +0 -0
  95. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/__init__.py +0 -0
  96. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/feature.py +0 -0
  97. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/general_settings.py +0 -0
  98. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/reset_password.py +0 -0
  99. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/subscription.py +0 -0
  100. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/typed_field.py +0 -0
  101. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/user.py +0 -0
  102. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/user_follow_ups.py +0 -0
  103. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/user_page.py +0 -0
  104. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user/verification.py +0 -0
  105. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
  106. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +0 -0
  107. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/models/user_leads/user_lead.py +0 -0
  108. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/repositories/__init__.py +0 -0
  109. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
  110. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/lgt_data/repositories/post/posts.py +0 -0
  111. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/main.py +0 -0
  112. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/runner.py +0 -0
  113. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/services/__init__.py +0 -0
  114. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/services/web_client.py +0 -0
  115. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/simple_job.py +0 -0
  116. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/smtp.py +0 -0
  117. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/lgt_jobs/templates/new_message.html +0 -0
  118. {leadguru_jobs-0.668.0 → leadguru_jobs-0.669.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.668.0
3
+ Version: 0.669.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.668.0
3
+ Version: 0.669.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -52,9 +52,77 @@ class Notification(DictionaryModel):
52
52
 
53
53
 
54
54
  class IncomingMessageNotification(Notification):
55
+
56
+ other_leads_text = ' and other leads.'
57
+ name_html_item = '''
58
+ <div style="display: inline-block; padding-left: 2px" class="lead_names">
59
+ <img alt="Lead Photo" src="$$USER_IMAGE$$" width="24" height="24"
60
+ style="background-color: #FFFFFE !important; display: inline-block; vertical-align: top; width: 24px;
61
+ max-width: 24px; min-width: 24px; font-family: 'Outfit', Helvetica, Arial, sans-serif; color: #FFFFFE;
62
+ border-radius: 50%; font-size: 16px;" border="0">
63
+ <span style="font-weight: 600;">$$USER_NAME$$</span>
64
+ </div>
65
+ '''
66
+ view_message_html_item = '''
67
+ <td align="right" class="pr-text-dark" style="width: 100%">
68
+ <a href="$$VIEW_MESSAGE_URL$$" target="_blank"style="color: #3579F6; font-family: 'Outfit', Helvetica, Arial,
69
+ sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; text-decoration: none;
70
+ display: inline-block;">View message <img alt="View message" src="{{ IMAGE_ARROW_BLUE.src }}" width="16"
71
+ height="16" style="display: inline-block; vertical-align: middle; width: 16px; max-width: 16px;
72
+ min-width: 16px; margin: 0 -1px 4px 7px" border="0"></a>
73
+ </td>'''
74
+
75
+ unread_message_html_item = '''
76
+ <tr>
77
+ <td bgcolor="#FFFFFE" align="left" style="padding-top: 16px;"
78
+ class="pr-bg-dark pr-text-dark">
79
+ <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0">
80
+ <tr>
81
+ <td bgcolor="#FFFFFE" align="left"
82
+ class="pr-bg-dark pr-text-dark"
83
+ style="color: #262730; font-family: 'Outfit', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;">
84
+ <table role="presentation" border="0" cellspacing="0" cellpadding="0"
85
+ style="border-collapse: separate !important;">
86
+ <tr>
87
+ <td align="center" bgcolor="#FFFFFE" style="border-radius: 50% !important;">
88
+ <img alt="Lead Photo" src="$$USER_IMAGE$$" width="24"
89
+ height="24"
90
+ style="display: inline-block; vertical-align: middle; width: 24px; max-width: 24px; min-width: 24px; font-family: 'Outfit', Helvetica, Arial, sans-serif; color: #FFFFFE; border-radius: 50%; font-size: 16px;"
91
+ border="0">
92
+ </td>
93
+ <td align="center"
94
+ class="pr-text-dark"
95
+ style="white-space: nowrap; color: #262730; font-family: 'Outfit', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 600; line-height: 20px; padding-left: 4px">
96
+ $$USER_NAME$$
97
+ </td>
98
+ $$VIEW_MESSAGE_BUTTON$$
99
+ </tr>
100
+ </table>
101
+ </td>
102
+ </tr>
103
+
104
+ <tr>
105
+ <td align="left" style="padding-top: 8px">
106
+ <table role="presentation" border="0" cellspacing="0" cellpadding="0"
107
+ style="border-collapse: separate !important;">
108
+ <tr>
109
+ <td align="left" bgcolor="#F6F6F8"
110
+ class="sec-bg-dark pr-text-dark"
111
+ style="color: #262730; font-family: 'Outfit', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; padding: 12px; border-radius: 0 12px 12px 12px; background-color: #F6F6F8">
112
+ $$MESSAGE_TEXT$$
113
+ </td>
114
+ </tr>
115
+ </table>
116
+ </td>
117
+ </tr>
118
+ </table>
119
+ </td>
120
+ </tr>
121
+ '''
122
+
55
123
  @staticmethod
56
124
  def get_button_name() -> str:
57
- return 'View message'
125
+ return 'Go to Chat'
58
126
 
59
127
  @staticmethod
60
128
  def get_button_url(sender_id: str, source_id: str) -> str:
@@ -67,19 +135,38 @@ class IncomingMessageNotification(Notification):
67
135
  return 'Unread messages from your lead'
68
136
  return 'Unread message from your lead'
69
137
 
70
- def get_notification_text(self, users: list):
71
- if self.type == NotificationType.INSTANTLY:
72
- return f'{users[-1]} has just sent you a message.'
73
- elif self.type == NotificationType.UNREAD_FOR_FEW_MINUTES:
74
- return f'{users[-1]} sent you a message {self.minute} minutes ago.'
75
- elif (self.type == NotificationType.ONCE_A_DAY or self.type == NotificationType.ONCE_A_WEEK) and users:
76
- match len(users):
77
- case 1:
78
- return f'You have unread message(s) from {users[0]}.'
79
- case 2 | 3:
80
- return f'You have unread messages from {", ".join(users)}.'
81
- case _:
82
- return f'You have unread messages from {", ".join(users[:3])} and other leads.'
138
+ def create_title(self, user_ids: list[str], users: list):
139
+ title = ""
140
+ for user_id in user_ids[:3]:
141
+ user = [user for user in users if user_id == user['sender_id']][0]
142
+ photo = user.get('images', {}).get('image_72', '{{ IMAGE_PERSON.src }}')
143
+ item = self.name_html_item.replace('$$USER_NAME$$', user['real_name'])
144
+ item = item.replace('$$USER_IMAGE$$', photo)
145
+ title += item
146
+
147
+ if len(user_ids) > 3:
148
+ title += self.other_leads_text
149
+
150
+ return f"You have unread messages from {title}" if len(users) > 1 else f"You have unread message from {title}"
151
+
152
+ def create_unread_messages_list(self, messages: list):
153
+ unread_messages = ""
154
+ for message in messages[:3]:
155
+ name = message['user']['real_name']
156
+ photo = message['user'].get('images', {}).get('image_72', '{{ IMAGE_PERSON.src }}')
157
+ item = self.unread_message_html_item.replace('$$USER_NAME$$', name)
158
+ item = item.replace('$$USER_IMAGE$$', photo)
159
+ item = item.replace('$$MESSAGE_TEXT$$', message['text'])
160
+ view_message_button = ""
161
+ if len(messages) > 1:
162
+ view_message_button = (
163
+ self.view_message_html_item.replace('$$VIEW_MESSAGE_URL$$',
164
+ self.get_button_url(message['sender_id'],
165
+ message['bot']['source']['source_id'])))
166
+ item = item.replace('$$VIEW_MESSAGE_BUTTON$$', view_message_button)
167
+
168
+ unread_messages += item
169
+ return unread_messages
83
170
 
84
171
 
85
172
  class InboxNotification(Notification):
@@ -1340,7 +1340,15 @@ class ChatRepository(BaseMongoRepository):
1340
1340
  }
1341
1341
  },
1342
1342
  {
1343
- '$addFields': {'user': {'$first': '$user'}}
1343
+ '$lookup': {
1344
+ 'from': 'dedicated_bots',
1345
+ 'localField': 'bot_id',
1346
+ 'foreignField': '_id',
1347
+ 'as': 'bot'
1348
+ }
1349
+ },
1350
+ {
1351
+ '$addFields': {'user': {'$first': '$user'}, 'bot': {'$first': '$bot'}}
1344
1352
  },
1345
1353
  {
1346
1354
  '$sort': {sort_by: 1}
@@ -13,9 +13,9 @@ def versions():
13
13
 
14
14
 
15
15
  try:
16
- version_parts = versions()[0].split(".")
16
+ version_parts: list = versions()[0].split(".")
17
17
  except:
18
- version_parts = "0.0.0".split(".")
18
+ version_parts: list = "0.0.0".split(".")
19
19
 
20
20
  version_parts[1] = f'{float(version_parts[1]) + 1}'
21
21
  last_version = ".".join(version_parts[0:-1])