leadguru-jobs 0.705.0__tar.gz → 0.706.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 (121) hide show
  1. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/notifications/notification.py +83 -21
  4. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/mongo_repository.py +19 -4
  5. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/MANIFEST.in +0 -0
  6. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/README.md +0 -0
  7. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  8. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  9. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  10. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  11. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  12. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/__init__.py +0 -0
  13. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/assets/images/arrow.png +0 -0
  14. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/assets/images/arrow_blue.png +0 -0
  15. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/assets/images/firework.png +0 -0
  16. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/assets/images/lock.png +0 -0
  17. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/assets/images/logo.png +0 -0
  18. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/assets/images/mail.png +0 -0
  19. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/basejobs.py +0 -0
  20. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/env.py +0 -0
  21. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/__init__.py +0 -0
  22. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/analytics.py +0 -0
  23. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  24. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/bots_killer.py +0 -0
  25. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/chat_history.py +0 -0
  26. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/connect_sources.py +0 -0
  27. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  28. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
  29. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/load_slack_users.py +0 -0
  30. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/mass_message.py +0 -0
  31. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/send_code.py +0 -0
  32. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
  33. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  34. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  35. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  36. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  37. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
  38. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  39. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  40. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  41. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  42. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  43. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  44. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  45. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  46. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  47. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
  48. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
  49. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  50. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/analytics.py +0 -0
  51. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/engine.py +0 -0
  52. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/enums.py +0 -0
  53. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  54. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/model.py +0 -0
  55. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/__init__.py +0 -0
  56. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/base.py +0 -0
  57. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/boards/__init__.py +0 -0
  58. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/boards/board.py +0 -0
  59. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/boards/status.py +0 -0
  60. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
  61. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/bots/base_bot.py +0 -0
  62. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/bots/bot_info.py +0 -0
  63. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/bots/dedicated_bot.py +0 -0
  64. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
  65. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/chat/file.py +0 -0
  66. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/chat/grouped_messages.py +0 -0
  67. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/chat/message.py +0 -0
  68. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/chat/request.py +0 -0
  69. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/chat/scheduled_message.py +0 -0
  70. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
  71. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/contacts/contact.py +0 -0
  72. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/__init__.py +0 -0
  73. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
  74. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/cloud/file.py +0 -0
  75. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
  76. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/discord/user.py +0 -0
  77. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
  78. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/slack/timezone.py +0 -0
  79. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/slack/user.py +0 -0
  80. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/external/user_workspace.py +0 -0
  81. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
  82. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/leads/config.py +0 -0
  83. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/leads/extended_lead.py +0 -0
  84. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/leads/lead.py +0 -0
  85. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/leads/message.py +0 -0
  86. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
  87. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/notifications/notification_settings.py +0 -0
  88. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/people/__init__.py +0 -0
  89. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/people/people.py +0 -0
  90. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/people/profile.py +0 -0
  91. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/post/__init__.py +0 -0
  92. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/post/message.py +0 -0
  93. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/post/post.py +0 -0
  94. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
  95. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/templates/template.py +0 -0
  96. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/__init__.py +0 -0
  97. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/feature.py +0 -0
  98. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/general_settings.py +0 -0
  99. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/reset_password.py +0 -0
  100. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/subscription.py +0 -0
  101. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/typed_field.py +0 -0
  102. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/user.py +0 -0
  103. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/user_follow_ups.py +0 -0
  104. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/user_page.py +0 -0
  105. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user/verification.py +0 -0
  106. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
  107. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +0 -0
  108. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/models/user_leads/user_lead.py +0 -0
  109. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/repositories/__init__.py +0 -0
  110. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
  111. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/lgt_data/repositories/post/posts.py +0 -0
  112. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/main.py +0 -0
  113. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/runner.py +0 -0
  114. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/services/__init__.py +0 -0
  115. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/services/k8_manager.py +0 -0
  116. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/services/web_client.py +0 -0
  117. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/simple_job.py +0 -0
  118. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/smtp.py +0 -0
  119. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/lgt_jobs/templates/new_message.html +0 -0
  120. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/setup.cfg +0 -0
  121. {leadguru_jobs-0.705.0 → leadguru_jobs-0.706.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: leadguru_jobs
3
- Version: 0.705.0
3
+ Version: 0.706.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.2
2
2
  Name: leadguru_jobs
3
- Version: 0.705.0
3
+ Version: 0.706.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -54,6 +54,7 @@ class Notification(DictionaryModel):
54
54
  class IncomingMessageNotification(Notification):
55
55
 
56
56
  other_leads_text = ' and other leads.'
57
+
57
58
  name_html_item = '''
58
59
  <div style="display: inline-block; padding-left: 2px" class="lead_names">
59
60
  <img alt="Lead Photo" src="$$USER_IMAGE$$" width="24" height="24"
@@ -176,33 +177,94 @@ class IncomingMessageNotification(Notification):
176
177
 
177
178
 
178
179
  class InboxNotification(Notification):
180
+ name_html_item = '''
181
+ <div style="display: inline-block; padding-left: 2px" class="lead_names">
182
+ <img alt="Lead Photo" src="$$USER_IMAGE$$" width="24" height="24"
183
+ style="background-color: #FFFFFE !important; display: inline-block; vertical-align: top; width: 24px;
184
+ max-width: 24px; min-width: 24px; font-family: 'Outfit', Helvetica, Arial, sans-serif; color: #FFFFFE;
185
+ border-radius: 50% !important; font-size: 16px;" border="0">
186
+ <span style="font-weight: 600;">$$USER_NAME$$</span>
187
+ </div>
188
+ '''
189
+ new_request_html_item = '''
190
+ <tr>
191
+ <td bgcolor="#FFFFFE" align="left" style="padding-top: 16px;"
192
+ class="pr-bg-dark pr-text-dark">
193
+ <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0">
194
+ <tr>
195
+ <td bgcolor="#FFFFFE" align="left"
196
+ class="pr-bg-dark pr-text-dark"
197
+ style="font-family: 'Outfit', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;">
198
+ <table role="presentation" border="0" cellspacing="0" cellpadding="0"
199
+ style="border-collapse: separate !important;">
200
+ <tr>
201
+ <td align="center" bgcolor="#FFFFFE" style="border-radius: 50% !important;">
202
+ <img alt="Lead Photo" src="$$USER_IMAGE$$" width="24"
203
+ height="24"
204
+ 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% !important; font-size: 16px;"
205
+ border="0">
206
+ </td>
207
+ <td align="center"
208
+ class="pr-text-dark"
209
+ style="white-space: nowrap; font-family: 'Outfit', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 600; line-height: 20px; padding-left: 4px">
210
+ $$USER_NAME$$
211
+ </td>
212
+ </tr>
213
+ </table>
214
+ </td>
215
+ </tr>
179
216
 
217
+ <tr>
218
+ <td align="left" style="padding-top: 8px">
219
+ <table role="presentation" border="0" cellspacing="0" cellpadding="0"
220
+ style="border-collapse: separate !important;">
221
+ <tr>
222
+ <td align="left" bgcolor="#F6F6F8"
223
+ class="sec-bg-dark pr-text-dark"
224
+ 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 !important; background-color: #F6F6F8">
225
+ $$REQUEST_TEXT$$
226
+ </td>
227
+ </tr>
228
+ </table>
229
+ </td>
230
+ </tr>
231
+ </table>
232
+ </td>
233
+ </tr>
234
+ '''
180
235
  @staticmethod
181
- def get_button_name():
182
- return 'View message request'
236
+ def get_button_name(users: list):
237
+ return 'View message requests' if len(users) > 1 else 'View message request'
183
238
 
184
239
  @staticmethod
185
- def get_button_url():
240
+ def get_chat_url():
186
241
  return f'{portal_url}/feed?requests=true'
187
242
 
188
- def get_subject_text(self, users: list) -> str:
189
- if self.type == NotificationType.INSTANTLY:
190
- return 'New message request on Leadguru'
191
- elif len(users) > 1:
192
- return 'Message requests on Leadguru'
193
- return 'Message request on Leadguru'
194
-
195
- def get_notification_text(self, users: list):
196
- if self.type == NotificationType.INSTANTLY:
197
- return f'{users[0]} has just sent you message request.'
198
- elif (self.type == NotificationType.ONCE_A_DAY or self.type == NotificationType.ONCE_A_WEEK) and users:
199
- match len(users):
200
- case 1:
201
- return f'You have unread message request from {users[0]}.'
202
- case 2 | 3:
203
- return f'You have unread message request from {", ".join(users)}.'
204
- case _:
205
- return f'You have unread message requests from {", ".join(users[:3])} and other leads.'
243
+ @staticmethod
244
+ def get_subject_text(users: list) -> str:
245
+ return 'New message requests on Leadguru' if len(users) > 1 else'New message request on Leadguru'
246
+
247
+ def create_title(self, user_ids: list[str], users: list):
248
+ title = ""
249
+ for user_id in user_ids[:3]:
250
+ user = [user for user in users if user_id == user['sender_id']][0]
251
+ photo = user.get('images', {}).get('image_72', '{{ IMAGE_PERSON.src }}')
252
+ item = self.name_html_item.replace('$$USER_NAME$$', user['real_name'])
253
+ item = item.replace('$$USER_IMAGE$$', photo)
254
+ title += item
255
+
256
+ return f"New message requests from {title}" if len(users) > 1 else f"New message request from {title}"
257
+
258
+ def create_new_requests_list(self, requests: list):
259
+ new_requests = ""
260
+ for request in requests[:3]:
261
+ name = request['user']['real_name']
262
+ photo = request['user'].get('images', {}).get('image_72', '{{ IMAGE_PERSON.src }}')
263
+ item = self.new_request_html_item.replace('$$USER_NAME$$', name)
264
+ item = item.replace('$$USER_IMAGE$$', photo)
265
+ item = item.replace('$$REQUEST_TEXT$$', request['text'])
266
+ new_requests += item
267
+ return new_requests
206
268
 
207
269
 
208
270
  class SourceDeactivationNotification(Notification):
@@ -31,7 +31,7 @@ from lgt_jobs.lgt_data.models.user.verification import UserVerificationModel
31
31
  from lgt_jobs.lgt_data.models.user_leads.extended_user_lead import ExtendedUserLeadModel
32
32
  from lgt_jobs.lgt_data.models.user_leads.user_lead import UserLeadModel
33
33
 
34
- client = MongoClient(os.environ.get('MONGO_CONNECTION_STRING', 'mongodb://127.0.0.1:27017/'))
34
+ client = MongoClient(os.environ.get('MONGO_CONNECTION_STRING', 'mongodb://127.0.0.1:27018/'))
35
35
 
36
36
 
37
37
  def to_object_id(oid):
@@ -1418,10 +1418,17 @@ class MessageRequestsRepository(BaseMongoRepository):
1418
1418
  self.collection().update_one({'user_id': to_object_id(user_id), 'sender_id': sender_id},
1419
1419
  {'$set': message_request.to_dic()}, upsert=True)
1420
1420
 
1421
- def get_many(self, user_id: str, viewed: bool = False):
1421
+ def get_many(self, user_id: str, viewed: bool = False, **kwargs):
1422
+ match_pipeline = {'user_id': to_object_id(user_id), 'viewed': viewed}
1423
+ from_date = kwargs.get('from_date')
1424
+
1425
+ if from_date:
1426
+ start = datetime(from_date.year, from_date.month, from_date.day, tzinfo=tz.tzutc())
1427
+ match_pipeline['created_at']['$gte'] = start
1428
+
1422
1429
  pipeline = [
1423
1430
  {
1424
- '$match': {'user_id': to_object_id(user_id), 'viewed': viewed}
1431
+ '$match': match_pipeline
1425
1432
  },
1426
1433
  {
1427
1434
  '$lookup': {
@@ -1432,7 +1439,15 @@ class MessageRequestsRepository(BaseMongoRepository):
1432
1439
  }
1433
1440
  },
1434
1441
  {
1435
- '$addFields': {'user': {'$first': '$user'}}
1442
+ '$lookup': {
1443
+ 'from': 'dedicated_bots',
1444
+ 'localField': 'bot_id',
1445
+ 'foreignField': '_id',
1446
+ 'as': 'bot'
1447
+ }
1448
+ },
1449
+ {
1450
+ '$addFields': {'user': {'$first': '$user'}, 'bot': {'$first': '$bot'}}
1436
1451
  },
1437
1452
  {
1438
1453
  '$sort': {'created_at': 1}