leadguru-jobs 0.639.0__py3-none-any.whl → 0.641.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.
Files changed (60) hide show
  1. {leadguru_jobs-0.639.0.dist-info → leadguru_jobs-0.641.0.dist-info}/METADATA +1 -1
  2. leadguru_jobs-0.641.0.dist-info/RECORD +109 -0
  3. lgt_jobs/lgt_data/models/boards/__init__.py +0 -0
  4. lgt_jobs/lgt_data/models/boards/board.py +39 -0
  5. lgt_jobs/lgt_data/models/boards/status.py +14 -0
  6. lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
  7. lgt_jobs/lgt_data/models/bots/base_bot.py +44 -0
  8. lgt_jobs/lgt_data/models/bots/bot_info.py +33 -0
  9. lgt_jobs/lgt_data/models/bots/dedicated_bot.py +90 -0
  10. lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
  11. lgt_jobs/lgt_data/models/chat/file.py +8 -0
  12. lgt_jobs/lgt_data/models/chat/grouped_messages.py +17 -0
  13. lgt_jobs/lgt_data/models/chat/message.py +85 -0
  14. lgt_jobs/lgt_data/models/chat/request.py +15 -0
  15. lgt_jobs/lgt_data/models/chat/scheduled_message.py +14 -0
  16. lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
  17. lgt_jobs/lgt_data/models/contacts/contact.py +22 -0
  18. lgt_jobs/lgt_data/models/external/__init__.py +0 -0
  19. lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
  20. lgt_jobs/lgt_data/models/external/cloud/file.py +18 -0
  21. lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
  22. lgt_jobs/lgt_data/models/external/discord/user.py +45 -0
  23. lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
  24. lgt_jobs/lgt_data/models/external/slack/timezone.py +8 -0
  25. lgt_jobs/lgt_data/models/external/slack/user.py +43 -0
  26. lgt_jobs/lgt_data/models/external/user_workspace.py +32 -0
  27. lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
  28. lgt_jobs/lgt_data/models/leads/config.py +13 -0
  29. lgt_jobs/lgt_data/models/leads/extended_lead.py +46 -0
  30. lgt_jobs/lgt_data/models/leads/lead.py +48 -0
  31. lgt_jobs/lgt_data/models/leads/message.py +51 -0
  32. lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
  33. lgt_jobs/lgt_data/models/notifications/notification.py +248 -0
  34. lgt_jobs/lgt_data/models/notifications/notification_settings.py +52 -0
  35. lgt_jobs/lgt_data/models/people/__init__.py +0 -0
  36. lgt_jobs/lgt_data/models/people/people.py +75 -0
  37. lgt_jobs/lgt_data/models/people/profile.py +13 -0
  38. lgt_jobs/lgt_data/models/post/__init__.py +0 -0
  39. lgt_jobs/lgt_data/models/post/message.py +18 -0
  40. lgt_jobs/lgt_data/models/post/post.py +15 -0
  41. lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
  42. lgt_jobs/lgt_data/models/templates/template.py +12 -0
  43. lgt_jobs/lgt_data/models/user/__init__.py +0 -0
  44. lgt_jobs/lgt_data/models/user/feature.py +10 -0
  45. lgt_jobs/lgt_data/models/user/general_settings.py +9 -0
  46. lgt_jobs/lgt_data/models/user/reset_password.py +7 -0
  47. lgt_jobs/lgt_data/models/user/subscription.py +22 -0
  48. lgt_jobs/lgt_data/models/user/user.py +95 -0
  49. lgt_jobs/lgt_data/models/user/user_follow_ups.py +20 -0
  50. lgt_jobs/lgt_data/models/user/user_page.py +19 -0
  51. lgt_jobs/lgt_data/models/user/verification.py +12 -0
  52. lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
  53. lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +41 -0
  54. lgt_jobs/lgt_data/models/user_leads/user_lead.py +33 -0
  55. lgt_jobs/lgt_data/repositories/__init__.py +0 -0
  56. lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
  57. lgt_jobs/lgt_data/repositories/post/posts.py +28 -0
  58. leadguru_jobs-0.639.0.dist-info/RECORD +0 -54
  59. {leadguru_jobs-0.639.0.dist-info → leadguru_jobs-0.641.0.dist-info}/WHEEL +0 -0
  60. {leadguru_jobs-0.639.0.dist-info → leadguru_jobs-0.641.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.639.0
3
+ Version: 0.641.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -0,0 +1,109 @@
1
+ lgt_jobs/__init__.py,sha256=efDX0VsSwC2we92quUu8E62MqC-4audo0Rv37Y6USnk,2144
2
+ lgt_jobs/basejobs.py,sha256=LPEclvY6fIG17YMGy9pRK0Q58n62gkI5W1BTK6R2p-c,1234
3
+ lgt_jobs/env.py,sha256=cRO03GGvstUjBsv3uYO-iakrOvAk_ZWUP_fnmf21iZQ,789
4
+ lgt_jobs/main.py,sha256=cK_nkBtJHnUNDbba1WZotqPtI_6OWxiYQkAgco9OAmE,1539
5
+ lgt_jobs/runner.py,sha256=pS-Qwyfuk22aQ1Mk3p-Q0ysdZfKy1Bh9YoWBlDaLeM8,2234
6
+ lgt_jobs/simple_job.py,sha256=EBxhre3749GEAzJyaV1GXYy3P0pzwHchxcZ2kSN1vWU,527
7
+ lgt_jobs/smtp.py,sha256=k0qh-Qk9AeSU3WrCOVmuWkfpi9xzwaPMzbw9cED-pZw,1150
8
+ lgt_jobs/assets/images/arrow.png,sha256=Lr_zG1TyySAWX78jiojcV7j8BHe2S_Oi7eZYAfe4YbM,536
9
+ lgt_jobs/assets/images/firework.png,sha256=9d_0lUpDFfT3e4JTgp5XVb03qAdtO9yNVi1c1KoQDp8,33754
10
+ lgt_jobs/assets/images/lock.png,sha256=515llTFqboG9PYXIrXhlbPZ5lQOHXjEYyQkXc9WfJxc,5978
11
+ lgt_jobs/assets/images/logo.png,sha256=nt377FGkBalBF9Z9TYQRv9loHolTXwU8_VRYvCXXzx0,12596
12
+ lgt_jobs/assets/images/mail.png,sha256=eORzQcAMkFr7DjgtABVhJ_zFuXgO7OXv78lLF4b39B0,7168
13
+ lgt_jobs/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ lgt_jobs/jobs/analytics.py,sha256=IIsWt4A1qUw3w-S-8W16uKY1FRVWfXXA41_mu4uCNiM,979
15
+ lgt_jobs/jobs/bot_stats_update.py,sha256=COwSaw0conDZOcdI5VkyW4vTFIo6PFn9LgvhTejYYeQ,8448
16
+ lgt_jobs/jobs/chat_history.py,sha256=rj337uHT2XmyDu3oMPbnCBxSsRn4roxDNS0hsbvoI7I,5040
17
+ lgt_jobs/jobs/connect_sources.py,sha256=vOKu2Q9cmQsj4VMVzOoEJkD1wzE9XurbIChx35rES8I,4957
18
+ lgt_jobs/jobs/inbox_leads.py,sha256=6UhPp9AfSAGb3elFDT6jm7j2HZ9jPOPngsUj-hUKAYw,4867
19
+ lgt_jobs/jobs/load_slack_people.py,sha256=JEggnsWvfA7L45lObwuBFIvBVhwfePbq08E89VXpI8E,3264
20
+ lgt_jobs/jobs/mass_message.py,sha256=1mFcBlL2MhzLbj5yrd_NyJc7TXDWCcROAzGDnr0miMU,2035
21
+ lgt_jobs/jobs/send_code.py,sha256=dIlLPkG3GgGKIEqGiElyzrtdrnJNTL1Ak2V0xnE-WIQ,824
22
+ lgt_jobs/jobs/send_slack_message.py,sha256=yJVzGQijM5KL-QDA0EQy-8-kvR7TSZmRw-4tX1ge5Hk,2343
23
+ lgt_jobs/jobs/update_slack_profile.py,sha256=GU28azaNz1zYsCAAF_BShJxLUecQb7AbO5XPgiv7yHg,3654
24
+ lgt_jobs/jobs/workspace_connect.py,sha256=iapbDVdFL6ZkZJlIZywASATAmK25ZikSd1IiB1LLrRo,7203
25
+ lgt_jobs/lgt_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ lgt_jobs/lgt_common/helpers.py,sha256=3T47_Abw7datSIxVqIHTCB-sh-rnahWrmrFG8sSY9ZE,178
27
+ lgt_jobs/lgt_common/discord_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ lgt_jobs/lgt_common/discord_client/discord_client.py,sha256=IA5JgoZq-oowkEGLRReZbW4Wa7cTtdSTPfGKF6ymNm8,4067
29
+ lgt_jobs/lgt_common/discord_client/methods.py,sha256=qFbNRsI1VlPZD2os5d4bdZhrnu69OW__fhMRssF0oMk,633
30
+ lgt_jobs/lgt_common/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ lgt_jobs/lgt_common/enums/slack_errors.py,sha256=nK7uoguq0F8bIHROp73oeszehT7CgS_VU45n9_Gq_WY,172
32
+ lgt_jobs/lgt_common/pubsub/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ lgt_jobs/lgt_common/pubsub/messages.py,sha256=rm7uKbxwDTWJqsVA8Kee-4YT58bThjCEV2Q0559Lrzg,1397
34
+ lgt_jobs/lgt_common/pubsub/pubsubfactory.py,sha256=rfUDooYuhBQ2pE9FdDxZOpXjbrvlpiiQLCGOtnTFbSg,2204
35
+ lgt_jobs/lgt_common/slack_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ lgt_jobs/lgt_common/slack_client/methods.py,sha256=ctKF_1UHEmSWaRsoGEgMZicVabV7eEufZ7pjxdMAx8g,1455
37
+ lgt_jobs/lgt_common/slack_client/slack_client.py,sha256=SR3YjJCJ-_8BPu29sFtF0ULijNL3QkBrvp_JXkm4DDk,13806
38
+ lgt_jobs/lgt_common/slack_client/web_client.py,sha256=WCu8mqYhauuxp9iDAMsjocchKD78iWdcnbu7Ozdyzq8,3448
39
+ lgt_jobs/lgt_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ lgt_jobs/lgt_data/analytics.py,sha256=yfrFPXrBofzZqUNn479JkrbZXDa2ljgk-Le0YrQ9rew,21690
41
+ lgt_jobs/lgt_data/engine.py,sha256=GY8FOl3dl7euKjQRML_H3ophaSTgfQ8ICMRv1NpE2oE,7745
42
+ lgt_jobs/lgt_data/enums.py,sha256=27Gd_o5QVCrSUMIfL0DJ72xV77T9fK0kYrOaC78O0SU,2292
43
+ lgt_jobs/lgt_data/helpers.py,sha256=S_1P7pnx14dllmen-TzjA9pkKWQr39x8-v6iv7FUYnQ,423
44
+ lgt_jobs/lgt_data/model.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ lgt_jobs/lgt_data/mongo_repository.py,sha256=FBhE2nhrQ42njW9Muf3DZElJRva5IiZ_f-XmEQwgzrc,54209
46
+ lgt_jobs/lgt_data/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ lgt_jobs/lgt_data/models/base.py,sha256=YaiceCaaF45snOLx-bQoYJ1aTWrfgMQeHWjAaRnzGKE,592
48
+ lgt_jobs/lgt_data/models/boards/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ lgt_jobs/lgt_data/models/boards/board.py,sha256=zJ30L-Us0dXuqgfTJMP1axE0YjwRvYJWNZkVdjEAEV8,1020
50
+ lgt_jobs/lgt_data/models/boards/status.py,sha256=p08cyyEUjCR7eyWg-_f2PTEwLi9HQxc8JR-ZRfciEY8,323
51
+ lgt_jobs/lgt_data/models/bots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ lgt_jobs/lgt_data/models/bots/base_bot.py,sha256=cf-EGv8OqDeMHyBBy5xfvnpHw7gZSuP560F1QV9sU7M,1297
53
+ lgt_jobs/lgt_data/models/bots/bot_info.py,sha256=t6syPPQzQ0rFTboyjfJoJ6o_gW2OA3ONlv4Ogg6xzcE,762
54
+ lgt_jobs/lgt_data/models/bots/dedicated_bot.py,sha256=jlVpovG07Z6h7RFRWPOECRLDjE7BY-I2hxi9dculegs,2435
55
+ lgt_jobs/lgt_data/models/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ lgt_jobs/lgt_data/models/chat/file.py,sha256=agvvPxkt9jsrxLmlDAi6EnirkiHy7u0u2qN6X0YaMAE,183
57
+ lgt_jobs/lgt_data/models/chat/grouped_messages.py,sha256=Dcajejrx1HIu09ndlt5g3oGz9bueNolcqI-s9Xy1eak,394
58
+ lgt_jobs/lgt_data/models/chat/message.py,sha256=bn8BwmmfegRYorkSLXFfgCiswhSlaU8LtVTYwwIMWUo,2651
59
+ lgt_jobs/lgt_data/models/chat/request.py,sha256=CdgsZdrwZTEBKBGMtSYh0MwRsiLAwbaH54foo8P2DRQ,515
60
+ lgt_jobs/lgt_data/models/chat/scheduled_message.py,sha256=vv5c_Fe6L9eDeV9LHrdPCU2p-VQ0v_YsZDMBdXvFQAA,268
61
+ lgt_jobs/lgt_data/models/contacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ lgt_jobs/lgt_data/models/contacts/contact.py,sha256=m_eQkmkEDuvPBh50Oc6ujD5NCsjTFpxQ95aThKtn0Hs,644
63
+ lgt_jobs/lgt_data/models/external/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ lgt_jobs/lgt_data/models/external/user_workspace.py,sha256=ySbHIug7uk6HXPZUF1Ack56dRhkscbf2K1fzpeAmwI8,777
65
+ lgt_jobs/lgt_data/models/external/cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ lgt_jobs/lgt_data/models/external/cloud/file.py,sha256=uwgB5Q0S4LGXl37UpdRS_a1SbUdz80tP-JcWDsno_-k,450
67
+ lgt_jobs/lgt_data/models/external/discord/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ lgt_jobs/lgt_data/models/external/discord/user.py,sha256=2Zf65s23eu_6zjsmQgVi1HPQHTJvCIF7BVjUViy3DKQ,1284
69
+ lgt_jobs/lgt_data/models/external/slack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
+ lgt_jobs/lgt_data/models/external/slack/timezone.py,sha256=MdJkUAd6xUiYZy2GOBt14DkMa7jNkI_iLik7adCuGVY,134
71
+ lgt_jobs/lgt_data/models/external/slack/user.py,sha256=6P7ei5jxRGenxu3a2N2JXqMwen2k9upwvRUvsBPhKHk,1182
72
+ lgt_jobs/lgt_data/models/leads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ lgt_jobs/lgt_data/models/leads/config.py,sha256=dyVNrtJzNnW6dC_8dtuKyO_VbZTyW-uDCPKEvc4Lejc,272
74
+ lgt_jobs/lgt_data/models/leads/extended_lead.py,sha256=ezFrKv-f5GBXr3QAM-V_qJQ-ibTBB2stg_odfbJqd8o,2073
75
+ lgt_jobs/lgt_data/models/leads/lead.py,sha256=mTZh8YV06nX9OWYvv_X7rDdIperB-RPChrEuheeYMU0,1300
76
+ lgt_jobs/lgt_data/models/leads/message.py,sha256=7mXwYfSpmhY_zC8TfUdAZzxsPP-02bOqVjdkN4Vid5s,1533
77
+ lgt_jobs/lgt_data/models/notifications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ lgt_jobs/lgt_data/models/notifications/notification.py,sha256=bUtpKs1_--A3p8N2cQC-cQIa0ja9tiUDofSG38-j13I,10456
79
+ lgt_jobs/lgt_data/models/notifications/notification_settings.py,sha256=VFddLvk2ROz4n50wYuZmqBDn7MssFwj-e9DbWweIVA4,2780
80
+ lgt_jobs/lgt_data/models/people/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ lgt_jobs/lgt_data/models/people/people.py,sha256=pm60uMVmNIxOGCBAtZWhmXSJOe0SJ4C1y_HurUq00oY,3420
82
+ lgt_jobs/lgt_data/models/people/profile.py,sha256=wFPqVmo-QOH71Pcs-kExu8rZtNrNDfGm-BEVu_BCOF4,325
83
+ lgt_jobs/lgt_data/models/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ lgt_jobs/lgt_data/models/post/message.py,sha256=h9cLwO_AIXk8dtEUoYZDAXJcIZH3rLPNW1Ut6zuzUA0,395
85
+ lgt_jobs/lgt_data/models/post/post.py,sha256=Ez2Z6a2MXD-uqEIauFcAFtN7hbWcgljYarhxsMy0vRM,450
86
+ lgt_jobs/lgt_data/models/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ lgt_jobs/lgt_data/models/templates/template.py,sha256=yDnHgG5SOo1h71-Grku1hOe0oPTav3a1U-u5VX3lgPE,223
88
+ lgt_jobs/lgt_data/models/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ lgt_jobs/lgt_data/models/user/feature.py,sha256=iqqc8O-D4ZpvueguDN1VWmEzut5PUeqSCpELw3_AKxA,308
90
+ lgt_jobs/lgt_data/models/user/general_settings.py,sha256=lkmDbUnAIHoZ__8K85cxa9pPJBwleUmNcFKW1U2Pfjc,308
91
+ lgt_jobs/lgt_data/models/user/reset_password.py,sha256=SI6z4bJEiYVNtEkDXrm6H4A5mHVUmHXTPvreQBOfwVw,172
92
+ lgt_jobs/lgt_data/models/user/subscription.py,sha256=NIrWRmlKv3IETKwnBXMV90g_gr0N8t-7tBp7PrT0_Go,586
93
+ lgt_jobs/lgt_data/models/user/user.py,sha256=qqqD0wS67NF9vd35Qw0ho3Zo_9DtBCDIzM0aZRFkwUc,3932
94
+ lgt_jobs/lgt_data/models/user/user_follow_ups.py,sha256=zXTvIWw_YQc7cfAaKSbPtAibP4ZWRyLMtkGHX4YUstU,972
95
+ lgt_jobs/lgt_data/models/user/user_page.py,sha256=pBMf-HJLS-2ViMrMN-Zl_z78B5gnIOveMSTh_z6cZGw,474
96
+ lgt_jobs/lgt_data/models/user/verification.py,sha256=xj8yqufv3RoBUcK8oEMIM15J36ClUb77wDhj292r3-U,273
97
+ lgt_jobs/lgt_data/models/user_leads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
+ lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py,sha256=vieK-Ab2cTMJGhPruIj_ts1q5qTuX9-FeArHj0v-yAM,1497
99
+ lgt_jobs/lgt_data/models/user_leads/user_lead.py,sha256=uHwXXf00mLx7zSMTfW_swX6uMoxD9hh0YT6wGgJVxJ4,815
100
+ lgt_jobs/lgt_data/repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ lgt_jobs/lgt_data/repositories/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
+ lgt_jobs/lgt_data/repositories/post/posts.py,sha256=ZA19L-CYdxLhlapyMQtSJzP3QMUlHq9UEgW3ab86aDs,1024
103
+ lgt_jobs/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
+ lgt_jobs/services/web_client.py,sha256=oMyWJxwGeIe3f40fPT7xcisjDg3BhA3Ipf8dr1jVT-Y,1549
105
+ lgt_jobs/templates/new_message.html,sha256=dZl8UmdAOOMq4nidvAgMFroSrTV7Pw0RWt2yLp_2idg,6989
106
+ leadguru_jobs-0.641.0.dist-info/METADATA,sha256=f6pSENAA0HzQC_5nVRP5QFKhTLGgjtRbq_G0ngoG9j8,1319
107
+ leadguru_jobs-0.641.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
108
+ leadguru_jobs-0.641.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
109
+ leadguru_jobs-0.641.0.dist-info/RECORD,,
File without changes
@@ -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,8 @@
1
+ from lgt_jobs.lgt_data.models.base import DictionaryModel
2
+
3
+
4
+ class LeadGuruFile(DictionaryModel):
5
+ id: str = None
6
+ blob_path: str
7
+ content_type: str
8
+ file_name: str = None
@@ -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,8 @@
1
+ from typing import Optional
2
+
3
+
4
+ class SlackTimeZone:
5
+ tz: Optional[str]
6
+ tz_label: Optional[str]
7
+ tz_offset: Optional[int]
8
+
@@ -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