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.
- {leadguru_jobs-0.692.0.dist-info → leadguru_jobs-0.694.0.dist-info}/METADATA +2 -3
- {leadguru_jobs-0.692.0.dist-info → leadguru_jobs-0.694.0.dist-info}/RECORD +9 -7
- {leadguru_jobs-0.692.0.dist-info → leadguru_jobs-0.694.0.dist-info}/WHEEL +1 -1
- lgt_jobs/__init__.py +4 -0
- lgt_jobs/jobs/bots_killer.py +21 -0
- lgt_jobs/jobs/inbox_leads.py +2 -0
- lgt_jobs/lgt_data/models/chat/request.py +4 -0
- lgt_jobs/services/k8_manager.py +28 -0
- {leadguru_jobs-0.692.0.dist-info → leadguru_jobs-0.694.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: leadguru_jobs
|
3
|
-
Version: 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
|
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=
|
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=
|
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=
|
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.
|
110
|
-
leadguru_jobs-0.
|
111
|
-
leadguru_jobs-0.
|
112
|
-
leadguru_jobs-0.
|
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,,
|
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}')
|
lgt_jobs/jobs/inbox_leads.py
CHANGED
@@ -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))
|
File without changes
|