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.
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/DBManager.py +42 -3
- pkdevtools-0.13.20250218.236/PKDevTools/classes/__init__.py +1 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/PKG-INFO +2 -2
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKG-INFO +2 -2
- pkdevtools-0.13.20250214.235/PKDevTools/classes/__init__.py +0 -1
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/LICENSE +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/LICENSE.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/README.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/__init__.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Archiver.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/ColorText.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Committer.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/CookieHelper.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Environment.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Fetcher.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/FunctionTimeouts.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/GmailReader.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/MarketHours.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/MenuOptions.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/NSEMarketStatus.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/OutputControls.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKDateUtilities.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKJoinableQueue.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKPickler.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKTimer.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Pikey.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Singleton.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/SuppressOutput.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/System.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Telegram.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/UserSubscriptions.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Utils.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/WorkflowManager.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/githubutilities.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/log.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/multiprocessing_logging.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/__init__.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/events.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/publisher.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/subscriber.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/squash.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/updater.py +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/release.md +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/requirements.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/SOURCES.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/dependency_links.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/entry_points.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/not-zip-safe +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/requires.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/top_level.txt +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/README.md +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/setup.cfg +0 -0
- {pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/setup.py +0 -0
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/DBManager.py
RENAMED
@@ -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.
|
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.
|
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.
|
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.
|
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'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Archiver.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/ColorText.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Committer.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/CookieHelper.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Environment.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/FunctionTimeouts.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/GmailReader.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/MarketHours.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/MenuOptions.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/NSEMarketStatus.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/OutputControls.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKDateUtilities.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKJoinableQueue.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/PKPickler.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Singleton.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/SuppressOutput.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/Telegram.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/WorkflowManager.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/githubutilities.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/__init__.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/events.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools/classes/pubsub/publisher.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/entry_points.txt
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/not-zip-safe
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/requires.txt
RENAMED
File without changes
|
{pkdevtools-0.13.20250214.235 → pkdevtools-0.13.20250218.236}/PKDevTools.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|