leadguru-jobs 0.648.0__tar.gz → 0.650.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.
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/PKG-INFO +1 -1
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/workspace_connect.py +19 -27
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/enums.py +0 -1
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/notifications/notification.py +1 -46
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/mongo_repository.py +4 -23
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/MANIFEST.in +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/README.md +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/leadguru_jobs.egg-info/requires.txt +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/assets/images/arrow.png +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/assets/images/firework.png +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/assets/images/lock.png +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/assets/images/logo.png +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/assets/images/mail.png +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/basejobs.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/env.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/analytics.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/chat_history.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/connect_sources.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/mass_message.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/send_code.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/helpers.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/analytics.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/engine.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/helpers.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/model.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/base.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/boards/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/boards/board.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/boards/status.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/bots/base_bot.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/bots/bot_info.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/bots/dedicated_bot.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/file.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/grouped_messages.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/message.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/request.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/scheduled_message.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/contacts/contact.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/cloud/file.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/discord/user.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/slack/timezone.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/slack/user.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/user_workspace.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/leads/config.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/leads/extended_lead.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/leads/lead.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/leads/message.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/notifications/notification_settings.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/people/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/people/people.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/people/profile.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/post/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/post/message.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/post/post.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/templates/template.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/feature.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/general_settings.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/reset_password.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/subscription.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/user.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/user_follow_ups.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/user_page.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/verification.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user_leads/user_lead.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/repositories/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/repositories/post/posts.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/main.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/runner.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/services/__init__.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/services/web_client.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/simple_job.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/smtp.py +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/templates/new_message.html +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/setup.cfg +0 -0
- {leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/setup.py +0 -0
@@ -1,5 +1,3 @@
|
|
1
|
-
import random
|
2
|
-
import time
|
3
1
|
from abc import ABC
|
4
2
|
from typing import Dict
|
5
3
|
import requests
|
@@ -47,41 +45,35 @@ class ConnectSlackAccountJob(BaseBackgroundJob, ABC):
|
|
47
45
|
if code_confirmed_response.status_code != 200:
|
48
46
|
log.warning(f'Unable to confirm code due to error: {code_confirmed_response.content}')
|
49
47
|
slack_user.status = StatusConnection.FAILED
|
50
|
-
UserMongoRepository().set(current_user.id,
|
48
|
+
UserMongoRepository().set(current_user.id,
|
49
|
+
slack_users=[user.to_dic() for user in current_user.slack_users])
|
51
50
|
return
|
52
51
|
|
53
52
|
code_confirmed = code_confirmed_response.json().get('ok', False)
|
54
53
|
if not code_confirmed:
|
55
54
|
slack_user.status = StatusConnection.FAILED
|
56
|
-
UserMongoRepository().set(current_user.id,
|
55
|
+
UserMongoRepository().set(current_user.id,
|
56
|
+
slack_users=[user.to_dic() for user in current_user.slack_users])
|
57
57
|
log.warning(f'Invalid code')
|
58
58
|
return
|
59
59
|
|
60
60
|
slack_user.cookies = client.client.cookies = code_confirmed_response.cookies.get_dict()
|
61
61
|
|
62
|
-
workspaces_response =
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
slack_user.status = StatusConnection.FAILED
|
73
|
-
log.warning(f'Attempt: {attempt}. Unable to get workspaces due to error: {workspaces_response.json()}')
|
74
|
-
attempt += 1
|
75
|
-
time.sleep(60)
|
76
|
-
else:
|
77
|
-
slack_user.status = StatusConnection.IN_PROGRESS
|
78
|
-
break
|
79
|
-
|
80
|
-
UserMongoRepository().set(current_user.id, slack_users=[user.to_dic() for user in current_user.slack_users])
|
81
|
-
|
82
|
-
if attempt > 5:
|
62
|
+
workspaces_response = client.find_workspaces(data.user_agent)
|
63
|
+
if workspaces_response.status_code != 200:
|
64
|
+
slack_user.status = StatusConnection.FAILED
|
65
|
+
UserMongoRepository().set(current_user.id,
|
66
|
+
slack_users=[user.to_dic() for user in current_user.slack_users])
|
67
|
+
log.warning(f'Unable to get workspaces due to error: {workspaces_response.content}')
|
68
|
+
return
|
69
|
+
if not workspaces_response.json().get('ok', False):
|
70
|
+
slack_user.status = StatusConnection.FAILED
|
71
|
+
log.warning(f'Unable to get workspaces due to error: {workspaces_response.content}')
|
83
72
|
return
|
84
73
|
|
74
|
+
UserMongoRepository().set(current_user.id,
|
75
|
+
slack_users=[user.to_dic() for user in current_user.slack_users])
|
76
|
+
|
85
77
|
log.info(f'{slack_user.email}: got workspaces data {workspaces_response.json()}')
|
86
78
|
user_workspaces = next((user for user in workspaces_response.json()['current_teams']
|
87
79
|
if user['email'] == data.slack_email), {}).get('teams', [])
|
@@ -105,14 +97,14 @@ class ConnectSlackAccountJob(BaseBackgroundJob, ABC):
|
|
105
97
|
workspace.magic_login_url = login_url
|
106
98
|
workspace.token = token
|
107
99
|
workspace.domain = workspace.domain
|
108
|
-
time.sleep(random.uniform(0.5, 2))
|
109
100
|
|
110
101
|
slack_user.cookies = session.cookies.get_dict()
|
111
102
|
slack_user.workspaces = user_workspaces
|
112
103
|
slack_user.status = StatusConnection.COMPLETE
|
113
104
|
|
114
105
|
slack_users_dict = [user.to_dic() for user in current_user.slack_users]
|
115
|
-
UserMongoRepository().set(current_user.id,
|
106
|
+
UserMongoRepository().set(current_user.id,
|
107
|
+
slack_users=slack_users_dict)
|
116
108
|
|
117
109
|
dedicated_bots_repository = DedicatedBotRepository()
|
118
110
|
dedicated_bots = dedicated_bots_repository.get_all(user_id=current_user.id, user_name=data.slack_email,
|
@@ -198,35 +198,6 @@ class BulkReactionsNotification(Notification):
|
|
198
198
|
|
199
199
|
class FollowUpNotification(Notification):
|
200
200
|
|
201
|
-
@property
|
202
|
-
def need_to_notify_now(self) -> bool:
|
203
|
-
allowed_types = [NotificationType.ONCE_A_DAY, NotificationType.ONCE_A_DAY, NotificationType.FEW_MINUTES_BEFORE]
|
204
|
-
if not self.enabled or self.type not in allowed_types:
|
205
|
-
return False
|
206
|
-
|
207
|
-
now = datetime.now(UTC)
|
208
|
-
if self.last_notification:
|
209
|
-
self.last_notification = self.last_notification.replace(tzinfo=UTC)
|
210
|
-
|
211
|
-
if (self.type == NotificationType.ONCE_A_DAY and self.last_notification
|
212
|
-
and (self.last_notification.day == now.day or self.hour != now.hour)):
|
213
|
-
return False
|
214
|
-
|
215
|
-
if (self.type == NotificationType.ONCE_A_WEEK and self.last_notification
|
216
|
-
and (self.last_notification.day == now.day or (now.hour != self.hour or now.day != self.day))):
|
217
|
-
return False
|
218
|
-
|
219
|
-
return True
|
220
|
-
|
221
|
-
def has_not_notified_leads(self, actual: list[UserLeadModel]) -> bool:
|
222
|
-
if self.type == NotificationType.FEW_MINUTES_BEFORE and self.last_notification:
|
223
|
-
self.last_notification = self.last_notification.replace(tzinfo=UTC)
|
224
|
-
not_notified_leads = [lead for lead in actual if lead.followup_date.replace(tzinfo=UTC) >
|
225
|
-
(self.last_notification + timedelta(minutes=self.minute))]
|
226
|
-
return bool(not_notified_leads)
|
227
|
-
|
228
|
-
return True
|
229
|
-
|
230
201
|
@staticmethod
|
231
202
|
def get_button_name(actual: list[UserLeadModel]) -> str:
|
232
203
|
if len(actual) > 1:
|
@@ -235,7 +206,7 @@ class FollowUpNotification(Notification):
|
|
235
206
|
|
236
207
|
def get_button_url(self, actual: list[UserLeadModel]) -> str:
|
237
208
|
if len(actual) > 1:
|
238
|
-
if self.type == NotificationType.ONCE_A_DAY
|
209
|
+
if self.type == NotificationType.ONCE_A_DAY:
|
239
210
|
return f'{portal_url}/dashboard/calendar?view=day'
|
240
211
|
return f'{portal_url}/dashboard/calendar?view=week'
|
241
212
|
return f'{portal_url}/feed?senderId={actual[0].message.sender_id}&sourceId={actual[0].message.source.source_id}'
|
@@ -247,10 +218,6 @@ class FollowUpNotification(Notification):
|
|
247
218
|
return f'{subject_text} for today'
|
248
219
|
elif self.type == NotificationType.ONCE_A_WEEK:
|
249
220
|
return f'{subject_text} for this week'
|
250
|
-
elif self.type == NotificationType.FEW_MINUTES_BEFORE:
|
251
|
-
return f'{subject_text} for today in {self.minute} minutes'
|
252
|
-
|
253
|
-
return subject_text
|
254
221
|
|
255
222
|
def get_notification_text(self, actual: list[ExtendedUserLeadModel], overdue: list[ExtendedUserLeadModel]) -> str:
|
256
223
|
notification_text = ''
|
@@ -273,18 +240,6 @@ class FollowUpNotification(Notification):
|
|
273
240
|
case _:
|
274
241
|
notification_text = (f'You have planned to send follow-up to {", ".join(names[:3])} '
|
275
242
|
f'and {len(names) - 3} other leads this week.')
|
276
|
-
elif self.type == NotificationType.FEW_MINUTES_BEFORE:
|
277
|
-
match len(actual):
|
278
|
-
case 1:
|
279
|
-
notification_text = (f'You have planned to send follow-up today in '
|
280
|
-
f'{self.minute} minutes to {names[0]}.')
|
281
|
-
case 2 | 3:
|
282
|
-
notification_text = (f'You have planned to send follow-up today in '
|
283
|
-
f'{self.minute} minutes to {", ".join(names)}.')
|
284
|
-
case _:
|
285
|
-
notification_text = (f'You have planned to send follow-up today in '
|
286
|
-
f'{self.minute} minutes to {", ".join(names[:3])} '
|
287
|
-
f'and {len(names) - 3} other leads.')
|
288
243
|
|
289
244
|
return f'{notification_text} Plus you have {len(overdue)} overdue follow-ups.' if overdue else notification_text
|
290
245
|
|
@@ -242,29 +242,10 @@ class UserLeadMongoRepository(BaseMongoRepository):
|
|
242
242
|
'notification_settings': '$user.notification_settings',
|
243
243
|
'subscription_id': "$user.subscription_id",
|
244
244
|
'followup_to': {
|
245
|
-
'$
|
246
|
-
'
|
247
|
-
|
248
|
-
|
249
|
-
'then': this_day
|
250
|
-
},
|
251
|
-
{
|
252
|
-
'case': {'$eq': ['$user.notification_settings.follow_ups.type', 'once_a_week']},
|
253
|
-
'then': after_week
|
254
|
-
},
|
255
|
-
{
|
256
|
-
'case': {'$eq': ['$user.notification_settings.follow_ups.type',
|
257
|
-
'few_minutes_before']},
|
258
|
-
'then': {
|
259
|
-
'$dateSubtract': {
|
260
|
-
'startDate': now,
|
261
|
-
'unit': 'minute',
|
262
|
-
'amount': '$user.notification_settings.follow_ups.minute'
|
263
|
-
}
|
264
|
-
}
|
265
|
-
}
|
266
|
-
],
|
267
|
-
'default': this_day
|
245
|
+
'$cond': {
|
246
|
+
'if': {'$eq': ['$user.notification_settings.follow_ups.type', 'once_a_day']},
|
247
|
+
'then': this_day,
|
248
|
+
'else': after_week
|
268
249
|
}
|
269
250
|
},
|
270
251
|
'followup_date': 1,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/discord_client/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/discord_client/discord_client.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/discord_client/methods.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/__init__.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/slack_client.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_common/slack_client/web_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/bots/dedicated_bot.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/grouped_messages.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/chat/scheduled_message.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/contacts/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/contacts/contact.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/cloud/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/cloud/file.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/discord/user.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/slack/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/slack/timezone.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/slack/user.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/external/user_workspace.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/leads/extended_lead.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/notifications/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/templates/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/templates/template.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/general_settings.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/reset_password.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/subscription.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/user_follow_ups.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user/verification.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user_leads/__init__.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/models/user_leads/user_lead.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/repositories/post/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.648.0 → leadguru_jobs-0.650.0}/lgt_jobs/lgt_data/repositories/post/posts.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|