leadguru-jobs 0.588.0__tar.gz → 0.590.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 (61) hide show
  1. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/chat_history.py +1 -2
  4. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/send_slack_message.py +1 -2
  5. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +6 -10
  6. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/slack_client/web_client.py +12 -11
  7. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/model.py +1 -0
  8. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/MANIFEST.in +0 -0
  9. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/README.md +0 -0
  10. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  11. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  12. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  13. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  14. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  15. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/__init__.py +0 -0
  16. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/assets/images/arrow.png +0 -0
  17. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/assets/images/firework.png +0 -0
  18. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/assets/images/lock.png +0 -0
  19. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/assets/images/logo.png +0 -0
  20. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/assets/images/mail.png +0 -0
  21. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/basejobs.py +0 -0
  22. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/env.py +0 -0
  23. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/__init__.py +0 -0
  24. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/analytics.py +0 -0
  25. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  26. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/connect_sources.py +0 -0
  27. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  28. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
  29. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/mass_message.py +0 -0
  30. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/send_code.py +0 -0
  31. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  32. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/user_balance_update.py +0 -0
  33. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  34. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  35. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  36. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
  37. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  38. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  39. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  40. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  41. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/lgt_logging.py +0 -0
  42. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  43. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  44. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  45. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  46. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  47. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  48. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/analytics.py +0 -0
  49. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/engine.py +0 -0
  50. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/enums.py +0 -0
  51. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  52. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/lgt_data/mongo_repository.py +0 -0
  53. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/main.py +0 -0
  54. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/runner.py +0 -0
  55. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/services/__init__.py +0 -0
  56. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/services/web_client.py +0 -0
  57. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/simple_job.py +0 -0
  58. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/smtp.py +0 -0
  59. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/lgt_jobs/templates/new_message.html +0 -0
  60. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/setup.cfg +0 -0
  61. {leadguru_jobs-0.588.0 → leadguru_jobs-0.590.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.588.0
3
+ Version: 0.590.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.588.0
3
+ Version: 0.590.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -100,8 +100,7 @@ class LoadChatHistoryJob(BaseBackgroundJob, ABC):
100
100
  if not messages:
101
101
  return None
102
102
 
103
- messages = [SlackMessageConvertService.from_slack_response(bot.user_name, m, contact.sender_id,
104
- bot.id, user.id) for m in messages]
103
+ messages = [SlackMessageConvertService.from_slack_response(bot, m, contact.sender_id) for m in messages]
105
104
  new_messages = self._get_new_messages(contact, bot, messages)
106
105
  chat_history = [message.to_dic() for message in new_messages]
107
106
  self.chat_repo.upsert_messages(chat_history)
@@ -54,7 +54,6 @@ class SendSlackMessageJob(BaseBackgroundJob, ABC):
54
54
  message = resp.get('message') if 'message' in resp \
55
55
  else slack_client.conversation_replies(channel_id, resp['file_msg_ts'])['messages'][0]
56
56
 
57
- message_model: ChatMessage = SlackMessageConvertService.from_slack_response(bot.user_name, message,
58
- data.sender_id, bot.id, user.id)
57
+ message_model: ChatMessage = SlackMessageConvertService.from_slack_response(bot, message, data.sender_id)
59
58
  message_model.viewed = True
60
59
  ChatRepository().upsert_messages([message_model.to_dic()])
@@ -179,12 +179,13 @@ class SlackClient:
179
179
  url = f'{self.base_url}{SlackMethods.conversations_replies}?{self.__ts_payload(channel, id)}'
180
180
  return requests.get(url=url, cookies=self.cookies).json()
181
181
 
182
- def post_message(self, channel: str, text: str):
182
+ def post_message(self, channel: str, text: str, thread_ts: str = None):
183
183
  import uuid
184
184
  payload = {
185
185
  'channel': channel,
186
186
  'text': text,
187
- 'client_msg_id': str(uuid.uuid4())
187
+ 'client_msg_id': str(uuid.uuid4()),
188
+ 'thread_ts': thread_ts
188
189
  }
189
190
  url = f'{self.base_url}{SlackMethods.chat_post_message}'
190
191
  return requests.post(url=url, cookies=self.cookies, headers=self.headers, data=payload).json()
@@ -201,17 +202,13 @@ class SlackClient:
201
202
  payload = {'email': email}
202
203
  headers = {'User-Agent': user_agent}
203
204
  response = requests.post(f"{self.base_url}/{SlackMethods.check_email}", params=payload, headers=headers)
204
- if response.status_code != 200:
205
- return False
206
- return response.json()['ok']
205
+ return response.json()['ok'] if response.status_code == 200 else False
207
206
 
208
207
  def confirm_email(self, email: str, user_agent: str, locale: str = 'en-US') -> bool:
209
208
  payload = {'email': email, 'locale': locale}
210
209
  headers = {'User-Agent': user_agent}
211
210
  response = requests.post(f"{self.base_url}/{SlackMethods.confirm_email}", params=payload, headers=headers)
212
- if response.status_code != 200:
213
- return False
214
- return response.json()['ok']
211
+ return response.json()['ok'] if response.status_code == 200 else False
215
212
 
216
213
  def confirm_code(self, email: str, code: str, user_agent: str) -> requests.Response:
217
214
  payload = {'email': email, 'code': code}
@@ -249,8 +246,7 @@ class SlackClient:
249
246
 
250
247
  def test_auth(self):
251
248
  headers = {"Authorization": f"Bearer {self.token}"}
252
- return requests.post(f"{self.base_url}/{SlackMethods.auth_test}", headers=headers,
253
- cookies=self.cookies)
249
+ return requests.post(f"{self.base_url}/{SlackMethods.auth_test}", headers=headers, cookies=self.cookies)
254
250
 
255
251
  def __user_info_payload(self, user):
256
252
  payload = {
@@ -1,30 +1,31 @@
1
1
  from google.cloud import storage
2
2
  from datetime import datetime, timedelta
3
- from lgt_jobs.lgt_data.model import ChatMessage, LeadGuruFile
3
+ from lgt_jobs.lgt_data.model import ChatMessage, LeadGuruFile, DedicatedBotModel
4
4
  from lgt_jobs.lgt_common.slack_client.slack_client import SlackClient
5
5
  from lgt_jobs.lgt_data.mongo_repository import to_object_id
6
6
 
7
7
 
8
8
  class SlackMessageConvertService:
9
9
  @staticmethod
10
- def from_slack_response(bot_name, dic, sender_id, bot_id, user_id) -> ChatMessage:
10
+ def from_slack_response(bot: DedicatedBotModel, message_data: dict, sender_id: str) -> ChatMessage:
11
11
  result = ChatMessage()
12
12
  result.sender_id = sender_id
13
- result.bot_id = bot_id
14
- result.text = dic.get('text', '')
15
- result.user = dic.get('user', '')
16
- result.id = dic.get('ts', '')
17
- result.attachments = dic.get('attachments', [])
13
+ result.bot_id = to_object_id(bot.id)
14
+ result.text = message_data.get('text', '')
15
+ result.user = message_data.get('user', '')
16
+ result.id = message_data.get('ts', '')
17
+ result.attachments = message_data.get('attachments', [])
18
18
  result.files = []
19
- result.user_id = to_object_id(user_id)
20
- if 'files' in dic:
21
- for file in dic.get('files'):
19
+ result.user_id = to_object_id(bot.user_id)
20
+ result.source_id = bot.source.source_id
21
+ if 'files' in message_data:
22
+ for file in message_data.get('files'):
22
23
  if file.get('mode') != "tombstone" and file.get('url_private_download'):
23
24
  leadguru_file = LeadGuruFile()
24
25
  leadguru_file.id = file['id']
25
26
  leadguru_file.content_type = file['mimetype']
26
27
  leadguru_file.file_name = file['name']
27
- leadguru_file.blob_path = f'slack_files/{bot_name}/slack_files/{file["id"]}'
28
+ leadguru_file.blob_path = f'slack_files/{bot.user_name}/slack_files/{file["id"]}'
28
29
  result.files.append(leadguru_file)
29
30
 
30
31
  js_ticks = int(result.id.split('.')[0] + result.id.split('.')[1][3:])
@@ -561,6 +561,7 @@ class ChatMessage:
561
561
  files: list
562
562
  attachments: list[dict] | None
563
563
  created_at: datetime | None
564
+ source_id: str | None
564
565
 
565
566
  class SlackFileModel:
566
567
  def __init__(self):