leadguru-jobs 0.692.0__py3-none-any.whl → 0.694.0__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.692.0
3
+ Version: 0.694.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -17,7 +17,7 @@ Classifier: Intended Audience :: System Administrators
17
17
  Classifier: Environment :: Console
18
18
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
19
  Classifier: Topic :: Internet
20
- Requires-Dist: cachetools ==3.1.0
20
+ Requires-Dist: cachetools==3.1.0
21
21
  Requires-Dist: pydantic
22
22
  Requires-Dist: wheel
23
23
  Requires-Dist: setuptools
@@ -37,4 +37,3 @@ Requires-Dist: aiohttp
37
37
  Requires-Dist: nameparser
38
38
  Requires-Dist: loguru
39
39
  Requires-Dist: redmail
40
-
@@ -1,4 +1,4 @@
1
- lgt_jobs/__init__.py,sha256=VepHCuCW4uUqx6Nj5gKdZeJ9IYDSyhlD70FvpnKNmPk,2316
1
+ lgt_jobs/__init__.py,sha256=fQ97ZFeVtbOgODPdB26x7ku45AQPQ8ixeziiCAjNYZM,2451
2
2
  lgt_jobs/basejobs.py,sha256=LPEclvY6fIG17YMGy9pRK0Q58n62gkI5W1BTK6R2p-c,1234
3
3
  lgt_jobs/env.py,sha256=cRO03GGvstUjBsv3uYO-iakrOvAk_ZWUP_fnmf21iZQ,789
4
4
  lgt_jobs/main.py,sha256=cK_nkBtJHnUNDbba1WZotqPtI_6OWxiYQkAgco9OAmE,1539
@@ -14,9 +14,10 @@ lgt_jobs/assets/images/mail.png,sha256=eORzQcAMkFr7DjgtABVhJ_zFuXgO7OXv78lLF4b39
14
14
  lgt_jobs/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  lgt_jobs/jobs/analytics.py,sha256=IIsWt4A1qUw3w-S-8W16uKY1FRVWfXXA41_mu4uCNiM,979
16
16
  lgt_jobs/jobs/bot_stats_update.py,sha256=3gq1Ilj_RHddYeSny_238ITs7YIfCf7d4BmfYU8PKlo,8177
17
+ lgt_jobs/jobs/bots_killer.py,sha256=s2f7kal4vAMJd9YaMQ1X3FkCrLWCKNb-bWeI9RZ1Oco,506
17
18
  lgt_jobs/jobs/chat_history.py,sha256=rj337uHT2XmyDu3oMPbnCBxSsRn4roxDNS0hsbvoI7I,5040
18
19
  lgt_jobs/jobs/connect_sources.py,sha256=vOKu2Q9cmQsj4VMVzOoEJkD1wzE9XurbIChx35rES8I,4957
19
- lgt_jobs/jobs/inbox_leads.py,sha256=6UhPp9AfSAGb3elFDT6jm7j2HZ9jPOPngsUj-hUKAYw,4867
20
+ lgt_jobs/jobs/inbox_leads.py,sha256=S6sGXePmWDsT8FvtFOBi3BJALtaDlF6aaQZsHntzHm0,4958
20
21
  lgt_jobs/jobs/load_slack_people.py,sha256=SaDpp3JCNVKcyZ2WSJ9TyP5lUUZJnGlPUyWdRNzfMkU,4183
21
22
  lgt_jobs/jobs/load_slack_users.py,sha256=d_Hy-MM86OqWdsaLX06n-ovNL6whY1xQz6sv_Ls3C4I,1404
22
23
  lgt_jobs/jobs/mass_message.py,sha256=1mFcBlL2MhzLbj5yrd_NyJc7TXDWCcROAzGDnr0miMU,2035
@@ -58,7 +59,7 @@ lgt_jobs/lgt_data/models/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
58
59
  lgt_jobs/lgt_data/models/chat/file.py,sha256=agvvPxkt9jsrxLmlDAi6EnirkiHy7u0u2qN6X0YaMAE,183
59
60
  lgt_jobs/lgt_data/models/chat/grouped_messages.py,sha256=Dcajejrx1HIu09ndlt5g3oGz9bueNolcqI-s9Xy1eak,394
60
61
  lgt_jobs/lgt_data/models/chat/message.py,sha256=rSjgK_MQ_FcYq6zStPTKsIemuIway9XKgOCc2OftgR4,2493
61
- lgt_jobs/lgt_data/models/chat/request.py,sha256=CdgsZdrwZTEBKBGMtSYh0MwRsiLAwbaH54foo8P2DRQ,515
62
+ lgt_jobs/lgt_data/models/chat/request.py,sha256=mEEy-EmnadGy6ZjhR0Fu1j8w5qYZvDy4oc1gn1UZDKQ,661
62
63
  lgt_jobs/lgt_data/models/chat/scheduled_message.py,sha256=vv5c_Fe6L9eDeV9LHrdPCU2p-VQ0v_YsZDMBdXvFQAA,268
63
64
  lgt_jobs/lgt_data/models/contacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
65
  lgt_jobs/lgt_data/models/contacts/contact.py,sha256=m_eQkmkEDuvPBh50Oc6ujD5NCsjTFpxQ95aThKtn0Hs,644
@@ -104,9 +105,10 @@ lgt_jobs/lgt_data/repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
104
105
  lgt_jobs/lgt_data/repositories/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
106
  lgt_jobs/lgt_data/repositories/post/posts.py,sha256=ZA19L-CYdxLhlapyMQtSJzP3QMUlHq9UEgW3ab86aDs,1024
106
107
  lgt_jobs/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
+ lgt_jobs/services/k8_manager.py,sha256=bXpka9psIQ5UJ6QG_e4xolmE_3gtmNrzzZeL03bJ62I,995
107
109
  lgt_jobs/services/web_client.py,sha256=oMyWJxwGeIe3f40fPT7xcisjDg3BhA3Ipf8dr1jVT-Y,1549
108
110
  lgt_jobs/templates/new_message.html,sha256=dZl8UmdAOOMq4nidvAgMFroSrTV7Pw0RWt2yLp_2idg,6989
109
- leadguru_jobs-0.692.0.dist-info/METADATA,sha256=MryU6Xz8TH9h3srWm6vchXspthp8KK1nQX51K7CKTvU,1319
110
- leadguru_jobs-0.692.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
111
- leadguru_jobs-0.692.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
112
- leadguru_jobs-0.692.0.dist-info/RECORD,,
111
+ leadguru_jobs-0.694.0.dist-info/METADATA,sha256=uIHeOzJvN9dvTL6IQZ9_7EPJApMG_kM3K2jZa9_EiqY,1317
112
+ leadguru_jobs-0.694.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
113
+ leadguru_jobs-0.694.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
114
+ leadguru_jobs-0.694.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
lgt_jobs/__init__.py CHANGED
@@ -15,6 +15,7 @@ from .runner import (BackgroundJobRunner)
15
15
  from .simple_job import (SimpleTestJob, SimpleTestJobData)
16
16
  from .jobs.load_slack_people import (LoadSlackPeopleJob, LoadSlackPeopleJobData)
17
17
  from .jobs.load_slack_users import LoadSlackUsersJob, LoadSlackUsersJobData
18
+ from .jobs.bots_killer import BotsKillerJob, BotsKillerData
18
19
 
19
20
  jobs_map = {
20
21
  "SimpleTestJob": SimpleTestJob,
@@ -27,6 +28,7 @@ jobs_map = {
27
28
  "SendMassMessageSlackChannelJob": SendMassMessageSlackChannelJob,
28
29
  "ConnectSourceJob": ConnectSourceJob,
29
30
  "LoadSlackPeopleJob": LoadSlackPeopleJob,
31
+ "BotsKillerJob": BotsKillerJob,
30
32
  "LoadSlackUsersJob": LoadSlackUsersJob
31
33
  }
32
34
  __all__ = [
@@ -43,6 +45,7 @@ __all__ = [
43
45
  ConnectSourceJob,
44
46
  LoadSlackPeopleJob,
45
47
  LoadSlackUsersJob,
48
+ BotsKillerJob,
46
49
 
47
50
  # module classes
48
51
  BackgroundJobRunner,
@@ -60,6 +63,7 @@ __all__ = [
60
63
  ConnectSourceJobData,
61
64
  LoadSlackPeopleJobData,
62
65
  LoadSlackUsersJobData,
66
+ BotsKillerData,
63
67
  # mapping
64
68
  jobs_map
65
69
  ]
@@ -0,0 +1,21 @@
1
+ from abc import ABC
2
+ from pydantic import BaseModel
3
+ from lgt_jobs.basejobs import BaseBackgroundJob, BaseBackgroundJobData
4
+ from lgt_jobs.services.k8_manager import K8Manager
5
+
6
+ """
7
+ Kill bots
8
+ """
9
+
10
+
11
+ class BotsKillerData(BaseBackgroundJobData, BaseModel):
12
+ environment: str
13
+
14
+
15
+ class BotsKillerJob(BaseBackgroundJob, ABC):
16
+ @property
17
+ def job_data_type(self) -> type:
18
+ return BotsKillerData
19
+
20
+ def exec(self, data: BotsKillerData):
21
+ K8Manager().delete_bots(f'leadguru-{data.environment}')
@@ -82,6 +82,8 @@ class InboxLeadsJob(BaseBackgroundJob, ABC):
82
82
  InboxLeadsJob.create_people(slack_profile, dedicated_bot)
83
83
 
84
84
  message_request = MessageRequest.from_slack_response(dedicated_bot, messages[0], sender_id)
85
+ if message_request.is_system_message:
86
+ continue
85
87
  sender_request = requests_repo.find(user.id, sender_id)
86
88
  if not sender_request:
87
89
  log.info(f"[InboxLeadsJob]: New message request from {sender_id} for user: {user.email}")
@@ -13,3 +13,7 @@ class MessageRequest(ChatMessage):
13
13
  def from_slack_response(cls, bot: DedicatedBotModel, message_data: dict, sender_id: str):
14
14
  message = super().from_slack_response(bot, message_data, sender_id)
15
15
  return MessageRequest.from_dic(message.to_dic())
16
+
17
+ @property
18
+ def is_system_message(self) -> bool:
19
+ return "joined Slack" in self.text or "has accepted your invitation" in self.text
@@ -0,0 +1,28 @@
1
+ import json
2
+ import logging as log
3
+ import os
4
+
5
+ from kubernetes import config
6
+ from kubernetes.client.api.core_v1_api import CoreV1Api
7
+ from kubernetes.client.rest import ApiException
8
+
9
+
10
+ class K8Manager:
11
+
12
+ def __init__(self):
13
+ with open(os.environ.get('K8_CONFIG'), 'r') as k8_config:
14
+ config.load_kube_config_from_dict(json.loads(k8_config.read()))
15
+
16
+ @staticmethod
17
+ def delete_bots(namespace: str):
18
+ api_instance = CoreV1Api()
19
+ pod_names_to_delete = ['lgt-slack-bots-v2', 'lgt-discord-bots', 'lgt-bg-worker']
20
+ pods = api_instance.list_namespaced_pod(namespace)
21
+ pods_to_delete = [pod.metadata.name for pod in pods.items for name in pod_names_to_delete
22
+ if name in pod.metadata.name]
23
+ for pod in pods_to_delete:
24
+ try:
25
+ api_instance.delete_namespaced_pod(pod, namespace)
26
+ log.info(f'Killed pod: {pod}')
27
+ except ApiException as e:
28
+ log.error(str(e))