leadguru-jobs 0.473.0__tar.gz → 0.475.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.473.0 → leadguru_jobs-0.475.0}/PKG-INFO +1 -1
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/send_slack_message.py +21 -8
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/enums.py +5 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/model.py +22 -2
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/mongo_repository.py +16 -1
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/MANIFEST.in +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/README.md +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/leadguru_jobs.egg-info/requires.txt +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/assets/images/arrow.png +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/assets/images/firework.png +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/assets/images/lock.png +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/assets/images/logo.png +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/assets/images/mail.png +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/basejobs.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/env.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/analytics.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/chat_history.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/mass_message.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/send_code.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/user_balance_update.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/helpers.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/lgt_logging.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/pubsub/command.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/analytics.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/engine.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_data/helpers.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/main.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/runner.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/services/__init__.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/services/web_client.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/simple_job.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/smtp.py +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/templates/new_message.html +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/setup.cfg +0 -0
- {leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/setup.py +0 -0
@@ -2,8 +2,10 @@ from datetime import datetime, UTC
|
|
2
2
|
from abc import ABC
|
3
3
|
from typing import Optional
|
4
4
|
from lgt_jobs.lgt_common.lgt_logging import log
|
5
|
-
from lgt_jobs.lgt_common.slack_client.web_client import SlackWebClient
|
6
|
-
from lgt_jobs.lgt_data.
|
5
|
+
from lgt_jobs.lgt_common.slack_client.web_client import SlackWebClient, SlackMessageConvertService
|
6
|
+
from lgt_jobs.lgt_data.model import ChatMessage
|
7
|
+
from lgt_jobs.lgt_data.mongo_repository import DedicatedBotRepository, UserContactsRepository, UserMongoRepository, \
|
8
|
+
ChatRepository
|
7
9
|
from pydantic import BaseModel
|
8
10
|
from lgt_jobs.basejobs import BaseBackgroundJobData, BaseBackgroundJob
|
9
11
|
|
@@ -29,6 +31,7 @@ class SendSlackMessageJob(BaseBackgroundJob, ABC):
|
|
29
31
|
if not bot:
|
30
32
|
return
|
31
33
|
|
34
|
+
user = UserMongoRepository().get(bot.user_id)
|
32
35
|
user_contacts_repository = UserContactsRepository()
|
33
36
|
uc = user_contacts_repository.find_one(bot.user_id, sender_id=data.sender_id,
|
34
37
|
source_id=bot.source.source_id)
|
@@ -37,13 +40,23 @@ class SendSlackMessageJob(BaseBackgroundJob, ABC):
|
|
37
40
|
user_contacts_repository.update(bot.user_id, uc.sender_id, bot.source.source_id,
|
38
41
|
scheduled_messages=uc.scheduled_messages)
|
39
42
|
slack_client = SlackWebClient(bot.token, bot.cookies)
|
40
|
-
|
41
|
-
if not
|
42
|
-
log.warning(f"Unable to open im with user: {
|
43
|
+
im = slack_client.im_open(data.sender_id)
|
44
|
+
if not im['ok']:
|
45
|
+
log.warning(f"Unable to open im with user: {data.sender_id}")
|
43
46
|
return
|
44
47
|
|
45
|
-
channel_id =
|
48
|
+
channel_id = im['channel']['id']
|
46
49
|
if data.files_ids:
|
47
|
-
slack_client.share_files(data.files_ids, channel_id, data.text)
|
50
|
+
resp = slack_client.share_files(data.files_ids, channel_id, data.text)
|
48
51
|
else:
|
49
|
-
slack_client.post_message(channel_id, data.text)
|
52
|
+
resp = slack_client.post_message(channel_id, data.text)
|
53
|
+
|
54
|
+
message = resp.get('message') if 'message' in resp \
|
55
|
+
else slack_client.conversation_replies(channel_id, resp['file_msg_ts'])['messages'][0]
|
56
|
+
|
57
|
+
message_model: ChatMessage = SlackMessageConvertService.from_slack_response(user.email, "slack_files",
|
58
|
+
bot.token, message, data.sender_id,
|
59
|
+
bot.id, user.id,
|
60
|
+
slack_client.client.cookies)
|
61
|
+
message_model.viewed = True
|
62
|
+
ChatRepository().upsert_messages([message_model.to_dic()])
|
@@ -4,7 +4,7 @@ import json
|
|
4
4
|
from abc import ABC
|
5
5
|
from datetime import datetime, UTC
|
6
6
|
from typing import Optional, List, Dict
|
7
|
-
from .enums import UserRole, SourceType
|
7
|
+
from .enums import UserRole, SourceType, FeaturesEnum, FeatureOptions
|
8
8
|
from .helpers import get_linkedin_search_contact
|
9
9
|
from bson import ObjectId
|
10
10
|
|
@@ -287,6 +287,8 @@ class UserModel(BaseModel):
|
|
287
287
|
self.slack_users: List[SlackUser] = []
|
288
288
|
self.discord_users: List[DiscordUser] = []
|
289
289
|
self.verified: bool = False
|
290
|
+
self.subscription_id: ObjectId | None = None
|
291
|
+
self.subscription_expired_at: datetime | None = None
|
290
292
|
|
291
293
|
@classmethod
|
292
294
|
def from_dic(cls, dic: dict):
|
@@ -990,4 +992,22 @@ class UsersPage:
|
|
990
992
|
def from_dic(dic: dict):
|
991
993
|
users = [UserModel.from_dic(doc) for doc in dic.get('page', [])]
|
992
994
|
count = dic.get('count', 0)
|
993
|
-
return UsersPage(users=users, count=count)
|
995
|
+
return UsersPage(users=users, count=count)
|
996
|
+
|
997
|
+
|
998
|
+
class Feature(DictionaryModel):
|
999
|
+
display_name: str
|
1000
|
+
name: FeaturesEnum
|
1001
|
+
description: str | None = None
|
1002
|
+
limit: int | None = None
|
1003
|
+
options: FeatureOptions | None = None
|
1004
|
+
|
1005
|
+
|
1006
|
+
class Subscription(BaseModel):
|
1007
|
+
features: list[Feature]
|
1008
|
+
duration_days: int
|
1009
|
+
name: str
|
1010
|
+
price: int
|
1011
|
+
limits: int
|
1012
|
+
trial: bool
|
1013
|
+
updated_at: datetime = None
|
@@ -9,7 +9,7 @@ from lgt_jobs.lgt_data.enums import SourceType
|
|
9
9
|
from lgt_jobs.lgt_data.model import (LeadModel, BaseModel, UserModel, UserResetPasswordModel, BoardModel, BoardedStatus,
|
10
10
|
DedicatedBotModel, SlackMemberInformation, UserTemplateModel, LinkedinContact,
|
11
11
|
ExtendedUserLeadModel, UserLeadModel, ExtendedLeadModel, UserContact, ChatMessage,
|
12
|
-
GroupedMessagesModel, UserVerificationModel, UsersPage)
|
12
|
+
GroupedMessagesModel, UserVerificationModel, UsersPage, Subscription)
|
13
13
|
from datetime import datetime, UTC, timedelta
|
14
14
|
from collections import OrderedDict
|
15
15
|
|
@@ -1227,3 +1227,18 @@ class UserVerificationMongoRepository(BaseMongoRepository):
|
|
1227
1227
|
model.email = email
|
1228
1228
|
model.created_at = datetime.now(UTC)
|
1229
1229
|
return self.collection().insert_one(model.to_dic()).inserted_id
|
1230
|
+
|
1231
|
+
|
1232
|
+
class SubscriptionsRepository(BaseMongoRepository):
|
1233
|
+
pass
|
1234
|
+
|
1235
|
+
collection_name = 'subscriptions'
|
1236
|
+
model = Subscription
|
1237
|
+
|
1238
|
+
def find_one(self, **kwargs):
|
1239
|
+
pipeline = {}
|
1240
|
+
subscription_id = kwargs.get('id')
|
1241
|
+
if subscription_id:
|
1242
|
+
pipeline['_id'] = to_object_id(subscription_id)
|
1243
|
+
|
1244
|
+
return Subscription.from_dic(self.collection().find_one(pipeline))
|
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.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/discord_client/__init__.py
RENAMED
File without changes
|
{leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/discord_client/discord_client.py
RENAMED
File without changes
|
{leadguru_jobs-0.473.0 → leadguru_jobs-0.475.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
|
File without changes
|
{leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/slack_client/__init__.py
RENAMED
File without changes
|
File without changes
|
{leadguru_jobs-0.473.0 → leadguru_jobs-0.475.0}/lgt_jobs/lgt_common/slack_client/slack_client.py
RENAMED
File without changes
|
{leadguru_jobs-0.473.0 → leadguru_jobs-0.475.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
|