csv_export.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from src.export.strategies.export import export
  2. from src.models.abstract_reference import abstract_reference
  3. class csv_export(export):
  4. """Класс стратегии для экспорта в CSV"""
  5. # Singleton
  6. def __new__(cls):
  7. if not hasattr(cls, "instance"):
  8. cls.instance = super(csv_export, cls).__new__(cls)
  9. return cls.instance
  10. def export_header(self, model: abstract_reference):
  11. """
  12. Создать заголовок экспорта
  13. Args:
  14. model (abstract_reference): модель, по которой нужно построить заголовок
  15. """
  16. return ";".join(super().get_properties(model).keys())
  17. def export_model(self, model: abstract_reference):
  18. """
  19. Экспортировать модель
  20. Args:
  21. model (abstract_reference): модель, строку с которой нужно создать
  22. """
  23. properties = super().get_properties(model)
  24. res = ""
  25. for property in properties.keys():
  26. val = properties[property]
  27. res += str(val).replace(";", ",") + ";"
  28. return res[:-1]