Пример #1
0
    def buildDoc(self, trans, elements):
        super(SubmitEventResource, self).buildDoc(trans, elements)

        self.station = self.getQueryValue("station",
                                          Typecasts.ValidStormObject(
                                              Station, self.store),
                                          defaultKey=None)
        self.eventClass = self.getQueryValue("eventClass",
                                             Typecasts.AllowBoth(
                                                 Typecasts.ValidStormObject(
                                                     EventClass, self.store),
                                                 Typecasts.EmptyString()),
                                             defaultKey=None)
        if self.eventClass == u"":
            self.eventClass = None
        self.startTime = self.getQueryValue("startTime",
                                            Typecasts.PriyomTimestamp(),
                                            defaultKey=TimeUtils.nowDate())
        self.endTime = self.getQueryValue("endTime",
                                          Typecasts.AllowBoth(
                                              Typecasts.PriyomTimestamp(),
                                              Typecasts.EmptyString()),
                                          defaultKey=None)
        if self.endTime == u"":
            self.endTime = None
        self.description = self.query.get("description", u"")
        if len(self.description) < 10:
            self.error = u"Description must be at least 10 characters long."

        self.link(u"/css/submit.css")
        self.setTitle(u"Submit event")

        submitted = False
        if "submit" in self.query and self.error is None:
            try:
                self.insert()
                submitted = True
            except SubmitParameterError:
                submitted = False

        if not submitted:
            self.SubElement(self.body,
                            u"pre").text = self.recursiveDict(self.query)
            if self.error is not None:
                self.SubElement(self.body, u"div", attrib={
                    u"class": u"error"
                }).text = self.error

            form = self.SubElement(self.body,
                                   u"form",
                                   name=u"logform",
                                   method=u"POST")

            self._eventInformationTree(self.section(form,
                                                    u"Event information"))
            self._descriptionTree(self.section(form, u"Description"))

            self.input(form, type=u"submit", name=u"submit", value=u"Submit")

            self._noteTree(self.section(self.body, u"Notes"))
Пример #2
0
    def __init__(self, model):
        super(SubmitLogResource, self).__init__(model)
        self.allowedMethods = frozenset(["GET", "POST"])

        self.stationValidator = Typecasts.ValidStormObject(Station, self.store)
        self.timestampValidator = Typecasts.PriyomTimestamp()
        self.durationValidator = float
        self.unicodeValidator = unicode

        self.broadcastValidator = Typecasts.AllowBoth(
            Typecasts.ValidStormObject(Broadcast, self.store),
            Typecasts.EmptyString())

        self.transmissionClassValidator = Typecasts.ValidStormObject(
            TransmissionClass, self.store)
Пример #3
0
    def insert(self):
        self.station = self.getQueryValue(
            "station", Typecasts.ValidStormObject(Station, self.store))

        if self.error is not None:
            self.setError(self.error)

        event = Event()
        try:
            event.Station = self.station
            event.StartTime = TimeUtils.toTimestamp(self.startTime)
            event.EndTime = TimeUtils.toTimestamp(
                self.endTime) if self.endTime is not None else None
            event.Description = self.description
            event.EventClass = self.eventClass
        except BaseException as e:
            del event
            self.setError(unicode(e))
        self.store.add(event)
        self.store.commit()

        self.SubElement(self.body, u"pre").text = u"""Added new event
Station: {0}
Event (#{2}): {1}""".format(unicode(event.Station), unicode(event),
                            unicode(event.ID))
Пример #4
0
 def renderEditor(self, parent, path):
     h1 = HTMLIntf.SubElement(HTMLIntf.SubElement(parent, u"header"), u"h1")
     
     if self.table is None:
         h1.text = u"Welcome to the API table editor"
         HTMLIntf.SubElement(parent, u"p").text = u"Please select a table from the left to start editing contents."
         return
     
     if not self.table in UITree.virtualTables:
         h1.text = u"""Table "{0}" not found!""".format(self.table)
         HTMLIntf.SubElement(parent, u"p").text = u"The table you are trying to access does not exist!"
         return
     
     virtualTable = UITree.virtualTables[self.table]
     if len(path) == 0:
         # show the table
         self.renderTable(parent, virtualTable, h1)
     elif len(path) == 1:
         # show item editor
         try:
             if path[0] == "new":
                 obj = virtualTable.cls()
             else:
                 obj = Typecasts.ValidStormObject(virtualTable.cls, self.store)(path[0])
         except:
             self.redirectUpwards()
         else:
             self.renderObjectEditor(parent, virtualTable, obj, h1)
     elif len(path) == 2:
         # show table of related objects
         if path[0] == "new":
             self.redirectUpwards()
         obj = Typecasts.ValidStormObject(virtualTable.cls, self.store)(path[0])
         try:
             referencingTable = virtualTable.referencingTableMap[path[1]]
             referencedVirtualTable = UITree.virtualTables[referencingTable.name]
         except KeyError:
             self.redirectUpwards()
         else:
             self.renderReferencedTable(parent, virtualTable, obj, referencingTable, referencedVirtualTable, h1)