def toDom(self, parentNode, flags=None): broadcast = XMLIntf.SubElement(parentNode, u"broadcast") XMLIntf.appendTextElement(broadcast, u"ID", unicode(self.ID)) XMLIntf.appendDateElement(broadcast, u"Start", self.BroadcastStart) if self.BroadcastEnd is not None: XMLIntf.appendDateElement(broadcast, u"End", self.BroadcastEnd) XMLIntf.appendTextElements( broadcast, [(u"StationID", unicode(self.StationID)), (u"Type", self.Type), (u"Confirmed", "" if self.Confirmed else None), (u"on-air", "" if self.getIsOnAir() else None), (u"has-transmissions", "" if self.Transmissions.count() > 0 else None)]) for frequency in self.Frequencies: frequency.toDom(broadcast) if flags is not None and "broadcast-transmissions" in flags: for transmission in self.Transmissions: transmission.toDom(broadcast, flags)
def toDom(self, parentNode, flags = None): station = XMLIntf.SubElement(parentNode, u"station") XMLIntf.appendTextElement(station, u"ID", unicode(self.ID)) if flags is None or not "no-metadata" in flags: self._metadataToDom(station) if flags is None or "schedule" in flags: if self.Schedule is not None: scheduleNode = self.Schedule.toDom(station, self.ID) if self.ScheduleConfirmed: scheduleNode.set("confirmed", "true") else: scheduleNode.set("confirmed", "false") elif self.ScheduleConfirmed: XMLIntf.SubElement(station, u"schedule", attrib={ u"confirmed": u"true" }) if flags is None or "broadcasts" in flags: broadcasts = XMLIntf.SubElement(parentNode, u"broadcasts") for broadcast in self.Broadcasts: broadcast.toDom(broadcasts, flags)
def _metadataToDom(self, parentNode): XMLIntf.appendTextElements(parentNode, ( (u"EnigmaIdentifier", self.EnigmaIdentifier), (u"PriyomIdentifier", self.PriyomIdentifier), (u"Nickname", self.Nickname) ) ) subtree = ElementTree.XML((u"<Description>"+self.Description+u"</Description>").encode("utf-8")) XMLIntf.applyNamespace(subtree, XMLIntf.xhtmlNamespace) subtree.tag = u"{{{0}}}Description".format(XMLIntf.namespace) parentNode.append(subtree) XMLIntf.appendTextElements(parentNode, [ (u"Status", self.Status) ], noneHandler = lambda name: u"" ) if self.Location is not None: XMLIntf.appendTextElement(parentNode, u"Location", self.Location) if self.getIsOnAir(): XMLIntf.SubElement(parentNode, u"on-air")
def toDom(self, parentNode, stationId = None): store = Store.of(self) schedule = XMLIntf.SubElement(u"schedule") XMLIntf.appendTextElements(schedule, ( ("id", unicode(self.ID)), ("name", self.Name) ) ) if self.ScheduleKind == u"once": XMLIntf.SubElement(schedule, u"no-repeat") else: XMLIntf.appendTextElement(schedule, u"repeat", unicode(self.Every), attrib={ u"step": self.ScheduleKind, u"skip": unicode(self.Skip) }) start = datetime.datetime.fromtimestamp(self.StartTimeOffset) start = start - datetime.timedelta(hours=1) end = None if self.EndTimeOffset is not None: end = datetime.datetime.fromtimestamp(self.EndTimeOffset) end = end - datetime.timedelta(hours=1) else: end = datetime.datetime.fromtimestamp(0) startStr, endStr = { "once": self._formatOnce(start, end), "year": self._formatYear(start, end), "month": self._formatMonth(start, end), "week": self._formatWeek(start, end), "day": self._formatDay(start, end), "hour": self._formatHour(start, end) }[self.ScheduleKind] XMLIntf.appendTextElement(schedule, u"start-offset", startStr, attrib={ u"seconds": unicode(self.StartTimeOffset) }) if self.EndTimeOffset is not None: XMLIntf.appendTextElement(schedule, u"end-offset", endStr, attrib={ u"seconds": unicode(self.EndTimeOffset) }) schedules = XMLIntf.SubElement(schedule, u"schedules") for _schedule in self.Children: _schedule.toDom(schedules, stationId) leaves = XMLIntf.SubElement(schedule, u"leaves") if stationId is not None: leavesSelect = store.find(ScheduleLeaf, (ScheduleLeaf.StationID == stationId) and (ScheduleLeaf.ScheduleID == self.ID)) for leaf in leavesSelect: leaf.toDom(leaves) else: for leaf in self.Leaves: leaf.toDom(leaves) return schedule
def toDom(self, parentNode): XMLIntf.appendTextElement(parentNode, u"frequency", unicode(self.Frequency), attrib={ u"modulation": self.Modulation.Name })
def toDom(self, parentNode): XMLIntf.appendTextElement(parentNode, u"frequency", unicode(self.Frequency), attrib={u"modulation": self.Modulation.Name})
def toDom(self, parentNode, stationId=None): store = Store.of(self) schedule = XMLIntf.SubElement(u"schedule") XMLIntf.appendTextElements(schedule, (("id", unicode(self.ID)), ("name", self.Name))) if self.ScheduleKind == u"once": XMLIntf.SubElement(schedule, u"no-repeat") else: XMLIntf.appendTextElement(schedule, u"repeat", unicode(self.Every), attrib={ u"step": self.ScheduleKind, u"skip": unicode(self.Skip) }) start = datetime.datetime.fromtimestamp(self.StartTimeOffset) start = start - datetime.timedelta(hours=1) end = None if self.EndTimeOffset is not None: end = datetime.datetime.fromtimestamp(self.EndTimeOffset) end = end - datetime.timedelta(hours=1) else: end = datetime.datetime.fromtimestamp(0) startStr, endStr = { "once": self._formatOnce(start, end), "year": self._formatYear(start, end), "month": self._formatMonth(start, end), "week": self._formatWeek(start, end), "day": self._formatDay(start, end), "hour": self._formatHour(start, end) }[self.ScheduleKind] XMLIntf.appendTextElement( schedule, u"start-offset", startStr, attrib={u"seconds": unicode(self.StartTimeOffset)}) if self.EndTimeOffset is not None: XMLIntf.appendTextElement( schedule, u"end-offset", endStr, attrib={u"seconds": unicode(self.EndTimeOffset)}) schedules = XMLIntf.SubElement(schedule, u"schedules") for _schedule in self.Children: _schedule.toDom(schedules, stationId) leaves = XMLIntf.SubElement(schedule, u"leaves") if stationId is not None: leavesSelect = store.find(ScheduleLeaf, (ScheduleLeaf.StationID == stationId) and (ScheduleLeaf.ScheduleID == self.ID)) for leaf in leavesSelect: leaf.toDom(leaves) else: for leaf in self.Leaves: leaf.toDom(leaves) return schedule