Source code for yandex_market_language.models.feed

from datetime import datetime

from .abstract import AbstractModel, XMLElement
from .shop import Shop

DATE_FORMAT = "%Y-%m-%d %H:%M"


[docs]class Feed(AbstractModel): """ YML Feed model. Docs: https://yandex.ru/support/partnermarket/export/yml.html """ __slots__ = [ 'shop', '_date' ] def __init__(self, shop: Shop, date: datetime.date = None): self.shop = shop self.date = date @property def date(self) -> datetime: return datetime.strptime(self._date, DATE_FORMAT) @date.setter def date(self, dt): dt = self._is_valid_datetime(dt, DATE_FORMAT, "date", True) if dt is None: dt = datetime.now().strftime(DATE_FORMAT) self._date = dt
[docs] def create_dict(self, **kwargs) -> dict: return dict( shop=self.shop.to_dict(), date=self.date, )
[docs] def create_xml(self, **kwargs) -> XMLElement: feed_el = XMLElement("yml_catalog", {"date": self._date}) self.shop.to_xml(feed_el) return feed_el
[docs] @staticmethod def from_xml(el: XMLElement) -> "Feed": shop = Shop.from_xml(el[0]) date = el.attrib.get("date") return Feed(shop, date=date)