Browse Source

process_edit(), process_move(), process_delete(), process_restore()

tags/v0.1^2
Ben Kurtovic 12 years ago
parent
commit
22850c86bd
1 changed files with 38 additions and 11 deletions
  1. +38
    -11
      bot/tasks/afc_statistics.py

+ 38
- 11
bot/tasks/afc_statistics.py View File

@@ -56,7 +56,7 @@ class Task(BaseTask):
"edit": self.process_edit,
"move": self.process_move,
"delete": self.process_delete,
"restore": self.process_restore,
"restore": self.process_edit,
}

method = methods.get(action)
@@ -161,7 +161,7 @@ class Task(BaseTask):
continue
if real_oldid == oldid:
continue
self.update_page(title)
self.update_page(cursor, title)

def sync_pending(self, cursor):
query = """SELECT page_title FROM page JOIN row ON page_id = row_id
@@ -174,7 +174,7 @@ class Task(BaseTask):
if page in self.ignore_list:
continue
if page not in tracked:
self.track_page(page)
self.track_page(cursor, page)

def sync_old(self, cursor):
query = """DELETE FROM page, row USING page JOIN row
@@ -182,20 +182,47 @@ class Task(BaseTask):
AND ADDTIME(page_special_time, '36:00:00') < NOW()"""
cursor.execute(query)

def track_page(self, page):
def track_page(self, cursor, page):
# Page update hook when page is not in our database.
pass

def update_page(self, page):
def update_page(self, cursor, page):
# Page update hook when page is in our database.
pass

def process_edit(self, page, **kwargs):
pass
query = "SELECT * FROM page WHERE page_title = ?"
with self.conn.cursor() as cursor, self.db_access_lock:
cursor.execute(query, (page,))
result = cursor.fetchall()
if result:
self.update_page(cursor, page)
else:
self.track_page(cursor, page)

def process_move(self, page, **kwargs):
pass
query1 = "SELECT * FROM page WHERE page_title = ?"
query2 = "SELECT page_latest FROM page WHERE page_title = ?"
query3 = "UPDATE page SET page_title = ?, page_modify_oldid = ? WHERE page_title = ?"
source, dest = page
with self.conn.cursor() as cursor, self.db_access_lock:
cursor.execute(query1, (source,))
result = cursor.fetchall()
if not result:
self.track_page(cursor, page)
else:
try:
new_oldid = list(self.site.sql_query(query2, (dest,)))[0][0]
except IndexError:
new_oldid = result[11]
cursor.execute(query3, (dest, new_oldid, source))

def process_delete(self, page, **kwargs):
pass

def process_restore(self, page, **kwargs):
pass
query1 = "SELECT page_id FROM page WHERE page_title = ?"
query2 = "DELETE FROM page JOIN row ON page_id = row_id WHERE page_title = ?"
with self.conn.cursor() as cursor, self.db_access_lock:
result = self.site.sql_query(query1, (page,))
if not list(result)[0]:
cursor.execute(query2, (page,))
return
self.process_edit(page)

Loading…
Cancel
Save