Source code for simple_report.core.document_wrap

#coding: utf-8
from abc import ABCMeta, abstractmethod, abstractproperty
from simple_report.utils import ZipProxy

__author__ = 'prefer'



[docs]class BaseDocument(object): """ Базовый класс для всех документов """ __metaclass__ = ABCMeta @abstractmethod
[docs] def build(self): """ Сборка документа :result: """
[docs]class SpreadsheetDocument(object): __metaclass__ = ABCMeta @abstractproperty
[docs] def workbook(self): """ Рабочая книга """
[docs] def get_sections(self): """ Возвращает все секции в шаблоне """ return self.workbook.get_sections()
[docs] def get_section(self, name): """ Возвращает секцию по названию шаблона """ return self.workbook.get_section(name)
@property
[docs] def sheets(self): """ Листы отчета """ return self.workbook.sheets
[docs]class DocumentOpenXML(BaseDocument): u""" Базовый класс для работы со структурой open xml """ __metaclass__ = ABCMeta def __init__(self, src_file, tags): self.extract_folder = ZipProxy.extract(src_file) self._tags = tags # Ссылка на тэги
[docs] def build(self, dst_file): """ Сборка отчета """ ZipProxy.pack(dst_file, self.extract_folder)