From 8767d00e3dc2faf1e2354107e5544663bcdea24c Mon Sep 17 00:00:00 2001 From: Mathieu Loiseau <mathieu.loiseau@liris.cnrs.fr> Date: Fri, 24 Mar 2023 15:17:24 +0100 Subject: [PATCH] With log sqlite db --- wikstraklog.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ wikstraktor.py | 7 +++++-- 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 wikstraklog.py diff --git a/wikstraklog.py b/wikstraklog.py new file mode 100755 index 0000000..239ee01 --- /dev/null +++ b/wikstraklog.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +import sqlite3 + +class Wikstraklog: + table_name = "Wikstraklog" + def __init__(self, wikstraktor_version, word_language, wiki_language, file="wikstraktor.sqlite"): + self.__connector__ = sqlite3.connect(file) + self.__cursor__ = self.__connector__.cursor() + if self.__execute__(f"SELECT name FROM sqlite_master WHERE type='table' AND name='{Wikstraklog.table_name}';").fetchone() is None : + self.__execute__(f"""CREATE TABLE "{Wikstraklog.table_name}" ( + "Date" DATETIME DEFAULT CURRENT_TIMESTAMP, + "Wikstraktor_version" TEXT NOT NULL, + "Word_language" TEXT NOT NULL, + "Wiki_language" TEXT NOT NULL, + "Word_form" TEXT NOT NULL, + "Wiki_permanent_id" INTEGER NOT NULL, + "Caller_method" TEXT, + "Content" TEXT +);""") + self.wx_v = wikstraktor_version + self.w_l = word_language + self.wk_l = wiki_language + + def set_context(self, word, permanentId): + self.cur_w = word + self.cur_pid = permanentId + + def __execute__(self, query, params = None): + if params == None: + res = self.__cursor__.execute(query) + else: + res = self.__cursor__.execute(query, params) + self.__connector__.commit() + return res + + def add_log(self, caller, content, word=None, permanentId=None): + if word == None: + word = self.cur_w + if permanentId == None: + permanentId = self.cur_pid + res = self.__execute__(f"INSERT INTO `{Wikstraklog.table_name}` (`Wikstraktor_version`, `Word_language`, `Wiki_language`, `Word_form`, `Wiki_permanent_id`, `Caller_method`, `Content`) VALUES (?, ?, ?, ?, ?, ?, ?)", (self.wx_v, self.w_l, self.wk_l, word, permanentId, caller, str(content))) + return res + +if __name__ == "__main__": + from wikstraktor_version import version as the_version + log = Wikstraklog(the_version, "en", "fr") + log.set_context("blue", 123456789) + log.add_log("exampleMethod", "no relevant content") diff --git a/wikstraktor.py b/wikstraktor.py index b567c94..d7d8d1e 100755 --- a/wikstraktor.py +++ b/wikstraktor.py @@ -3,6 +3,8 @@ import pywikibot import wikitextparser import importlib import json +from wikstraktor_version import version as the_version +from wikstraklog import Wikstraklog #ICITE : fr marche pas, en prend des trucs vides à virer (cf. yellow… def & example) @@ -447,8 +449,8 @@ class Wikstraktor: try: m_name = f"{wiki_language}_{entry_language}".capitalize() instance = getattr(importlib.import_module(f"parsers.{m_name.lower()}"), f"{m_name}_straktor")() - from wikstraktor_version import version as v - instance.version = v + instance.version = the_version + instance.log = Wikstraklog(the_version, entry_language, wiki_language) except ModuleNotFoundError: print(f"parsers.{m_name.lower()} module not found or {m_name}_straktor not found in module") instance = None @@ -490,6 +492,7 @@ class Wikstraktor: def parse(self, entry, v_id, sections): self.parserContext = ParserContext(entry, self.entry_language, self.wiki_language, v_id, self.version) + self.log.set_context(entry, v_id) for s in sections: if s.title != None : #handle wiki context -- GitLab