leadguru-jobs 0.639.0__tar.gz → 0.641.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.639.0 → leadguru_jobs-0.641.0}/PKG-INFO +1 -1
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
- leadguru_jobs-0.641.0/leadguru_jobs.egg-info/SOURCES.txt +115 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/boards/board.py +39 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/boards/status.py +14 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/bots/base_bot.py +44 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/bots/bot_info.py +33 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/bots/dedicated_bot.py +90 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/chat/file.py +8 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/chat/grouped_messages.py +17 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/chat/message.py +85 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/chat/request.py +15 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/chat/scheduled_message.py +14 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/contacts/contact.py +22 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/cloud/file.py +18 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/discord/user.py +45 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/slack/timezone.py +8 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/slack/user.py +43 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/external/user_workspace.py +32 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/leads/config.py +13 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/leads/extended_lead.py +46 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/leads/lead.py +48 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/leads/message.py +51 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/notifications/notification.py +248 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/notifications/notification_settings.py +52 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/people/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/people/people.py +75 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/people/profile.py +13 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/post/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/post/message.py +18 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/post/post.py +15 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/templates/template.py +12 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/feature.py +10 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/general_settings.py +9 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/reset_password.py +7 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/subscription.py +22 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/user.py +95 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/user_follow_ups.py +20 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/user_page.py +19 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user/verification.py +12 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +41 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/user_leads/user_lead.py +33 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/repositories/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
- leadguru_jobs-0.641.0/lgt_jobs/lgt_data/repositories/post/posts.py +28 -0
- leadguru_jobs-0.641.0/lgt_jobs/services/__init__.py +0 -0
- leadguru_jobs-0.639.0/leadguru_jobs.egg-info/SOURCES.txt +0 -60
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/MANIFEST.in +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/README.md +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/leadguru_jobs.egg-info/requires.txt +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/assets/images/arrow.png +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/assets/images/firework.png +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/assets/images/lock.png +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/assets/images/logo.png +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/assets/images/mail.png +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/basejobs.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/env.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/analytics.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/chat_history.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/connect_sources.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/mass_message.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/send_code.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/helpers.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/analytics.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/engine.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/enums.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/helpers.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/model.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/models/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/models/base.py +0 -0
- {leadguru_jobs-0.639.0/lgt_jobs/services → leadguru_jobs-0.641.0/lgt_jobs/lgt_data/models/boards}/__init__.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/lgt_data/mongo_repository.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/main.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/runner.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/services/web_client.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/simple_job.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/smtp.py +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/lgt_jobs/templates/new_message.html +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/setup.cfg +0 -0
- {leadguru_jobs-0.639.0 → leadguru_jobs-0.641.0}/setup.py +0 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
MANIFEST.in
|
2
|
+
README.md
|
3
|
+
setup.cfg
|
4
|
+
setup.py
|
5
|
+
leadguru_jobs.egg-info/PKG-INFO
|
6
|
+
leadguru_jobs.egg-info/SOURCES.txt
|
7
|
+
leadguru_jobs.egg-info/dependency_links.txt
|
8
|
+
leadguru_jobs.egg-info/not-zip-safe
|
9
|
+
leadguru_jobs.egg-info/requires.txt
|
10
|
+
leadguru_jobs.egg-info/top_level.txt
|
11
|
+
lgt_jobs/__init__.py
|
12
|
+
lgt_jobs/basejobs.py
|
13
|
+
lgt_jobs/env.py
|
14
|
+
lgt_jobs/main.py
|
15
|
+
lgt_jobs/runner.py
|
16
|
+
lgt_jobs/simple_job.py
|
17
|
+
lgt_jobs/smtp.py
|
18
|
+
lgt_jobs/assets/images/arrow.png
|
19
|
+
lgt_jobs/assets/images/firework.png
|
20
|
+
lgt_jobs/assets/images/lock.png
|
21
|
+
lgt_jobs/assets/images/logo.png
|
22
|
+
lgt_jobs/assets/images/mail.png
|
23
|
+
lgt_jobs/jobs/__init__.py
|
24
|
+
lgt_jobs/jobs/analytics.py
|
25
|
+
lgt_jobs/jobs/bot_stats_update.py
|
26
|
+
lgt_jobs/jobs/chat_history.py
|
27
|
+
lgt_jobs/jobs/connect_sources.py
|
28
|
+
lgt_jobs/jobs/inbox_leads.py
|
29
|
+
lgt_jobs/jobs/load_slack_people.py
|
30
|
+
lgt_jobs/jobs/mass_message.py
|
31
|
+
lgt_jobs/jobs/send_code.py
|
32
|
+
lgt_jobs/jobs/send_slack_message.py
|
33
|
+
lgt_jobs/jobs/update_slack_profile.py
|
34
|
+
lgt_jobs/jobs/workspace_connect.py
|
35
|
+
lgt_jobs/lgt_common/__init__.py
|
36
|
+
lgt_jobs/lgt_common/helpers.py
|
37
|
+
lgt_jobs/lgt_common/discord_client/__init__.py
|
38
|
+
lgt_jobs/lgt_common/discord_client/discord_client.py
|
39
|
+
lgt_jobs/lgt_common/discord_client/methods.py
|
40
|
+
lgt_jobs/lgt_common/enums/__init__.py
|
41
|
+
lgt_jobs/lgt_common/enums/slack_errors.py
|
42
|
+
lgt_jobs/lgt_common/pubsub/__init__.py
|
43
|
+
lgt_jobs/lgt_common/pubsub/messages.py
|
44
|
+
lgt_jobs/lgt_common/pubsub/pubsubfactory.py
|
45
|
+
lgt_jobs/lgt_common/slack_client/__init__.py
|
46
|
+
lgt_jobs/lgt_common/slack_client/methods.py
|
47
|
+
lgt_jobs/lgt_common/slack_client/slack_client.py
|
48
|
+
lgt_jobs/lgt_common/slack_client/web_client.py
|
49
|
+
lgt_jobs/lgt_data/__init__.py
|
50
|
+
lgt_jobs/lgt_data/analytics.py
|
51
|
+
lgt_jobs/lgt_data/engine.py
|
52
|
+
lgt_jobs/lgt_data/enums.py
|
53
|
+
lgt_jobs/lgt_data/helpers.py
|
54
|
+
lgt_jobs/lgt_data/model.py
|
55
|
+
lgt_jobs/lgt_data/mongo_repository.py
|
56
|
+
lgt_jobs/lgt_data/models/__init__.py
|
57
|
+
lgt_jobs/lgt_data/models/base.py
|
58
|
+
lgt_jobs/lgt_data/models/boards/__init__.py
|
59
|
+
lgt_jobs/lgt_data/models/boards/board.py
|
60
|
+
lgt_jobs/lgt_data/models/boards/status.py
|
61
|
+
lgt_jobs/lgt_data/models/bots/__init__.py
|
62
|
+
lgt_jobs/lgt_data/models/bots/base_bot.py
|
63
|
+
lgt_jobs/lgt_data/models/bots/bot_info.py
|
64
|
+
lgt_jobs/lgt_data/models/bots/dedicated_bot.py
|
65
|
+
lgt_jobs/lgt_data/models/chat/__init__.py
|
66
|
+
lgt_jobs/lgt_data/models/chat/file.py
|
67
|
+
lgt_jobs/lgt_data/models/chat/grouped_messages.py
|
68
|
+
lgt_jobs/lgt_data/models/chat/message.py
|
69
|
+
lgt_jobs/lgt_data/models/chat/request.py
|
70
|
+
lgt_jobs/lgt_data/models/chat/scheduled_message.py
|
71
|
+
lgt_jobs/lgt_data/models/contacts/__init__.py
|
72
|
+
lgt_jobs/lgt_data/models/contacts/contact.py
|
73
|
+
lgt_jobs/lgt_data/models/external/__init__.py
|
74
|
+
lgt_jobs/lgt_data/models/external/user_workspace.py
|
75
|
+
lgt_jobs/lgt_data/models/external/cloud/__init__.py
|
76
|
+
lgt_jobs/lgt_data/models/external/cloud/file.py
|
77
|
+
lgt_jobs/lgt_data/models/external/discord/__init__.py
|
78
|
+
lgt_jobs/lgt_data/models/external/discord/user.py
|
79
|
+
lgt_jobs/lgt_data/models/external/slack/__init__.py
|
80
|
+
lgt_jobs/lgt_data/models/external/slack/timezone.py
|
81
|
+
lgt_jobs/lgt_data/models/external/slack/user.py
|
82
|
+
lgt_jobs/lgt_data/models/leads/__init__.py
|
83
|
+
lgt_jobs/lgt_data/models/leads/config.py
|
84
|
+
lgt_jobs/lgt_data/models/leads/extended_lead.py
|
85
|
+
lgt_jobs/lgt_data/models/leads/lead.py
|
86
|
+
lgt_jobs/lgt_data/models/leads/message.py
|
87
|
+
lgt_jobs/lgt_data/models/notifications/__init__.py
|
88
|
+
lgt_jobs/lgt_data/models/notifications/notification.py
|
89
|
+
lgt_jobs/lgt_data/models/notifications/notification_settings.py
|
90
|
+
lgt_jobs/lgt_data/models/people/__init__.py
|
91
|
+
lgt_jobs/lgt_data/models/people/people.py
|
92
|
+
lgt_jobs/lgt_data/models/people/profile.py
|
93
|
+
lgt_jobs/lgt_data/models/post/__init__.py
|
94
|
+
lgt_jobs/lgt_data/models/post/message.py
|
95
|
+
lgt_jobs/lgt_data/models/post/post.py
|
96
|
+
lgt_jobs/lgt_data/models/templates/__init__.py
|
97
|
+
lgt_jobs/lgt_data/models/templates/template.py
|
98
|
+
lgt_jobs/lgt_data/models/user/__init__.py
|
99
|
+
lgt_jobs/lgt_data/models/user/feature.py
|
100
|
+
lgt_jobs/lgt_data/models/user/general_settings.py
|
101
|
+
lgt_jobs/lgt_data/models/user/reset_password.py
|
102
|
+
lgt_jobs/lgt_data/models/user/subscription.py
|
103
|
+
lgt_jobs/lgt_data/models/user/user.py
|
104
|
+
lgt_jobs/lgt_data/models/user/user_follow_ups.py
|
105
|
+
lgt_jobs/lgt_data/models/user/user_page.py
|
106
|
+
lgt_jobs/lgt_data/models/user/verification.py
|
107
|
+
lgt_jobs/lgt_data/models/user_leads/__init__.py
|
108
|
+
lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py
|
109
|
+
lgt_jobs/lgt_data/models/user_leads/user_lead.py
|
110
|
+
lgt_jobs/lgt_data/repositories/__init__.py
|
111
|
+
lgt_jobs/lgt_data/repositories/post/__init__.py
|
112
|
+
lgt_jobs/lgt_data/repositories/post/posts.py
|
113
|
+
lgt_jobs/services/__init__.py
|
114
|
+
lgt_jobs/services/web_client.py
|
115
|
+
lgt_jobs/templates/new_message.html
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import copy
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
from lgt_jobs.lgt_data.models.base import BaseModel
|
5
|
+
from lgt_jobs.lgt_data.models.boards.status import BoardedStatus
|
6
|
+
|
7
|
+
|
8
|
+
class BoardModel(BaseModel):
|
9
|
+
pass
|
10
|
+
|
11
|
+
def __init__(self):
|
12
|
+
super().__init__()
|
13
|
+
self.name = None
|
14
|
+
self.user_id = None
|
15
|
+
self.statuses: List[BoardedStatus] = []
|
16
|
+
self.is_primary = None
|
17
|
+
self.default = False
|
18
|
+
|
19
|
+
@classmethod
|
20
|
+
def from_dic(cls, dic: dict):
|
21
|
+
if not dic:
|
22
|
+
return None
|
23
|
+
|
24
|
+
model = BoardModel()
|
25
|
+
for k, v in dic.items():
|
26
|
+
setattr(model, k, v)
|
27
|
+
|
28
|
+
model.id = dic.get('_id')
|
29
|
+
model.statuses = [BoardedStatus.from_dic(status) for status in dic.get('statuses', [])]
|
30
|
+
return model
|
31
|
+
|
32
|
+
def to_dic(self):
|
33
|
+
result = copy.deepcopy(self.__dict__)
|
34
|
+
result["statuses"] = [BoardedStatus.to_dic(status) for status in self.statuses]
|
35
|
+
|
36
|
+
for status in result['statuses']:
|
37
|
+
status['board_id'] = result['id']
|
38
|
+
|
39
|
+
return result
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from lgt_jobs.lgt_data.models.base import DictionaryModel
|
2
|
+
|
3
|
+
|
4
|
+
class BoardedStatus(DictionaryModel):
|
5
|
+
pass
|
6
|
+
|
7
|
+
def __init__(self):
|
8
|
+
self.id = None
|
9
|
+
self.name = None
|
10
|
+
self.order = 0
|
11
|
+
self.is_primary = False
|
12
|
+
self.default = False
|
13
|
+
self.user_leads = 0
|
14
|
+
self.collapsed = False
|
File without changes
|
@@ -0,0 +1,44 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
from lgt_jobs.lgt_data.enums import SourceType
|
5
|
+
from lgt_jobs.lgt_data.models.base import BaseModel, DictionaryModel
|
6
|
+
|
7
|
+
|
8
|
+
class Credentials(BaseModel):
|
9
|
+
def __init__(self):
|
10
|
+
super().__init__()
|
11
|
+
self.token = None
|
12
|
+
self.cookies = None
|
13
|
+
self.invalid_creds = False
|
14
|
+
|
15
|
+
|
16
|
+
class Source(DictionaryModel):
|
17
|
+
def __init__(self):
|
18
|
+
self.source_type: SourceType | None = None
|
19
|
+
self.source_name: str | None = None
|
20
|
+
self.source_id = None
|
21
|
+
|
22
|
+
|
23
|
+
class BaseBotModel(Credentials):
|
24
|
+
def __init__(self):
|
25
|
+
super().__init__()
|
26
|
+
self.created_by = None
|
27
|
+
self.user_name = None
|
28
|
+
self.slack_url = None
|
29
|
+
self.registration_link = None
|
30
|
+
self.channels = None
|
31
|
+
self.connected_channels = None
|
32
|
+
self.channels_users = None
|
33
|
+
self.users_count = None
|
34
|
+
self.recent_messages: List[str] = []
|
35
|
+
self.icon = None
|
36
|
+
self.active_channels = {}
|
37
|
+
self.paused_channels = []
|
38
|
+
self.source: Source | None = None
|
39
|
+
self.two_factor_required: bool = False
|
40
|
+
self.banned: bool = False
|
41
|
+
self.associated_user = None
|
42
|
+
self.type: SourceType | None = None
|
43
|
+
self.deleted = False
|
44
|
+
self.deactivated_at: datetime | None = None
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import copy
|
2
|
+
|
3
|
+
|
4
|
+
class BotInfo:
|
5
|
+
def __init__(self):
|
6
|
+
self.id = None
|
7
|
+
self.invalid_creds: bool | None = False
|
8
|
+
self.source = None
|
9
|
+
self.banned: bool | None = False
|
10
|
+
self.user_name: str = ''
|
11
|
+
self.associated_user: str | None = ''
|
12
|
+
self.deleted: bool = False
|
13
|
+
self.two_factor_required = False
|
14
|
+
|
15
|
+
@classmethod
|
16
|
+
def from_dic(cls, dic: dict):
|
17
|
+
if not dic:
|
18
|
+
return None
|
19
|
+
|
20
|
+
model = BotInfo()
|
21
|
+
for k, v in dic.items():
|
22
|
+
if hasattr(model, k):
|
23
|
+
setattr(model, k, v)
|
24
|
+
|
25
|
+
if '_id' in dic:
|
26
|
+
setattr(model, 'id', dic['_id'])
|
27
|
+
|
28
|
+
return model
|
29
|
+
|
30
|
+
def to_dic(self):
|
31
|
+
result = copy.deepcopy(self.__dict__)
|
32
|
+
return result
|
33
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
import copy
|
2
|
+
from datetime import datetime, UTC
|
3
|
+
from typing import Optional, List
|
4
|
+
|
5
|
+
from bson import ObjectId
|
6
|
+
|
7
|
+
from lgt_jobs.lgt_data.models.base import DictionaryModel
|
8
|
+
from lgt_jobs.lgt_data.models.bots.base_bot import BaseBotModel, Source
|
9
|
+
|
10
|
+
|
11
|
+
class DedicatedBotModel(BaseBotModel):
|
12
|
+
def __init__(self):
|
13
|
+
super().__init__()
|
14
|
+
self.user_id: ObjectId | None = None
|
15
|
+
self.updated_at: Optional[datetime] = datetime.now(UTC)
|
16
|
+
self.servers: List[Server] = []
|
17
|
+
self.state = 0
|
18
|
+
self.source: Source | None = None
|
19
|
+
|
20
|
+
def to_dic(self):
|
21
|
+
result = copy.deepcopy(self.__dict__)
|
22
|
+
|
23
|
+
if result.get('source'):
|
24
|
+
result['source'] = Source.to_dic(result.get('source'))
|
25
|
+
|
26
|
+
result['servers'] = [Server.to_dic(server) for server in self.servers]
|
27
|
+
return result
|
28
|
+
|
29
|
+
@classmethod
|
30
|
+
def from_dic(cls, dic: dict):
|
31
|
+
if not dic:
|
32
|
+
return None
|
33
|
+
|
34
|
+
model: DedicatedBotModel = cls()
|
35
|
+
for k, v in dic.items():
|
36
|
+
setattr(model, k, v)
|
37
|
+
|
38
|
+
if '_id' in dic:
|
39
|
+
setattr(model, 'id', dic['_id'])
|
40
|
+
|
41
|
+
model.source = Source.from_dic(dic.get("source"))
|
42
|
+
model.servers = [Server.from_dic(server) for server in dic.get("servers", [])]
|
43
|
+
return model
|
44
|
+
|
45
|
+
|
46
|
+
class Server:
|
47
|
+
pass
|
48
|
+
|
49
|
+
def __init__(self):
|
50
|
+
self.id = None
|
51
|
+
self.name = None
|
52
|
+
self.channels: List[Channel] = []
|
53
|
+
self.icon = None
|
54
|
+
self.active = False
|
55
|
+
self.deleted = False
|
56
|
+
self.subscribers = 0
|
57
|
+
self.approximate_member_count = 0
|
58
|
+
self.messages_received: int = 0
|
59
|
+
self.messages_filtered: int = 0
|
60
|
+
|
61
|
+
@classmethod
|
62
|
+
def from_dic(cls, dic: dict):
|
63
|
+
if not dic:
|
64
|
+
return None
|
65
|
+
|
66
|
+
model = cls()
|
67
|
+
for k, v in dic.items():
|
68
|
+
if hasattr(model, k):
|
69
|
+
setattr(model, k, v)
|
70
|
+
|
71
|
+
model.channels = [Channel.from_dic(channel) for channel in dic.get("channels", [])]
|
72
|
+
model.subscribers = dic.get('approximate_member_count')
|
73
|
+
return model
|
74
|
+
|
75
|
+
def to_dic(self):
|
76
|
+
result = copy.deepcopy(self.__dict__)
|
77
|
+
result['channels'] = [Channel.to_dic(channel) for channel in self.channels]
|
78
|
+
return result
|
79
|
+
|
80
|
+
|
81
|
+
class Channel(DictionaryModel):
|
82
|
+
pass
|
83
|
+
|
84
|
+
def __init__(self):
|
85
|
+
self.id = None
|
86
|
+
self.name = None
|
87
|
+
self.type = None
|
88
|
+
self.is_member = True
|
89
|
+
self.active = True
|
90
|
+
self.subscribers = 0
|
File without changes
|
@@ -0,0 +1,17 @@
|
|
1
|
+
from typing import List
|
2
|
+
|
3
|
+
from lgt_jobs.lgt_data.models.chat.message import ChatMessage
|
4
|
+
|
5
|
+
|
6
|
+
class GroupedMessagesModel:
|
7
|
+
messages: List[ChatMessage] = []
|
8
|
+
|
9
|
+
@classmethod
|
10
|
+
def from_dic(cls, dic: dict):
|
11
|
+
if not dic:
|
12
|
+
return None
|
13
|
+
|
14
|
+
model = cls()
|
15
|
+
model.messages = [ChatMessage.from_dic(message) for message in dic.get('messages', [])]
|
16
|
+
return model
|
17
|
+
|
@@ -0,0 +1,85 @@
|
|
1
|
+
import copy
|
2
|
+
from datetime import datetime
|
3
|
+
|
4
|
+
from bson import ObjectId
|
5
|
+
|
6
|
+
from lgt_jobs.lgt_data.models.bots.dedicated_bot import DedicatedBotModel
|
7
|
+
from lgt_jobs.lgt_data.models.chat.file import LeadGuruFile
|
8
|
+
|
9
|
+
|
10
|
+
class ChatMessage:
|
11
|
+
bot_id: ObjectId
|
12
|
+
user_id: ObjectId
|
13
|
+
sender_id: str
|
14
|
+
text: str
|
15
|
+
user: str
|
16
|
+
id: str
|
17
|
+
viewed: bool
|
18
|
+
files: list
|
19
|
+
attachments: list[dict] | None
|
20
|
+
created_at: datetime | None
|
21
|
+
source_id: str | None
|
22
|
+
|
23
|
+
class SlackFileModel:
|
24
|
+
def __init__(self):
|
25
|
+
self.id = None
|
26
|
+
self.name = None
|
27
|
+
self.title = None
|
28
|
+
self.filetype = None
|
29
|
+
self.size = 0
|
30
|
+
self.mimetype = None
|
31
|
+
self.download_url = None
|
32
|
+
|
33
|
+
def to_dic(self):
|
34
|
+
result = copy.deepcopy(self.__dict__)
|
35
|
+
return result
|
36
|
+
|
37
|
+
def __init__(self):
|
38
|
+
self.viewed = False
|
39
|
+
self.text: str = ''
|
40
|
+
self.created_at: datetime
|
41
|
+
self.user = ''
|
42
|
+
self.id = ''
|
43
|
+
self.files = []
|
44
|
+
self.attachments = []
|
45
|
+
|
46
|
+
def to_dic(self):
|
47
|
+
result = copy.deepcopy(self.__dict__)
|
48
|
+
result['files'] = [x.to_dic() for x in result.get('files', [])]
|
49
|
+
return result
|
50
|
+
|
51
|
+
@classmethod
|
52
|
+
def from_dic(cls, dic: dict):
|
53
|
+
if not dic:
|
54
|
+
return None
|
55
|
+
model = cls()
|
56
|
+
for k, v in dic.items():
|
57
|
+
setattr(model, k, v)
|
58
|
+
return model
|
59
|
+
|
60
|
+
@classmethod
|
61
|
+
def from_slack_response(cls, bot: DedicatedBotModel, message_data: dict, sender_id: str):
|
62
|
+
model = cls()
|
63
|
+
model.sender_id = sender_id
|
64
|
+
model.bot_id = bot.id
|
65
|
+
model.text = message_data.get('text', '')
|
66
|
+
model.user = message_data.get('user', '')
|
67
|
+
model.id = message_data.get('ts', '')
|
68
|
+
model.attachments = message_data.get('attachments', [])
|
69
|
+
model.files = []
|
70
|
+
model.user_id = bot.user_id
|
71
|
+
model.source_id = bot.source.source_id
|
72
|
+
if 'files' in message_data:
|
73
|
+
for file in message_data.get('files'):
|
74
|
+
if file.get('mode') != "tombstone" and file.get('url_private_download'):
|
75
|
+
leadguru_file = LeadGuruFile()
|
76
|
+
leadguru_file.id = file['id']
|
77
|
+
leadguru_file.content_type = file['mimetype']
|
78
|
+
leadguru_file.file_name = file['name']
|
79
|
+
leadguru_file.blob_path = f'slack_files/{bot.user_name}/slack_files/{file["id"]}'
|
80
|
+
model.files.append(leadguru_file)
|
81
|
+
|
82
|
+
js_ticks = int(model.id.split('.')[0] + model.id.split('.')[1][3:])
|
83
|
+
model.created_at = datetime.fromtimestamp(js_ticks / 1000.0)
|
84
|
+
return model
|
85
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from lgt_jobs.lgt_data.models.bots.dedicated_bot import DedicatedBotModel
|
2
|
+
from lgt_jobs.lgt_data.models.chat.message import ChatMessage
|
3
|
+
|
4
|
+
|
5
|
+
class MessageRequest(ChatMessage):
|
6
|
+
hidden: bool
|
7
|
+
|
8
|
+
def __init__(self):
|
9
|
+
super().__init__()
|
10
|
+
self.hidden = False
|
11
|
+
|
12
|
+
@classmethod
|
13
|
+
def from_slack_response(cls, bot: DedicatedBotModel, message_data: dict, sender_id: str):
|
14
|
+
message = super().from_slack_response(bot, message_data, sender_id)
|
15
|
+
return MessageRequest.from_dic(message.to_dic())
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
from bson import ObjectId
|
4
|
+
|
5
|
+
from lgt_jobs.lgt_data.models.base import BaseModel
|
6
|
+
|
7
|
+
|
8
|
+
class ScheduledMessage(BaseModel):
|
9
|
+
post_at: datetime
|
10
|
+
bot_id: ObjectId
|
11
|
+
user_id: ObjectId
|
12
|
+
sender_id: str
|
13
|
+
text: str | None
|
14
|
+
files: list
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import Optional
|
3
|
+
|
4
|
+
from bson import ObjectId
|
5
|
+
|
6
|
+
from lgt_jobs.lgt_data.models.chat.message import ChatMessage
|
7
|
+
from lgt_jobs.lgt_data.models.people.people import SlackMemberInformation
|
8
|
+
|
9
|
+
|
10
|
+
class UserContact(SlackMemberInformation):
|
11
|
+
chat_id: str
|
12
|
+
user_id: ObjectId
|
13
|
+
source_id: str
|
14
|
+
last_message_at: Optional[datetime]
|
15
|
+
|
16
|
+
@classmethod
|
17
|
+
def from_dic(cls, dic: dict):
|
18
|
+
if not dic:
|
19
|
+
return None
|
20
|
+
model: UserContact | None = super().from_dic(dic)
|
21
|
+
model.chat_history = [ChatMessage.from_dic(message) for message in dic.get('chat_history', [])]
|
22
|
+
return model
|
File without changes
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
from bson import ObjectId
|
2
|
+
|
3
|
+
from lgt_jobs.lgt_data.models.base import BaseModel
|
4
|
+
|
5
|
+
|
6
|
+
class CloudFileModel(BaseModel):
|
7
|
+
blob_path: str
|
8
|
+
public_url: str
|
9
|
+
file_name: str
|
10
|
+
|
11
|
+
def __init__(self, blob_path: str, public_url: str, file_name: str):
|
12
|
+
super().__init__()
|
13
|
+
if not self.id:
|
14
|
+
self.id = str(ObjectId())
|
15
|
+
self.blob_path = blob_path
|
16
|
+
self.public_url = public_url
|
17
|
+
self.file_name = file_name
|
18
|
+
|
File without changes
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import copy
|
2
|
+
from datetime import datetime, UTC
|
3
|
+
from typing import List
|
4
|
+
|
5
|
+
from lgt_jobs.lgt_data.models.base import DictionaryModel
|
6
|
+
from lgt_jobs.lgt_data.models.external.user_workspace import UserWorkspace
|
7
|
+
from lgt_jobs.lgt_data.models.people.profile import Profile
|
8
|
+
|
9
|
+
|
10
|
+
class DiscordUser(DictionaryModel):
|
11
|
+
pass
|
12
|
+
|
13
|
+
def __init__(self):
|
14
|
+
super().__init__()
|
15
|
+
self.created_at = datetime.now(UTC)
|
16
|
+
self.login = ''
|
17
|
+
self.captcha_key = ''
|
18
|
+
self.status = None
|
19
|
+
self.workspaces: List[UserWorkspace] = []
|
20
|
+
self.deleted = False
|
21
|
+
self.profile: Profile | None = None
|
22
|
+
|
23
|
+
def to_dic(self):
|
24
|
+
result = copy.deepcopy(self.__dict__)
|
25
|
+
|
26
|
+
if result.get('workspaces'):
|
27
|
+
result['workspaces'] = [ws.__dict__ for ws in result.get('workspaces')]
|
28
|
+
|
29
|
+
if result.get('profile'):
|
30
|
+
result['profile'] = result.get('profile').__dict__
|
31
|
+
|
32
|
+
return result
|
33
|
+
|
34
|
+
@classmethod
|
35
|
+
def from_dic(cls, dic: dict):
|
36
|
+
if not dic:
|
37
|
+
return None
|
38
|
+
|
39
|
+
model = cls()
|
40
|
+
for k, v in dic.items():
|
41
|
+
setattr(model, k, v)
|
42
|
+
|
43
|
+
model.workspaces = [UserWorkspace.from_dic(ws) for ws in dic.get('workspaces', [])]
|
44
|
+
model.profile = Profile.from_dic(dic.get('profile'))
|
45
|
+
return model
|
File without changes
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import copy
|
2
|
+
from datetime import datetime, UTC
|
3
|
+
from typing import List
|
4
|
+
|
5
|
+
from lgt_jobs.lgt_data.models.external.user_workspace import UserWorkspace
|
6
|
+
from lgt_jobs.lgt_data.models.people.profile import Profile
|
7
|
+
|
8
|
+
|
9
|
+
class SlackUser:
|
10
|
+
pass
|
11
|
+
|
12
|
+
def __init__(self):
|
13
|
+
self.created_at = datetime.now(UTC)
|
14
|
+
self.cookies = {}
|
15
|
+
self.email = ''
|
16
|
+
self.status = None
|
17
|
+
self.workspaces: List[UserWorkspace] = []
|
18
|
+
self.deleted = False
|
19
|
+
self.profile: Profile | None = None
|
20
|
+
|
21
|
+
def to_dic(self):
|
22
|
+
result = copy.deepcopy(self.__dict__)
|
23
|
+
|
24
|
+
if result.get('workspaces', None):
|
25
|
+
result['workspaces'] = [ws.__dict__ for ws in result.get('workspaces')]
|
26
|
+
|
27
|
+
if result.get('profile'):
|
28
|
+
result['profile'] = result.get('profile').__dict__
|
29
|
+
|
30
|
+
return result
|
31
|
+
|
32
|
+
@classmethod
|
33
|
+
def from_dic(cls, dic: dict):
|
34
|
+
if not dic:
|
35
|
+
return None
|
36
|
+
|
37
|
+
model = cls()
|
38
|
+
for k, v in dic.items():
|
39
|
+
setattr(model, k, v)
|
40
|
+
|
41
|
+
model.workspaces = [UserWorkspace.from_dic(ws) for ws in dic.get('workspaces', [])]
|
42
|
+
model.profile = Profile.from_dic(dic.get('profile'))
|
43
|
+
return model
|