leadguru-jobs 0.419.0__tar.gz → 0.420.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.
Files changed (56) hide show
  1. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/model.py +2 -1
  4. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/mongo_repository.py +59 -12
  5. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/services/web_client.py +2 -3
  6. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/MANIFEST.in +0 -0
  7. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/README.md +0 -0
  8. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  9. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  10. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  11. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  12. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  13. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/__init__.py +0 -0
  14. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/basejobs.py +0 -0
  15. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/env.py +0 -0
  16. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/__init__.py +0 -0
  17. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/analytics.py +0 -0
  18. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/archive_leads.py +0 -0
  19. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  20. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/chat_history.py +0 -0
  21. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  22. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/mass_message.py +0 -0
  23. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/send_code.py +0 -0
  24. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
  25. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  26. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/user_balance_update.py +0 -0
  27. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  28. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  29. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  30. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
  31. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  32. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  33. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  34. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  35. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/lgt_logging.py +0 -0
  36. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  37. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/pubsub/command.py +0 -0
  38. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  39. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  40. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  41. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  42. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
  43. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
  44. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  45. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/analytics.py +0 -0
  46. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/engine.py +0 -0
  47. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/enums.py +0 -0
  48. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  49. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/main.py +0 -0
  50. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/runner.py +0 -0
  51. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/services/__init__.py +0 -0
  52. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/simple_job.py +0 -0
  53. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/smtp.py +0 -0
  54. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/lgt_jobs/templates/new_message_mail_template.html +0 -0
  55. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/setup.cfg +0 -0
  56. {leadguru_jobs-0.419.0 → leadguru_jobs-0.420.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.419.0
3
+ Version: 0.420.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.419.0
3
+ Version: 0.420.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -712,7 +712,7 @@ class BoardModel(BaseModel):
712
712
  super().__init__()
713
713
  self.name = None
714
714
  self.user_id = None
715
- self.statuses = list()
715
+ self.statuses: List[BoardedStatus] = []
716
716
  self.is_primary = None
717
717
  self.default = False
718
718
 
@@ -748,6 +748,7 @@ class BoardedStatus:
748
748
  self.order = 0
749
749
  self.is_primary = False
750
750
  self.default = False
751
+ self.user_leads = 0
751
752
 
752
753
  def to_dic(self):
753
754
  self.id = self.name
@@ -708,6 +708,64 @@ class BoardsMongoRepository(BaseMongoRepository):
708
708
  docs = self.collection().find(pipeline).sort('created_at', 1)
709
709
  return [BoardModel.from_dic(doc) for doc in docs]
710
710
 
711
+ def get_with_stats(self, user_id: str, **kwargs):
712
+ is_primary = kwargs.get('is_primary')
713
+ default = kwargs.get('default')
714
+ name = kwargs.get('name')
715
+ match = {'user_id': to_object_id(user_id)}
716
+
717
+ if is_primary is not None:
718
+ match['is_primary'] = is_primary
719
+
720
+ if default is not None:
721
+ match['default'] = default
722
+
723
+ if name:
724
+ match['name'] = name
725
+
726
+ pipeline = [
727
+ {
728
+ '$match': match
729
+ },
730
+ {
731
+ '$unwind': {'path': '$statuses', 'preserveNullAndEmptyArrays': False}
732
+ },
733
+ {
734
+ '$lookup': {
735
+ 'from': 'user_leads',
736
+ 'as': 'statuses.user_leads',
737
+ 'let': {'id': '$_id', 'status': '$statuses.name'},
738
+ 'pipeline': [
739
+ {
740
+ '$match': {
741
+ '$expr': {
742
+ '$and': [
743
+ {'$eq': ['$board_id', '$$id']},
744
+ {'$eq': ['$status', '$$status']}
745
+ ]
746
+ }
747
+ }
748
+ }
749
+ ]
750
+ }
751
+ },
752
+ {
753
+ '$addFields': {'statuses.user_leads': {'$size': '$statuses.user_leads'}}
754
+ },
755
+ {
756
+ '$group': {
757
+ '_id': '$_id',
758
+ 'statuses': {'$push': '$statuses'},
759
+ 'name': {'$first': '$name'},
760
+ 'created_at': {'$first': '$created_at'},
761
+ 'user_id': {'$first': '$user_id'},
762
+ 'is_primary': {'$first': '$is_primary'},
763
+ 'default': {'$first': '$default'}}
764
+ },
765
+ {'$sort': {'created_at': 1}}]
766
+
767
+ return [BoardModel.from_dic(doc) for doc in self.collection().aggregate(pipeline)]
768
+
711
769
  def get_primary(self, user_id: str):
712
770
  return BoardModel.from_dic(self.collection().find_one({'user_id': to_object_id(user_id), 'is_primary': True}))
713
771
 
@@ -767,17 +825,6 @@ class DedicatedBotRepository(BaseMongoRepository):
767
825
  docs = self.collection().find(pipeline)
768
826
  return [DedicatedBotModel.from_dic(doc) for doc in docs]
769
827
 
770
- def get_source_ids_for_user(self, user_id, source_type):
771
- docs = self.collection().find({
772
- 'user_id': user_id,
773
- 'source.source_type': source_type
774
- }, {
775
- '_id': 0,
776
- 'source_id': '$source.source_id'
777
- })
778
- source_ids = [item['source_id'] for item in docs]
779
- return source_ids
780
-
781
828
  def get_one(self, **kwargs):
782
829
  pipeline = self.__create_bots_filter(**kwargs)
783
830
  return DedicatedBotModel.from_dic(self.collection().find_one(pipeline))
@@ -838,7 +885,7 @@ class DedicatedBotRepository(BaseMongoRepository):
838
885
  pipeline["source.source_id"] = source_id
839
886
 
840
887
  if server_id:
841
- pipeline["servers"] = {'$elemMatch': {'id': server_id}}
888
+ pipeline["servers"] = {'$elemMatch': {'id': server_id, 'active': True}}
842
889
 
843
890
  if active_server_id:
844
891
  pipeline["servers"] = {'$elemMatch': {'id': active_server_id, 'deleted': False}}
@@ -18,7 +18,7 @@ class V3ServerClient(BaseHttpClient):
18
18
  self.token = BillingServerClient.login(service_account_email, service_account_password)
19
19
 
20
20
  def update_user_lead(self, message_id: str, email: str, slack_channel: str,
21
- board_id: str = None, status: str = None, followup_date=None) -> dict:
21
+ board_id: str = None, status: str = None) -> dict:
22
22
  payload = {
23
23
  'message_id': message_id,
24
24
  'user_email': email
@@ -27,8 +27,7 @@ class V3ServerClient(BaseHttpClient):
27
27
  update_lead_payload = {
28
28
  'slack_channel': slack_channel,
29
29
  'board_id': board_id,
30
- 'status': status,
31
- 'followup_date': followup_date
30
+ 'status': status
32
31
  }
33
32
  headers = self._create_default_headers()
34
33
  return requests.post(f'{portal_url}/{self.api_version}/user_leads/update',