PKDevTools 0.13.20250214.235__tar.gz → 0.13.20250218.236__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/DBManager.py +42 -3
  2. pkdevtools-0.13.20250218.236/PKDevTools/classes/__init__.py +1 -0
  3. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/PKG-INFO +2 -2
  4. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKG-INFO +2 -2
  5. pkdevtools-0.13.20250214.235/PKDevTools/classes/__init__.py +0 -1
  6. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/LICENSE +0 -0
  7. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/LICENSE.txt +0 -0
  8. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/README.txt +0 -0
  9. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/__init__.py +0 -0
  10. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Archiver.py +0 -0
  11. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/ColorText.py +0 -0
  12. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Committer.py +0 -0
  13. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/CookieHelper.py +0 -0
  14. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Environment.py +0 -0
  15. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Fetcher.py +0 -0
  16. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/FunctionTimeouts.py +0 -0
  17. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/GmailReader.py +0 -0
  18. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/MarketHours.py +0 -0
  19. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/MenuOptions.py +0 -0
  20. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/NSEMarketStatus.py +0 -0
  21. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/OutputControls.py +0 -0
  22. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKDateUtilities.py +0 -0
  23. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
  24. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKJoinableQueue.py +0 -0
  25. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
  26. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKPickler.py +0 -0
  27. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKTimer.py +0 -0
  28. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Pikey.py +0 -0
  29. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Singleton.py +0 -0
  30. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/SuppressOutput.py +0 -0
  31. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/System.py +0 -0
  32. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Telegram.py +0 -0
  33. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/UserSubscriptions.py +0 -0
  34. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Utils.py +0 -0
  35. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/WorkflowManager.py +0 -0
  36. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/githubutilities.py +0 -0
  37. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/log.py +0 -0
  38. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/multiprocessing_logging.py +0 -0
  39. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/__init__.py +0 -0
  40. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/events.py +0 -0
  41. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/publisher.py +0 -0
  42. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/subscriber.py +0 -0
  43. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/squash.py +0 -0
  44. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/updater.py +0 -0
  45. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/release.md +0 -0
  46. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/requirements.txt +0 -0
  47. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/SOURCES.txt +0 -0
  48. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/dependency_links.txt +0 -0
  49. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/entry_points.txt +0 -0
  50. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/not-zip-safe +0 -0
  51. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/requires.txt +0 -0
  52. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/top_level.txt +0 -0
  53. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/README.md +0 -0
  54. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/setup.cfg +0 -0
  55. {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/setup.py +0 -0
@@ -88,7 +88,14 @@ class PKUser:
88
88
  user.subscriptionmodel= row[7] if len(row) > 7 else None
89
89
  user.lastotp= row[8] if len(row) > 8 else None
90
90
  return user
91
-
91
+
92
+ def payingUserFromDBRecord(row):
93
+ user = PKUser()
94
+ user.userid= row[0] if len(row) > 0 else None
95
+ user.subscriptionmodel = row[1] if len(row) > 1 else None
96
+ user.balance= row[2] if len(row) > 2 else None
97
+ return user
98
+
92
99
  def userFromAlertsRecord(row,user=None):
93
100
  if user is None:
94
101
  user = PKUser()
@@ -338,7 +345,7 @@ class DBManager:
338
345
  self.conn.close()
339
346
  self.conn = None
340
347
 
341
- def getUsers(self,fieldName=None):
348
+ def getUsers(self,fieldName=None,where=None):
342
349
  """
343
350
  Returns all active PKUser instances in the database or an empty list if none is found.
344
351
  Returns only the fieldName if requested.
@@ -346,7 +353,7 @@ class DBManager:
346
353
  try:
347
354
  users = []
348
355
  cursor = self.connection() #.cursor()
349
- records = cursor.execute(f"SELECT {'*' if fieldName is None else fieldName} FROM users") #.fetchall()
356
+ records = cursor.execute(f"SELECT {'*' if fieldName is None else fieldName} FROM users {where if where is not None else ''}") #.fetchall()
350
357
  for row in records.rows:
351
358
  users.append(PKUser.userFromDBRecord(row))
352
359
  # cursor.close()
@@ -635,3 +642,35 @@ class DBManager:
635
642
  self.conn.close()
636
643
  self.conn = None
637
644
  return success
645
+
646
+ def getPayingUsers(self):
647
+ """
648
+ Returns all active PKUser instances in the database who either have a subscription model
649
+ or have a alerts balance.
650
+ """
651
+ try:
652
+ users = []
653
+ cursor = self.connection() #.cursor()
654
+ query_paying_users = """
655
+ SELECT DISTINCT u.userId, u.subscriptionmodel, a.balance
656
+ FROM users u
657
+ LEFT JOIN alertsubscriptions a ON u.userId = a.userId
658
+ WHERE COALESCE(a.balance, 0) > 0 OR (u.subscriptionmodel != '' and u.subscriptionmodel != '0');
659
+
660
+ """
661
+ records = cursor.execute(query_paying_users)
662
+ for row in records.rows:
663
+ users.append(PKUser.payingUserFromDBRecord(row))
664
+ # cursor.close()
665
+ if len(records.columns) > 0 and len(records.rows) <= 0:
666
+ # Let's tell the user
667
+ default_logger().debug(f"Paying Users not found!")
668
+ except Exception as e: # pragma: no cover
669
+ print(f"Could not getPayingUsers\n{e}")
670
+ default_logger().debug(e, exc_info=True)
671
+ pass
672
+ finally:
673
+ if self.conn is not None:
674
+ self.conn.close()
675
+ self.conn = None
676
+ return users
@@ -0,0 +1 @@
1
+ VERSION='0.13.20250218.236'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PKDevTools
3
- Version: 0.13.20250214.235
3
+ Version: 0.13.20250218.236
4
4
  Summary: A general day-to-day toolset for PKScreener repos
5
5
  Home-page: https://github.com/pkjmesra/PKDevTools
6
- Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250214.235.zip
6
+ Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250218.236.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PKDevTools
3
- Version: 0.13.20250214.235
3
+ Version: 0.13.20250218.236
4
4
  Summary: A general day-to-day toolset for PKScreener repos
5
5
  Home-page: https://github.com/pkjmesra/PKDevTools
6
- Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250214.235.zip
6
+ Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250218.236.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -1 +0,0 @@
1
- VERSION='0.13.20250214.235'