leadguru-jobs 0.622.0__py3-none-any.whl → 0.624.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.622.0
3
+ Version: 0.624.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -1,4 +1,4 @@
1
- lgt_jobs/__init__.py,sha256=cZDNBmksAzKFe5frsPpucpYfC-3YlAhw2-cVzmMe8Oo,2335
1
+ lgt_jobs/__init__.py,sha256=efDX0VsSwC2we92quUu8E62MqC-4audo0Rv37Y6USnk,2144
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
@@ -21,7 +21,6 @@ lgt_jobs/jobs/mass_message.py,sha256=1mFcBlL2MhzLbj5yrd_NyJc7TXDWCcROAzGDnr0miMU
21
21
  lgt_jobs/jobs/send_code.py,sha256=dIlLPkG3GgGKIEqGiElyzrtdrnJNTL1Ak2V0xnE-WIQ,824
22
22
  lgt_jobs/jobs/send_slack_message.py,sha256=nNtuSsAIK5dzvP3B1G-BHNyk_LuZkHfsGmpXHHIqBb0,2329
23
23
  lgt_jobs/jobs/update_slack_profile.py,sha256=_ed0OhrVc1U-nE6dLckdmTmzZaxlK-y7h4S7SIpfEiA,3582
24
- lgt_jobs/jobs/user_balance_update.py,sha256=HxeEmDdloK9EcoEj1ybYTgxIkB0IQNLnss_kk3rLI1Q,2404
25
24
  lgt_jobs/jobs/workspace_connect.py,sha256=y48LGLtH7KxB-XAja9JOW4VFq4rzJh8cSf6heNBLSx0,7067
26
25
  lgt_jobs/lgt_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
26
  lgt_jobs/lgt_common/helpers.py,sha256=3T47_Abw7datSIxVqIHTCB-sh-rnahWrmrFG8sSY9ZE,178
@@ -39,18 +38,18 @@ lgt_jobs/lgt_common/slack_client/methods.py,sha256=ctKF_1UHEmSWaRsoGEgMZicVabV7e
39
38
  lgt_jobs/lgt_common/slack_client/slack_client.py,sha256=SR3YjJCJ-_8BPu29sFtF0ULijNL3QkBrvp_JXkm4DDk,13806
40
39
  lgt_jobs/lgt_common/slack_client/web_client.py,sha256=WCu8mqYhauuxp9iDAMsjocchKD78iWdcnbu7Ozdyzq8,3448
41
40
  lgt_jobs/lgt_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- lgt_jobs/lgt_data/analytics.py,sha256=yfrFPXrBofzZqUNn479JkrbZXDa2ljgk-Le0YrQ9rew,21690
43
- lgt_jobs/lgt_data/engine.py,sha256=Rsbz-CApAo_TVDssdjBkv8v_fVOZm_Uh1S6W4fnaEWo,7728
41
+ lgt_jobs/lgt_data/analytics.py,sha256=vPKX-dXJzwg3T7w8Sx3a0mMi8HAlEwp8rcm1umE62mg,21681
42
+ lgt_jobs/lgt_data/engine.py,sha256=I9kz7Z6xzdrxN40S_9aYJMnoB54LpTA1Hk_yJYogohQ,7736
44
43
  lgt_jobs/lgt_data/enums.py,sha256=3IV06umcBLXMCWnXUO66fyPM8IVwfCVbiSCjcwYMqCY,2238
45
- lgt_jobs/lgt_data/helpers.py,sha256=NDa-V5EYaJfkGoWsmQSwSe6N_jxNxs8tHRQzW1iST6k,480
46
- lgt_jobs/lgt_data/model.py,sha256=IC2Ar664rDXjblzUsxxWA9J5f28HM-U1qG0QkE9kNPA,34602
47
- lgt_jobs/lgt_data/mongo_repository.py,sha256=GtPMsFcZ-gIls6wKv4bMrO00ye-MwX5aRrZiQR0UUq0,46969
44
+ lgt_jobs/lgt_data/helpers.py,sha256=Lg5aPM-EQiEcb4jFS9LoGbSwkB5-SYRnOutOHrOJKPA,611
45
+ lgt_jobs/lgt_data/model.py,sha256=PGAY24Uh7HnnEbaWTZe7nPkMaGy6Vb688q9Of8d2Yto,34592
46
+ lgt_jobs/lgt_data/mongo_repository.py,sha256=JdeWnmWI9SN-Z3mHW5B3-3gn6e0MUhKGRPTVxaT5Yow,46917
48
47
  lgt_jobs/lgt_data/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
48
  lgt_jobs/lgt_data/models/message_request.py,sha256=3m_2uSqnLUHrQbhTEKednoC0KuxAC5o2-LwONUAHCC8,367
50
49
  lgt_jobs/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- lgt_jobs/services/web_client.py,sha256=yHq364gTjBPTCLB88e8-cuQlPtuJBfBuOa1h8sqz2mw,1579
50
+ lgt_jobs/services/web_client.py,sha256=oMyWJxwGeIe3f40fPT7xcisjDg3BhA3Ipf8dr1jVT-Y,1549
52
51
  lgt_jobs/templates/new_message.html,sha256=dZl8UmdAOOMq4nidvAgMFroSrTV7Pw0RWt2yLp_2idg,6989
53
- leadguru_jobs-0.622.0.dist-info/METADATA,sha256=JHOlAOLB1fzkNKuTuLnGrCbR9Tcndf0REFZAkN-JyFk,1319
54
- leadguru_jobs-0.622.0.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
55
- leadguru_jobs-0.622.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
56
- leadguru_jobs-0.622.0.dist-info/RECORD,,
52
+ leadguru_jobs-0.624.0.dist-info/METADATA,sha256=B6K53VjOuKtsNrPPB_HoOoNF6KeAqFmt59lMiubn0No,1319
53
+ leadguru_jobs-0.624.0.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
54
+ leadguru_jobs-0.624.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
55
+ leadguru_jobs-0.624.0.dist-info/RECORD,,
lgt_jobs/__init__.py CHANGED
@@ -1,6 +1,5 @@
1
1
  name = "lgt_jobs"
2
2
 
3
- from .jobs.user_balance_update import UpdateUserBalanceJob, UpdateUserBalanceJobData
4
3
  from .jobs.send_slack_message import SendSlackMessageJob, SendSlackMessageJobData
5
4
  from .jobs.analytics import (TrackAnalyticsJob, TrackAnalyticsJobData)
6
5
  from .jobs.connect_sources import (ConnectSourceJobData, ConnectSourceJob)
@@ -22,7 +21,6 @@ jobs_map = {
22
21
  "LoadChatHistoryJob": LoadChatHistoryJob,
23
22
  "UpdateExternalUserProfileJob": UpdateExternalUserProfileJob,
24
23
  "SendSlackMessageJob": SendSlackMessageJob,
25
- "UpdateUserBalanceJob": UpdateUserBalanceJob,
26
24
  "SendMassMessageSlackChannelJob": SendMassMessageSlackChannelJob,
27
25
  "ConnectSourceJob": ConnectSourceJob,
28
26
  "LoadSlackPeopleJob": LoadSlackPeopleJob
@@ -37,7 +35,6 @@ __all__ = [
37
35
  UpdateExternalUserProfileJob,
38
36
  TrackAnalyticsJob,
39
37
  SendSlackMessageJob,
40
- UpdateUserBalanceJob,
41
38
  SendMassMessageSlackChannelJob,
42
39
  ConnectSourceJob,
43
40
  LoadSlackPeopleJob,
@@ -54,7 +51,6 @@ __all__ = [
54
51
  UpdateExternalUserProfileJobData,
55
52
  TrackAnalyticsJobData,
56
53
  SendSlackMessageJobData,
57
- UpdateUserBalanceJobData,
58
54
  SendMassMessageSlackChannelJobData,
59
55
  ConnectSourceJobData,
60
56
  LoadSlackPeopleJobData,
@@ -4,7 +4,7 @@ from collections import OrderedDict
4
4
  from datetime import timedelta, datetime
5
5
  from bson import ObjectId
6
6
  from dateutil import tz
7
- from lgt_jobs.lgt_data.mongo_repository import to_object_id
7
+ from lgt_jobs.lgt_data.helpers import to_object_id
8
8
  from pymongo import MongoClient
9
9
 
10
10
  client = MongoClient(os.environ.get('MONGO_CONNECTION_STRING', 'mongodb://127.0.0.1:27017/'))
@@ -5,7 +5,7 @@ from datetime import datetime, UTC
5
5
  from bson import ObjectId
6
6
  from mongoengine import connect, Document, DateTimeField, StringField, IntField, ObjectIdField, ListField
7
7
  from typing import Dict, Tuple, Optional
8
- from .mongo_repository import to_object_id
8
+ from lgt_jobs.lgt_data.helpers import to_object_id
9
9
 
10
10
  connect(host=os.environ.get('MONGO_CONNECTION_STRING', 'mongodb://127.0.0.1:27017/'), db="lgt_admin", alias="lgt_admin")
11
11
 
@@ -1,3 +1,5 @@
1
+ from bson import ObjectId
2
+
1
3
  from lgt_jobs.lgt_data.model import UserModel
2
4
  from lgt_jobs.lgt_data.mongo_repository import SubscriptionsRepository
3
5
 
@@ -9,3 +11,10 @@ def get_linkedin_search_contact(name: str):
9
11
  def get_help_text(user: UserModel):
10
12
  subscription = SubscriptionsRepository().find_one(id=user.subscription_id)
11
13
  return 'the onboarding call with us!' if subscription.trial else 'a call with us.'
14
+
15
+
16
+ def to_object_id(oid):
17
+ if isinstance(oid, ObjectId):
18
+ return oid
19
+ return ObjectId(oid)
20
+
@@ -6,8 +6,7 @@ from datetime import datetime, UTC, timedelta
6
6
  from typing import Optional, List
7
7
  from lgt_jobs.lgt_data.enums import UserRole, SourceType, FeaturesEnum, FeatureOptions, NotificationType
8
8
  from bson import ObjectId
9
-
10
- from lgt_jobs.lgt_data.mongo_repository import to_object_id
9
+ from lgt_jobs.lgt_data.helpers import to_object_id
11
10
 
12
11
 
13
12
  class DictionaryModel(ABC):
@@ -6,6 +6,7 @@ from dateutil import tz
6
6
  from pymongo import MongoClient, UpdateOne
7
7
  from bson.objectid import ObjectId
8
8
  from lgt_jobs.lgt_data.enums import SourceType
9
+ from lgt_jobs.lgt_data.helpers import to_object_id
9
10
  from lgt_jobs.lgt_data.model import (LeadModel, BaseModel, UserModel, UserResetPasswordModel, BoardModel, BoardedStatus,
10
11
  DedicatedBotModel, SlackMemberInformation, UserTemplateModel,
11
12
  ExtendedUserLeadModel, UserLeadModel, ExtendedLeadModel, UserContact, ChatMessage,
@@ -17,12 +18,6 @@ from collections import OrderedDict
17
18
  client = MongoClient(os.environ.get('MONGO_CONNECTION_STRING', 'mongodb://127.0.0.1:27017/'))
18
19
 
19
20
 
20
- def to_object_id(oid):
21
- if isinstance(oid, ObjectId):
22
- return oid
23
- return ObjectId(oid)
24
-
25
-
26
21
  class BaseMongoRepository:
27
22
  collection_name = ''
28
23
  database_name = 'lgt_admin'
@@ -1,5 +1,4 @@
1
1
  import requests
2
- from requests import Response
3
2
  from lgt_jobs.env import v3_server_host, v1_server_host, service_account_email, service_account_password
4
3
 
5
4
 
@@ -1,70 +0,0 @@
1
- import datetime
2
- from abc import ABC
3
- from typing import Optional
4
- from lgt_jobs.lgt_data.engine import UserCreditStatementDocument
5
- from lgt_jobs.lgt_data.enums import UserAccountState, UserAction
6
- from lgt_jobs.lgt_data.model import UserModel
7
- from lgt_jobs.lgt_data.mongo_repository import UserMongoRepository, to_object_id
8
- from pydantic import BaseModel
9
- from lgt_jobs.basejobs import BaseBackgroundJobData, BaseBackgroundJob
10
-
11
- """
12
- User balance handling
13
- """
14
-
15
-
16
- class UpdateUserBalanceJobData(BaseBackgroundJobData, BaseModel):
17
- user_id: Optional[str]
18
-
19
-
20
- class UpdateUserBalanceJob(BaseBackgroundJob, ABC):
21
- @property
22
- def job_data_type(self) -> type:
23
- return UpdateUserBalanceJobData
24
-
25
- @staticmethod
26
- def __update_processed(user: UserModel):
27
- pipeline = [
28
- {
29
- "$match": {
30
- "user_id": to_object_id(user.id),
31
- "balance": {"$lte": 0},
32
- "action": {"$nin": [UserAction.ADMIN_CREDITS_ADDED, UserAction.ADMIN_CREDITS_SET]}
33
- }
34
- },
35
- {
36
- '$group': {
37
- '_id': "$user_id",
38
- 'count': {'$sum': {"$multiply": [-1, "$balance"]}}
39
- }
40
- }
41
- ]
42
-
43
- results = list(UserCreditStatementDocument.objects.aggregate(*pipeline))
44
- if not results:
45
- return
46
-
47
- count = results[0]["count"]
48
- if count >= user.leads_limit:
49
- # suspend account
50
- if user.state != UserAccountState.Suspended.value:
51
- UserMongoRepository().set(user.id, leads_proceeded=count,
52
- credits_exceeded_at=datetime.datetime.now(datetime.UTC),
53
- state=UserAccountState.Suspended.value)
54
- return
55
-
56
- if user.state == UserAccountState.Suspended.value:
57
- # unsuspend account
58
- UserMongoRepository().set(user.id, leads_proceeded=count,
59
- credits_exceeded_at=None,
60
- state=UserAccountState.Operational.value)
61
- return
62
-
63
- UserMongoRepository().set(user.id, leads_proceeded=count)
64
-
65
- def exec(self, data: UpdateUserBalanceJobData):
66
- user = UserMongoRepository().get(data.user_id)
67
- if not user:
68
- return
69
-
70
- self.__update_processed(user=user)