leadguru-jobs 0.560.0__tar.gz → 0.562.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.560.0 → leadguru_jobs-0.562.0}/PKG-INFO +1 -1
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
- leadguru_jobs-0.562.0/lgt_jobs/jobs/connect_sources.py +90 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +4 -3
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/enums.py +1 -0
- leadguru_jobs-0.560.0/lgt_jobs/jobs/connect_sources.py +0 -82
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/MANIFEST.in +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/README.md +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/leadguru_jobs.egg-info/requires.txt +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/assets/images/arrow.png +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/assets/images/firework.png +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/assets/images/lock.png +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/assets/images/logo.png +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/assets/images/mail.png +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/basejobs.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/env.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/analytics.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/chat_history.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/mass_message.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/send_code.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/user_balance_update.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/helpers.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/lgt_logging.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/analytics.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/engine.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/helpers.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/model.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_data/mongo_repository.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/main.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/runner.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/services/__init__.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/services/web_client.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/simple_job.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/smtp.py +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/templates/new_message.html +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/setup.cfg +0 -0
- {leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/setup.py +0 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
from abc import ABC
|
2
|
+
from typing import List
|
3
|
+
import logging as log
|
4
|
+
from lgt_jobs.basejobs import BaseBackgroundJob, BaseBackgroundJobData
|
5
|
+
from lgt_jobs.jobs.bot_stats_update import BotStatsUpdateJob, BotStatsUpdateJobData
|
6
|
+
from lgt_jobs.runner import BackgroundJobRunner
|
7
|
+
from lgt_jobs.lgt_data.engine import UserTrackAction
|
8
|
+
from lgt_jobs.lgt_data.enums import SourceType, UserAction, StatusConnection
|
9
|
+
from lgt_jobs.lgt_data.model import BaseModel, DedicatedBotModel, Server, Source, SlackUser
|
10
|
+
from lgt_jobs.lgt_data.mongo_repository import DedicatedBotRepository, UserMongoRepository
|
11
|
+
|
12
|
+
|
13
|
+
class ConnectSourceJobData(BaseBackgroundJobData, BaseModel):
|
14
|
+
slack_email: str
|
15
|
+
sources_ids: List[str]
|
16
|
+
action_user_email: str
|
17
|
+
user_email: str
|
18
|
+
|
19
|
+
|
20
|
+
class ConnectSourceJob(BaseBackgroundJob, ABC):
|
21
|
+
@property
|
22
|
+
def job_data_type(self) -> type:
|
23
|
+
return ConnectSourceJobData
|
24
|
+
|
25
|
+
def exec(self, data: ConnectSourceJobData):
|
26
|
+
users_repository = UserMongoRepository()
|
27
|
+
bots_repository = DedicatedBotRepository()
|
28
|
+
action_user = users_repository.get_by_email(data.action_user_email)
|
29
|
+
user = users_repository.get_by_email(data.user_email)
|
30
|
+
if not action_user:
|
31
|
+
log.info(f'[ConnectSourceJobData]: Unable to find user with email: {data.action_user_email}')
|
32
|
+
return
|
33
|
+
|
34
|
+
slack_user: SlackUser = action_user.get_slack_user(data.slack_email)
|
35
|
+
if not slack_user:
|
36
|
+
log.info(f"[ConnectSourceJobData]: You have no credentials for {data.slack_email}. Try to login to Slack.")
|
37
|
+
slack_user.status = StatusConnection.COMPLETE
|
38
|
+
users_repository.set(action_user.id, slack_users=[user.to_dic() for user in action_user.slack_users])
|
39
|
+
return
|
40
|
+
bots = []
|
41
|
+
for ws in slack_user.workspaces:
|
42
|
+
try:
|
43
|
+
if ws.id in data.sources_ids:
|
44
|
+
active_bot = bots_repository.get_one(user_id=action_user.id, active_server_id=ws.id)
|
45
|
+
bot = bots_repository.get_one(user_id=action_user.id, server_id=ws.id, include_deleted=True,
|
46
|
+
user_name=data.slack_email)
|
47
|
+
if active_bot:
|
48
|
+
continue
|
49
|
+
if not bot:
|
50
|
+
bot = DedicatedBotModel()
|
51
|
+
bot.servers = [Server()]
|
52
|
+
|
53
|
+
bot.user_name = slack_user.email
|
54
|
+
bot.slack_url = ws.url
|
55
|
+
bot.user_id = action_user.id
|
56
|
+
bot.created_by = user.email
|
57
|
+
bot.registration_link = ws.url
|
58
|
+
bot.token = ws.token
|
59
|
+
bot.cookies = slack_user.cookies
|
60
|
+
bot.deleted = False
|
61
|
+
bot.paused = False
|
62
|
+
bot.invalid_creds = False
|
63
|
+
bot.banned = False
|
64
|
+
bot.two_factor_required = ws.two_factor_required
|
65
|
+
source = Source()
|
66
|
+
|
67
|
+
for server in bot.servers:
|
68
|
+
server.id = ws.id
|
69
|
+
server.name = ws.domain
|
70
|
+
server.deleted = False
|
71
|
+
server.active = True
|
72
|
+
server.icon = ws.icon
|
73
|
+
|
74
|
+
source.source_id = ws.id
|
75
|
+
source.source_name = ws.domain
|
76
|
+
bot.type = source.source_type = SourceType.SLACK
|
77
|
+
bot.icon = ws.icon
|
78
|
+
bot.source = source
|
79
|
+
bots_repository.add_or_update(bot)
|
80
|
+
UserTrackAction.track(action_user.id, UserAction.START_SOURCE, ws.id)
|
81
|
+
bot = bots_repository.get_one(user_id=action_user.id, server_id=ws.id, user_name=slack_user.email)
|
82
|
+
bots.append(bot)
|
83
|
+
BackgroundJobRunner.submit(BotStatsUpdateJob, BotStatsUpdateJobData(bot_id=str(bot.id)))
|
84
|
+
except Exception:
|
85
|
+
import traceback
|
86
|
+
log.exception(f"[ConnectSourceJobData]: Error to connect {ws.id}")
|
87
|
+
traceback.print_exc()
|
88
|
+
slack_user.status = StatusConnection.COMPLETE
|
89
|
+
users_repository.set(action_user.id, slack_users=[user.to_dic() for user in action_user.slack_users])
|
90
|
+
return bots
|
{leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/slack_client/slack_client.py
RENAMED
@@ -54,13 +54,14 @@ class SlackClient:
|
|
54
54
|
|
55
55
|
def users_list(self, cursor=None, limit: int = 1000):
|
56
56
|
url = f'{self.base_url}{SlackMethods.users_list}'
|
57
|
+
payload = {}
|
57
58
|
if cursor:
|
58
|
-
|
59
|
+
payload['cursor'] = cursor
|
59
60
|
|
60
61
|
if limit:
|
61
|
-
|
62
|
+
payload['limit'] = limit
|
62
63
|
|
63
|
-
return requests.get(url=url, cookies=self.cookies, headers=self.headers).json()
|
64
|
+
return requests.get(url=url, cookies=self.cookies, headers=self.headers, params=payload).json()
|
64
65
|
|
65
66
|
def upload_file(self, file, file_name):
|
66
67
|
payload = {"content": file, "filename": file_name}
|
@@ -1,82 +0,0 @@
|
|
1
|
-
from abc import ABC
|
2
|
-
from typing import List
|
3
|
-
import logging as log
|
4
|
-
from lgt_jobs.basejobs import BaseBackgroundJob, BaseBackgroundJobData
|
5
|
-
from lgt_jobs.jobs.bot_stats_update import BotStatsUpdateJob, BotStatsUpdateJobData
|
6
|
-
from lgt_jobs.runner import BackgroundJobRunner
|
7
|
-
from lgt_jobs.lgt_data.engine import UserTrackAction
|
8
|
-
from lgt_jobs.lgt_data.enums import SourceType, UserAction, StatusConnection
|
9
|
-
from lgt_jobs.lgt_data.model import BaseModel, DedicatedBotModel, Server, Source, SlackUser
|
10
|
-
from lgt_jobs.lgt_data.mongo_repository import DedicatedBotRepository, UserMongoRepository
|
11
|
-
|
12
|
-
|
13
|
-
class ConnectSourceJobData(BaseBackgroundJobData, BaseModel):
|
14
|
-
slack_email: str
|
15
|
-
sources_ids: List[str]
|
16
|
-
action_user_email: str
|
17
|
-
user_email: str
|
18
|
-
|
19
|
-
|
20
|
-
class ConnectSourceJob(BaseBackgroundJob, ABC):
|
21
|
-
@property
|
22
|
-
def job_data_type(self) -> type:
|
23
|
-
return ConnectSourceJobData
|
24
|
-
|
25
|
-
def exec(self, data: ConnectSourceJobData):
|
26
|
-
users_repository = UserMongoRepository()
|
27
|
-
bots_repository = DedicatedBotRepository()
|
28
|
-
action_user = users_repository.get_by_email(data.action_user_email)
|
29
|
-
user = users_repository.get_by_email(data.user_email)
|
30
|
-
if not action_user:
|
31
|
-
log.info(f'Unable to find user with email: {data.action_user_email}')
|
32
|
-
return
|
33
|
-
|
34
|
-
slack_user: SlackUser = action_user.get_slack_user(data.slack_email)
|
35
|
-
if not slack_user:
|
36
|
-
log.info(f"You have no credentials for {data.slack_email}. Try to login to Slack.")
|
37
|
-
bots = []
|
38
|
-
for ws in slack_user.workspaces:
|
39
|
-
if ws.id in data.sources_ids:
|
40
|
-
active_bot = bots_repository.get_one(user_id=action_user.id, active_server_id=ws.id)
|
41
|
-
bot = bots_repository.get_one(user_id=action_user.id, server_id=ws.id, include_deleted=True,
|
42
|
-
user_name=data.slack_email)
|
43
|
-
if active_bot:
|
44
|
-
continue
|
45
|
-
if not bot:
|
46
|
-
bot = DedicatedBotModel()
|
47
|
-
bot.servers = [Server()]
|
48
|
-
|
49
|
-
bot.user_name = slack_user.email
|
50
|
-
bot.slack_url = ws.url
|
51
|
-
bot.user_id = action_user.id
|
52
|
-
bot.created_by = user.email
|
53
|
-
bot.registration_link = ws.url
|
54
|
-
bot.token = ws.token
|
55
|
-
bot.cookies = slack_user.cookies
|
56
|
-
bot.deleted = False
|
57
|
-
bot.paused = False
|
58
|
-
bot.invalid_creds = False
|
59
|
-
bot.banned = False
|
60
|
-
bot.two_factor_required = ws.two_factor_required
|
61
|
-
source = Source()
|
62
|
-
|
63
|
-
for server in bot.servers:
|
64
|
-
server.id = ws.id
|
65
|
-
server.name = ws.domain
|
66
|
-
server.deleted = False
|
67
|
-
server.active = True
|
68
|
-
server.icon = ws.icon
|
69
|
-
|
70
|
-
source.source_id = ws.id
|
71
|
-
source.source_name = ws.domain
|
72
|
-
bot.type = source.source_type = SourceType.SLACK
|
73
|
-
bot.icon = ws.icon
|
74
|
-
bot.source = source
|
75
|
-
bots_repository.add_or_update(bot)
|
76
|
-
UserTrackAction.track(action_user.id, UserAction.START_SOURCE, ws.id)
|
77
|
-
bot = bots_repository.get_one(user_id=action_user.id, server_id=ws.id, user_name=slack_user.email)
|
78
|
-
bots.append(bot)
|
79
|
-
BackgroundJobRunner.submit(BotStatsUpdateJob, BotStatsUpdateJobData(bot_id=str(bot.id)))
|
80
|
-
slack_user.status = StatusConnection.COMPLETE
|
81
|
-
users_repository.set(action_user.id, slack_users=[user.to_dic() for user in action_user.slack_users])
|
82
|
-
return bots
|
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.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/discord_client/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/discord_client/discord_client.py
RENAMED
File without changes
|
{leadguru_jobs-0.560.0 → leadguru_jobs-0.562.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
|
File without changes
|
{leadguru_jobs-0.560.0 → leadguru_jobs-0.562.0}/lgt_jobs/lgt_common/slack_client/__init__.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.560.0 → leadguru_jobs-0.562.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
|
File without changes
|
File without changes
|