ソースを参照

Added postprocess method to export strategies

Vsevolod Levitan 1 年間 前
コミット
c3ed99b5b2

+ 2 - 0
src/export/exporter.py

@@ -21,6 +21,8 @@ class exporter:
         for model in models:
             res += f"\n{self.__strat.export_model(model)}"
 
+        res = self.__strat.postprocess(res)
+
         return res
 
     def export_by_key(self, key):

+ 5 - 0
src/export/strategies/csv_export.py

@@ -29,6 +29,11 @@ class csv_export(export):
 
         return res[:-1]
 
+    def postprocess(self, text):
+        """Пост-обработка текста перед экспортом (по надобности)"""
+
+        return text
+
     @property
     def mimetype(self):
         return "text/csv"

+ 7 - 2
src/export/strategies/export.py

@@ -14,7 +14,7 @@ class export:
                 properties[name] = attr.fget(model)
         return properties
 
-    def export_header(model: abstract_reference):
+    def export_header(self, model: abstract_reference):
         """
             Создать заголовок экспорта
         Args:
@@ -23,7 +23,7 @@ class export:
 
         pass
 
-    def export_model(model: abstract_reference):
+    def export_model(self, model: abstract_reference):
         """
             Экспортировать модель
         Args:
@@ -32,6 +32,11 @@ class export:
 
         pass
 
+    def postprocess(self, text):
+        """Пост-обработка текста перед экспортом (по надобности)"""
+
+        return text
+
     @property
     def mimetype(self):
         """Mimetype"""

+ 5 - 0
src/export/strategies/json_export.py

@@ -21,6 +21,11 @@ class json_export(export):
         """
         pass
 
+    def postprocess(self, text):
+        """Пост-обработка текста перед экспортом (по надобности)"""
+
+        return text
+
     @property
     def mimetype(self):
         return "application/json"

+ 5 - 0
src/export/strategies/markdown_export.py

@@ -33,6 +33,11 @@ class markdown_export(export):
         res = res[:-2] + "|"
         return res
 
+    def postprocess(self, text):
+        """Пост-обработка текста перед экспортом (по надобности)"""
+
+        return text
+
     @property
     def mimetype(self):
         return "text/markdown"

+ 11 - 2
src/export/strategies/xml_export.py

@@ -5,7 +5,7 @@ from src.models.abstract_reference import abstract_reference
 class xml_export(export):
     """Класс стратегии для экспорта в XML"""
 
-    def export_header(model: abstract_reference):
+    def export_header(self, model: abstract_reference):
         """
             Создать заголовок экспорта
         Args:
@@ -13,10 +13,19 @@ class xml_export(export):
         """
         pass
 
-    def export_model(model: abstract_reference):
+    def export_model(self, model: abstract_reference):
         """
             Экспортировать модель
         Args:
             model (abstract_reference): модель, строку с которой нужно создать
         """
         pass
+
+    def postprocess(self, text):
+        """Пост-обработка текста перед экспортом (по надобности)"""
+
+        return text
+
+    @property
+    def mimetype(self):
+        return "application/xml"