diff options
| author | Vosjedev <vosje@vosjedev.net> | 2025-11-06 15:33:07 +0100 |
|---|---|---|
| committer | Vosjedev <vosje@vosjedev.net> | 2025-11-06 15:33:07 +0100 |
| commit | f13fc2943d1292bf31a9fe8112dc3729e29280eb (patch) | |
| tree | c7978cd3a368f9e9a55992212d06a7665ba828bf | |
| parent | f478d5ae45c14c139973e15542d3a67668bdfa08 (diff) | |
| download | acit-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.py | 58 |
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() + |
