aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVosjedev <vosje@vosjedev.net>2025-11-06 15:33:07 +0100
committerVosjedev <vosje@vosjedev.net>2025-11-06 15:33:07 +0100
commitf13fc2943d1292bf31a9fe8112dc3729e29280eb (patch)
treec7978cd3a368f9e9a55992212d06a7665ba828bf
parentf478d5ae45c14c139973e15542d3a67668bdfa08 (diff)
downloadacit-f13fc2943d1292bf31a9fe8112dc3729e29280eb.tar.gz
acit-f13fc2943d1292bf31a9fe8112dc3729e29280eb.tar.bz2
acit-f13fc2943d1292bf31a9fe8112dc3729e29280eb.tar.xz
types.py: Allow usage of the Tracker type
-rw-r--r--src/acit/types.py58
1 files changed, 39 insertions, 19 deletions
diff --git a/src/acit/types.py b/src/acit/types.py
index 4c84f26..fd9d20a 100644
--- a/src/acit/types.py
+++ b/src/acit/types.py
@@ -150,6 +150,22 @@ class Site():
return self.getbug(tracker=tracker,bugid=nr)
+ def gettracker(self,tracker:str):
+ # make sure bug exists
+ with self.dbpool.get_connection() as conn, conn.cursor() as cur:
+ cur.execute("SELECT 1 FROM bugs WHERE tracker=? LIMIT 1",(tracker,))
+ if not cur.fetchone():
+ return None
+
+ # fetch already existent bug object if possible, otherwise make new one
+ if (tracker,) in self.bugcache:
+ trackerobj=self.bugcache[(tracker,)]
+ else:
+ trackerobj=Tracker(self,tracker)
+ self.bugcache[(tracker,)]=trackerobj
+
+ return trackerobj
+
def findtrackers(self,query:str):
self.update_trackers()
with self.dbpool.get_connection() as conn, conn.cursor() as cur:
@@ -258,7 +274,6 @@ class Bug():
"""
with self.site.dbpool.get_connection() as conn, conn.cursor() as cur:
cur.execute("SELECT email FROM subscribers WHERE tracker=? AND bugid=?",(self.tracker,self.bugid))
- conn.commit()
return [ value[0] for value in cur ]
def addsubscriber(self,email):
@@ -284,9 +299,8 @@ class Tracker():
self._cache={
"name":data[0],
- "category":data[1],
- "homepage":data[2],
- "readme":data[3]
+ "homepage":data[1],
+ #"readme":data[2] # NOTE: could implement later, let's do that though
}
# NOTE: this is a lot of repeated code, maybe we can rewrite this into a __setattr__ and __getattribute__ method?
@@ -296,21 +310,6 @@ class Tracker():
return self._cache["name"]
@property
- def category(self):
- "The category of this tracker"
- return self._cache["category"]
-
- @category.setter
- def category(self,value):
- if len(value)>80:
- raise ValueError("Subject length not allowed to be higher than 80, this is %d"%len(value))
-
- with self.site.dbpool.get_connection() as conn, conn.cursor() as cur:
- cur.execute("UPDATE trackers SET category=? WHERE tracker=? AND bugid=?",(value,self.tracker,self.bugid))
- conn.commit()
- self._cache["category"]=value
-
- @property
def homepage(self):
"The homepage of this tracker"
return self._cache["homepage"]
@@ -339,3 +338,24 @@ class Tracker():
cur.execute("UPDATE trackers SET readme_url=? WHERE tracker=? AND bugid=?",(value,self.tracker,self.bugid))
conn.commit()
self._cache["readme_url"]=value
+
+ @property
+ def subscribers(self):
+ """
+ List of emailaddresses subscribed. Readonly, to add or remove, use appropriate methods.
+ NOTE: this executes an SQL query.
+ """
+ with self.site.dbpool.get_connection() as conn, conn.cursor() as cur:
+ cur.execute("SELECT email FROM subscribers WHERE tracker=? AND bugid=NULL",(self.tracker,))
+ return [ value[0] for value in cur ]
+
+ def addsubscriber(self,email):
+ with self.site.dbpool.get_connection() as conn, conn.cursor() as cur:
+ cur.execute("INSERT INTO subscribers VALUES (?,NULL,?)",(self.tracker,email))
+ conn.commit()
+
+ def rmsubscriber(self,email):
+ with self.site.dbpool.get_connection() as conn, conn.cursor() as cur:
+ cur.execute("DELETE FROM subscribers WHERE tracker=? AND bugid=NULL AND email=?)",(self.tracker,email))
+ conn.commit()
+