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"))
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)
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))
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)