leadguru-jobs 0.544.0__tar.gz → 0.546.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 (59) hide show
  1. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/analytics.py +45 -0
  4. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/mongo_repository.py +4 -10
  5. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/runner.py +6 -4
  6. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/MANIFEST.in +0 -0
  7. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/README.md +0 -0
  8. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  9. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  10. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  11. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  12. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  13. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/__init__.py +0 -0
  14. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/assets/images/arrow.png +0 -0
  15. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/assets/images/firework.png +0 -0
  16. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/assets/images/lock.png +0 -0
  17. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/assets/images/logo.png +0 -0
  18. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/assets/images/mail.png +0 -0
  19. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/basejobs.py +0 -0
  20. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/env.py +0 -0
  21. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/__init__.py +0 -0
  22. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/analytics.py +0 -0
  23. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  24. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/chat_history.py +0 -0
  25. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  26. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/mass_message.py +0 -0
  27. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/send_code.py +0 -0
  28. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
  29. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  30. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/user_balance_update.py +0 -0
  31. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  32. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  33. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  34. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
  35. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  36. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  37. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  38. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  39. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/lgt_logging.py +0 -0
  40. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  41. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  42. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  43. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  44. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  45. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
  46. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
  47. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  48. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/engine.py +0 -0
  49. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/enums.py +2 -2
  50. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  51. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/lgt_data/model.py +0 -0
  52. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/main.py +0 -0
  53. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/services/__init__.py +0 -0
  54. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/services/web_client.py +0 -0
  55. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/simple_job.py +0 -0
  56. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/smtp.py +0 -0
  57. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/lgt_jobs/templates/new_message.html +0 -0
  58. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/setup.cfg +0 -0
  59. {leadguru_jobs-0.544.0 → leadguru_jobs-0.546.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.544.0
3
+ Version: 0.546.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.544.0
3
+ Version: 0.546.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -81,6 +81,51 @@ def _prepare_date_analytics_doc(doc, ordered_result_dict: Dict[str, int]):
81
81
  ordered_result_dict[str_date] = item["count"]
82
82
  return ordered_result_dict
83
83
 
84
+ def get_channel_aggregated_analytics(from_date: datetime = None, to_date: datetime = None,
85
+ bot_id: Optional[str | ObjectId] = None):
86
+ pipeline = [
87
+ {
88
+ '$match': {
89
+ 'extra_ids': {"$in": [str(bot_id)]}
90
+ }
91
+ },
92
+ {
93
+ "$group": {
94
+ '_id': {
95
+ '$arrayElemAt': [
96
+ '$attributes', 0
97
+ ]
98
+ },
99
+ 'count': {"$sum": 1}
100
+ }
101
+ },
102
+ {
103
+ '$limit': 1000
104
+ }
105
+ ]
106
+
107
+ if from_date:
108
+ beginning_of_the_day = datetime(from_date.year, from_date.month, from_date.day, 0, 0, 0, 0)
109
+ pipeline.insert(0, {"$match": {"created_at": {"$gte": beginning_of_the_day}}})
110
+
111
+ if to_date:
112
+ end_of_the_day = datetime(to_date.year, to_date.month, to_date.day, 23, 59, 59, 999)
113
+ pipeline.insert(0, {"$match": {"created_at": {"$lte": end_of_the_day}}})
114
+
115
+ received_messages = list(db[f'received_messages'].aggregate(pipeline))
116
+ filtered_messages = list(db[f'filtered_messages'].aggregate(pipeline))
117
+
118
+ received_messages_dic = OrderedDict()
119
+ filtered_messages_dic = OrderedDict()
120
+
121
+ for item in received_messages:
122
+ received_messages_dic[item["_id"]] = item["count"]
123
+
124
+ for item in filtered_messages:
125
+ filtered_messages_dic[item["_id"]] = item["count"]
126
+
127
+ return received_messages_dic, filtered_messages_dic
128
+
84
129
 
85
130
  def get_aggregated_user_leads(user_id: Union[ObjectId, str],
86
131
  from_date: datetime,
@@ -831,16 +831,10 @@ class DedicatedBotRepository(BaseMongoRepository):
831
831
  docs = self.collection().find(pipeline)
832
832
  return [DedicatedBotModel.from_dic(doc) for doc in docs]
833
833
 
834
- def get_source_ids_for_user(self, user_id, source_type):
835
- docs = self.collection().find({
836
- 'user_id': user_id,
837
- 'source.source_type': source_type
838
- }, {
839
- '_id': 0,
840
- 'source_id': '$source.source_id'
841
- })
842
- source_ids = [item['source_id'] for item in docs]
843
- return source_ids
834
+ def get_source_ids_for_user(self, **kwargs):
835
+ pipeline = self.__create_bots_filter(**kwargs)
836
+ docs = self.collection().find(pipeline, projection={'_id': 0, 'source_id': '$source.source_id'})
837
+ return [item['source_id'] for item in docs]
844
838
 
845
839
  def get_one(self, **kwargs):
846
840
  pipeline = self.__create_bots_filter(**kwargs)
@@ -32,13 +32,15 @@ class BackgroundJobRunner:
32
32
  BackgroundJobRunner.submit_data(job_data)
33
33
 
34
34
  @staticmethod
35
- def submit_data(data: dict):
35
+ def submit_data(data: dict, topic: str = None):
36
36
  json_str = json.dumps(data, ensure_ascii=False, default=datetime_converter)
37
- BackgroundJobRunner.submit_json(json_str)
37
+ BackgroundJobRunner.submit_json(json_str, topic)
38
38
 
39
39
  @staticmethod
40
- def submit_json(json_str: str):
41
- publish_message2_pubsub(background_jobs_topic, message_json=json_str)
40
+ def submit_json(json_str: str, topic: str = None):
41
+ if not topic:
42
+ topic = background_jobs_topic
43
+ publish_message2_pubsub(topic, message_json=json_str)
42
44
 
43
45
  @staticmethod
44
46
  def schedule(jib: str, job: type, data: BaseBackgroundJobData, scheduled_at: datetime):
@@ -61,12 +61,12 @@ class BotEventType(str, Enum):
61
61
 
62
62
  class ImageName(str, Enum):
63
63
  ARROW = 'arrow.png'
64
+ CRY = 'cry.png'
64
65
  FIREWORK = 'firework.png'
66
+ HANDS = 'hands.png'
65
67
  LOCK = 'lock.png'
66
68
  LOGO = 'logo.png'
67
69
  MAIL = 'mail.png'
68
- CRY = 'cry.png'
69
- HANDS = 'hands.png'
70
70
  SAD = 'sad.png'
71
71
 
72
72