Esempio n. 1
0
    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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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")
Esempio n. 4
0
 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
Esempio n. 5
0
 def toDom(self, parentNode):
     XMLIntf.appendTextElement(parentNode, u"frequency", unicode(self.Frequency), attrib={
         u"modulation": self.Modulation.Name
     })
Esempio n. 6
0
 def toDom(self, parentNode):
     XMLIntf.appendTextElement(parentNode,
                               u"frequency",
                               unicode(self.Frequency),
                               attrib={u"modulation": self.Modulation.Name})
Esempio n. 7
0
    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