PKDevTools 0.13.20250213.233__tar.gz → 0.13.20250214.235__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/DBManager.py +80 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/NSEMarketStatus.py +1 -1
- pkdevtools-0.13.20250214.235/PKDevTools/classes/__init__.py +1 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/PKG-INFO +2 -2
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKG-INFO +2 -2
- pkdevtools-0.13.20250213.233/PKDevTools/classes/__init__.py +0 -1
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/LICENSE +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/LICENSE.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/README.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/__init__.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Archiver.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/ColorText.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Committer.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/CookieHelper.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Environment.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Fetcher.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/FunctionTimeouts.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/GmailReader.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/MarketHours.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/MenuOptions.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/OutputControls.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKDateUtilities.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKJoinableQueue.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKPickler.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKTimer.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Pikey.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Singleton.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/SuppressOutput.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/System.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Telegram.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/UserSubscriptions.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Utils.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/WorkflowManager.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/githubutilities.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/log.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/multiprocessing_logging.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/pubsub/__init__.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/pubsub/events.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/pubsub/publisher.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/pubsub/subscriber.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/squash.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/updater.py +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/release.md +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/requirements.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/SOURCES.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/dependency_links.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/entry_points.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/not-zip-safe +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/requires.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/top_level.txt +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/README.md +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/setup.cfg +0 -0
- {pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/setup.py +0 -0
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/DBManager.py
RENAMED
@@ -555,3 +555,83 @@ class DBManager:
|
|
555
555
|
self.conn.close()
|
556
556
|
self.conn = None
|
557
557
|
return success1 and success2
|
558
|
+
|
559
|
+
def removeScannerJob(self,userID, scanId):
|
560
|
+
"""
|
561
|
+
Removes scanId from scannerJobs column in alertsubscriptions
|
562
|
+
|
563
|
+
Removes userID from the users column in scannerJobs
|
564
|
+
|
565
|
+
Deletes the row in scannerJobs if no more userIds are left
|
566
|
+
"""
|
567
|
+
try:
|
568
|
+
success = False
|
569
|
+
# Step 1: Remove job from user's alertsubscriptions table
|
570
|
+
query_alertsubscriptions = """
|
571
|
+
UPDATE alertsubscriptions
|
572
|
+
SET scannerJobs =
|
573
|
+
CASE
|
574
|
+
WHEN scannerJobs = ? THEN '' -- If the only job, set to empty string
|
575
|
+
ELSE
|
576
|
+
TRIM(
|
577
|
+
REPLACE(
|
578
|
+
REPLACE(
|
579
|
+
';' || scannerJobs || ';', -- Add extra delimiters to prevent partial replacements
|
580
|
+
';' || ? || ';',
|
581
|
+
';'
|
582
|
+
),
|
583
|
+
';;', ';' -- Fix extra semicolons
|
584
|
+
),
|
585
|
+
';'
|
586
|
+
) -- Trim leading/trailing semicolon
|
587
|
+
END
|
588
|
+
WHERE userId = ?;
|
589
|
+
"""
|
590
|
+
result = self.connection().execute(query_alertsubscriptions, (scanId,scanId,userID))
|
591
|
+
if result.rows_affected > 0:
|
592
|
+
default_logger().debug(f"User: {userID} removed {scanId} from alertsubscriptions!")
|
593
|
+
success = True
|
594
|
+
if success:
|
595
|
+
# Step 2: Remove userId from scannerJobs table
|
596
|
+
query_scanner_jobs = """
|
597
|
+
UPDATE scannerJobs
|
598
|
+
SET users =
|
599
|
+
CASE
|
600
|
+
WHEN users = ? THEN '' -- If the only user, set to empty string
|
601
|
+
ELSE
|
602
|
+
TRIM(
|
603
|
+
REPLACE(
|
604
|
+
REPLACE(
|
605
|
+
';' || users || ';',
|
606
|
+
';' || ? || ';',
|
607
|
+
';'
|
608
|
+
),
|
609
|
+
';;', ';'
|
610
|
+
),
|
611
|
+
';'
|
612
|
+
) -- Trim leading/trailing semicolon
|
613
|
+
END
|
614
|
+
WHERE scannerId = ?;
|
615
|
+
"""
|
616
|
+
result = self.connection().execute(query_scanner_jobs, (str(userID),str(userID),scanId))
|
617
|
+
if result.rows_affected > 0:
|
618
|
+
default_logger().debug(f"User: {userID} removed {scanId} from scannerJobs!")
|
619
|
+
success = True
|
620
|
+
if success:
|
621
|
+
# Step 3: Delete row from scannerJobs if users column is empty
|
622
|
+
query_delete_empty = """
|
623
|
+
DELETE FROM scannerJobs WHERE scannerId = ? AND (users IS NULL OR users = '');
|
624
|
+
"""
|
625
|
+
result = self.connection().execute(query_delete_empty, (scanId,))
|
626
|
+
if result.rows_affected > 0:
|
627
|
+
default_logger().debug(f"{scanId} deleted from scannerJobs by User: {userID} !")
|
628
|
+
success = True
|
629
|
+
except Exception as e: # pragma: no cover
|
630
|
+
print(f"Could not removeScannerJob: {scanId} for UserID: {userID}\n{e}")
|
631
|
+
default_logger().debug(e, exc_info=True)
|
632
|
+
pass
|
633
|
+
finally:
|
634
|
+
if self.conn is not None:
|
635
|
+
self.conn.close()
|
636
|
+
self.conn = None
|
637
|
+
return success
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/NSEMarketStatus.py
RENAMED
@@ -86,7 +86,7 @@ class NSEMarketStatus(SingletonMixin, metaclass=SingletonType):
|
|
86
86
|
return shouldFetch, next_bell, filePath, modifiedDateTime
|
87
87
|
|
88
88
|
def getNextBell(self):
|
89
|
-
if
|
89
|
+
if 'unittest' in sys.modules or any("pytest" in arg for arg in sys.argv):
|
90
90
|
return '2025-02-14T09:15:00+05:30'
|
91
91
|
|
92
92
|
next_bell = self.marketStatus.get("next_bell")
|
@@ -0,0 +1 @@
|
|
1
|
+
VERSION='0.13.20250214.235'
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: PKDevTools
|
3
|
-
Version: 0.13.
|
3
|
+
Version: 0.13.20250214.235
|
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.20250214.235.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.20250214.235
|
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.20250214.235.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.20250213.233'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Archiver.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/ColorText.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Committer.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/CookieHelper.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Environment.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/FunctionTimeouts.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/GmailReader.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/MarketHours.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/MenuOptions.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/OutputControls.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKDateUtilities.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKJoinableQueue.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/PKPickler.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Singleton.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/SuppressOutput.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/Telegram.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/WorkflowManager.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/githubutilities.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/pubsub/__init__.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools/classes/pubsub/events.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/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.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/entry_points.txt
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/not-zip-safe
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/requires.txt
RENAMED
File without changes
|
{pkdevtools-0.13.20250213.233 → pkdevtools-0.13.20250214.235}/PKDevTools.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|