def _process(self): boaConfig = self._conf.getBOAConfig() pdfFilename = "%s - Book of abstracts.pdf" % cleanHTMLHeaderFilename( self._target.getTitle()) cacheFile = self._getCacheFileName() if os.path.isfile(cacheFile): mtime = pytz.utc.localize( datetime.utcfromtimestamp(os.path.getmtime(cacheFile))) else: mtime = None if boaConfig.isCacheEnabled( ) and not self._noCache and mtime and mtime > boaConfig.lastChanged: return send_file(pdfFilename, cacheFile, 'PDF') else: tz = timezoneUtils.DisplayTZ(self._aw, self._target).getDisplayTZ() pdf = AbstractBook(self._target, self.getAW(), tz=tz) fname = pdf.generate() with open(fname, 'rb') as f: data = f.read() with open(cacheFile, 'wb') as f: f.write(data) return send_file(pdfFilename, cacheFile, 'PDF')
def _process(self): if not self._target.isScheduled(): raise NoReportError( _("You cannot export the contribution with id %s because it is not scheduled" ) % self._target.getId()) filename = "%s-Contribution.ics" % self._target.getTitle() hook = ContributionHook({}, 'contribution', { 'event': self._conf.getId(), 'idlist': self._contrib.getId(), 'dformat': 'ics' }) res = hook(self.getAW(), self._req) resultFossil = {'results': res[0]} serializer = Serializer.create('ics') data = serializer(resultFossil) self._req.headers_out["Content-Length"] = "%s" % len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType("ICAL") self._req.content_type = """%s""" % (mimetype) self._req.headers_out[ "Content-Disposition"] = """inline; filename="%s\"""" % cleanHTMLHeaderFilename( filename) return data
def _process(self): manager = self._conf.getCSBookingManager() sw = manager.getSpeakerWrapperByUniqueId(self.spkUniqueId) if sw: self.file = sw.getLocalFile() self._req.headers_out["Content-Length"] = "%s" % self.file.getSize( ) self._req.headers_out["Last-Modified"] = "%s" % time.mktime( self.file.getCreationDate().timetuple()) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType(self.file.getFileType()) self._req.content_type = """%s""" % (mimetype) dispos = "inline" try: if self._req.headers_in['User-Agent'].find('Android') != -1: dispos = "attachment" except KeyError: pass self._req.headers_out[ "Content-Disposition"] = '%s; filename="%s"' % ( dispos, cleanHTMLHeaderFilename(self.file.getFileName())) if cfg.getUseXSendFile(): # X-Send-File support makes it easier, just let the web server # do all the heavy lifting return self._req.send_x_file(self.file.getFilePath()) else: return self.file.readBin() else: raise MaKaCError( "The speaker wrapper id does not match any existing speaker.")
def _process(self): manager = self._conf.getCSBookingManager() sw = manager.getSpeakerWrapperByUniqueId(self.spkUniqueId) if sw: self.file = sw.getLocalFile() self._req.headers_out["Content-Length"] = "%s" % self.file.getSize() self._req.headers_out["Last-Modified"] = "%s" % time.mktime(self.file.getCreationDate().timetuple()) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType(self.file.getFileType()) print self.file.getFilePath() self._req.content_type = """%s""" % (mimetype) dispos = "inline" try: if self._req.headers_in["User-Agent"].find("Android") != -1: dispos = "attachment" except KeyError: pass self._req.headers_out["Content-Disposition"] = '%s; filename="%s"' % ( dispos, cleanHTMLHeaderFilename(self.file.getFileName()), ) if cfg.getUseXSendFile(): # X-Send-File support makes it easier, just let the web server # do all the heavy lifting return self._req.send_x_file(self.file.getFilePath()) else: return self.file.readBin() else: raise MaKaCError("The speaker wrapper id does not match any existing speaker.")
def _process( self ): filename = "%s - contribution.xml"%self._target.getTitle() from MaKaC.common.output import outputGenerator, XSLTransformer xmlgen = XMLGen() xmlgen.initXml() outgen = outputGenerator(self.getAW(), xmlgen) xmlgen.openTag("event") outgen.confToXML(self._target.getConference(),0,1,1,showContribution=self._target.getId(), overrideCache=True) xmlgen.closeTag("event") basexml = xmlgen.getXml() path = Config.getInstance().getStylesheetsDir() stylepath = "%s.xsl" % (os.path.join(path,self._xmltype)) if self._xmltype != "standard" and os.path.exists(stylepath): try: parser = XSLTransformer(stylepath) data = parser.process(basexml) except: data = "Cannot parse stylesheet: %s" % sys.exc_info()[0] else: data = basexml self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "XML" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def createCSV(resvs, req): results=[['URL', 'id', 'start date', 'end date', 'name', 'site', 'building', 'floor', 'roomNr', 'IP', 'H323 IP', 'uses VC equipment' ]] for collision in resvs: resv = collision.withReservation if resv.usesAVC: usesAVC = 1 else: usesAVC = 0 results.append([str(UHRoomBookingBookingDetails.getURL(resv)), str(resv.id), collision.startDT.strftime("%Y-%m-%d %H:%M:%S"), collision.endDT.strftime("%Y-%m-%d %H:%M:%S"), resv.room.name or "", resv.room.site, str(resv.room.building), resv.room.floor, str(resv.room.roomNr), resv.room.customAtts.get('IP') or "", resv.room.customAtts.get('H323 IP') or "", usesAVC ]) #################### create temp file ################### cfg = Config.getInstance() tempPath = cfg.getUploadedFilesTempDir() tempFileName = tempfile.mkstemp( prefix="Bookings", suffix=".csv", dir = tempPath )[1] #################### write the results in the temp file ################### fd=open(tempFileName, 'w') writer = csv.writer(fd, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) for i in results: writer.writerow(i) fd.close() #################### return the CSV file ################### req.headers_out["Content-Length"] = "%s"%int(os.stat(tempFileName)[stat.ST_SIZE]) mimetype = cfg.getFileTypeMimeType( cfg.getFileType("CSV") ) req.content_type = """%s"""%(mimetype) req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(os.path.basename(tempFileName)) fr = open(tempFileName, "rb") data = fr.read() fr.close() return data
def _process(self): filename = "%s - contribution.xml" % self._target.getTitle() from MaKaC.common.output import outputGenerator, XSLTransformer xmlgen = XMLGen() xmlgen.initXml() outgen = outputGenerator(self.getAW(), xmlgen) xmlgen.openTag("event") outgen.confToXML(self._target.getConference(), 0, 1, 1, showContribution=self._target.getId(), overrideCache=True) xmlgen.closeTag("event") basexml = xmlgen.getXml() path = Config.getInstance().getStylesheetsDir() stylepath = "%s.xsl" % (os.path.join(path, self._xmltype)) if self._xmltype != "standard" and os.path.exists(stylepath): try: parser = XSLTransformer(stylepath) data = parser.process(basexml) except: data = "Cannot parse stylesheet: %s" % sys.exc_info()[0] else: data = basexml self._req.headers_out["Content-Length"] = "%s" % len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType("XML") self._req.content_type = """%s""" % (mimetype) self._req.headers_out[ "Content-Disposition"] = """inline; filename="%s\"""" % cleanHTMLHeaderFilename( filename) return data
def _process(self): filename = "%s - Contribution.xml" % self._target.getTitle().replace( "/", "") from MaKaC.common.xmlGen import XMLGen from MaKaC.common.output import outputGenerator xmlgen = XMLGen() xmlgen.initXml() outgen = outputGenerator(self.getAW(), xmlgen) xmlgen.openTag("marc:record", [ ["xmlns:marc", "http://www.loc.gov/MARC21/slim"], ["xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"], [ "xsi:schemaLocation", "http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" ] ]) outgen.contribToXMLMarc21(self._target, xmlgen) xmlgen.closeTag("marc:record") data = xmlgen.getXml() self._req.headers_out["Content-Length"] = "%s" % len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType("XML") self._req.content_type = """%s""" % (mimetype) self._req.headers_out[ "Content-Disposition"] = """inline; filename="%s\"""" % cleanHTMLHeaderFilename( filename) return data
def _process( self ): filename = "%s - Abstract.xml"%self._target.getTitle() x = XMLGen() x.openTag("abstract") x.writeTag("Id", self._target.getId()) x.writeTag("Title", self._target.getTitle()) afm = self._target.getConference().getAbstractMgr().getAbstractFieldsMgr() for f in afm.getFields(): id = f.getId() if f.isActive() and self._target.getField(id).strip() != "": x.writeTag("field",self._target.getField(id),[("id",id)]) x.writeTag("Conference", self._target.getConference().getTitle()) l = [] for au in self._target.getAuthorList(): if self._target.isPrimaryAuthor(au): x.openTag("PrimaryAuthor") x.writeTag("FirstName", au.getFirstName()) x.writeTag("FamilyName", au.getSurName()) x.writeTag("Email", au.getEmail()) x.writeTag("Affiliation", au.getAffiliation()) x.closeTag("PrimaryAuthor") else: l.append(au) for au in l: x.openTag("Co-Author") x.writeTag("FirstName", au.getFirstName()) x.writeTag("FamilyName", au.getSurName()) x.writeTag("Email", au.getEmail()) x.writeTag("Affiliation", au.getAffiliation()) x.closeTag("Co-Author") for au in self._target.getSpeakerList(): x.openTag("Speaker") x.writeTag("FirstName", au.getFirstName ()) x.writeTag("FamilyName", au.getSurName()) x.writeTag("Email", au.getEmail()) x.writeTag("Affiliation", au.getAffiliation()) x.closeTag("Speaker") #To change for the new contribution type system to: #x.writeTag("ContributionType", self._target.getContribType().getName()) x.writeTag("ContributionType", self._target.getContribType()) for t in self._target.getTrackList(): x.writeTag("Track", t.getTitle()) x.closeTag("abstract") data = x.getXml() self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "XML" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process( self ): filename = "%s - Event.xml"%cleanHTMLHeaderFilename(self._target.getTitle()) from MaKaC.common.xmlGen import XMLGen from MaKaC.common.output import outputGenerator xmlgen = XMLGen() xmlgen.initXml() outgen = outputGenerator(self.getAW(), xmlgen) xmlgen.openTag("marc:record", [["xmlns:marc","http://www.loc.gov/MARC21/slim"],["xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"],["xsi:schemaLocation", "http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"]]) outgen.confToXMLMarc21(self._target.getConference()) xmlgen.closeTag("marc:record") return send_file(filename, StringIO(xmlgen.getXml()), 'XML')
def _process( self ): filename = "%s - Event.xml"%cleanHTMLHeaderFilename(self._target.getTitle()) from MaKaC.common.xmlGen import XMLGen from MaKaC.common.output import outputGenerator xmlgen = XMLGen() xmlgen.initXml() outgen = outputGenerator(self.getAW(), xmlgen) xmlgen.openTag("marc:record", [["xmlns:marc","http://www.loc.gov/MARC21/slim"],["xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"],["xsi:schemaLocation", "http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"]]) outgen.confToXMLMarc21(self._target.getConference()) xmlgen.closeTag("marc:record") return send_file(filename, StringIO(xmlgen.getXml()), 'XML')
def _process(self): tz = self._target.getConference().getTimezone() filename = "%s - Contribution.pdf"%self._target.getTitle() pdf = ConfManagerContribToPDF(self._target.getConference(), self._target, tz=tz) data = pdf.getPDFBin() self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType("PDF") self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process( self ): tz = self._conf.getTimezone() filename = "%s - Abstract.pdf"%self._target.getTitle() pdf = TrackManagerAbstractToPDF(self._conf, self._abstract, self._track, tz=tz) data = pdf.getPDFBin() #self._req.headers_out["Accept-Ranges"] = "bytes" self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "PDF" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process(self): tz = timezoneUtils.DisplayTZ( self._aw, self._target.getConference()).getDisplayTZ() filename = "%s - Contribution.pdf" % self._target.getTitle() pdf = ContribToPDF(self._target.getConference(), self._target, tz=tz) data = pdf.getPDFBin() self._req.headers_out["Content-Length"] = "%s" % len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType("PDF") self._req.content_type = """%s""" % (mimetype) self._req.headers_out[ "Content-Disposition"] = """inline; filename="%s\"""" % cleanHTMLHeaderFilename( filename) return data
def _process( self ): filename = "%s-Session.ics"%self._session.getTitle() hook = SessionHook({}, 'session', {'event': self._conf.getId(), 'idlist':self._session.getId(), 'dformat': 'ics'}) res = hook(self.getAW(), self._req) resultFossil = {'results': res[0]} serializer = Serializer.create('ics') data = serializer(resultFossil) self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "ICAL" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process( self ): filename = "%s-Session.ics"%self._session.getTitle() hook = SessionHook({}, 'session', {'event': self._conf.getId(), 'idlist':self._session.getId(), 'dformat': 'ics'}) res = hook(self.getAW(), self._req) resultFossil = {'results': res[0]} serializer = Serializer.create('ics') data = serializer(resultFossil) self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "ICAL" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process( self ): filename = "%s-Categ.ics"%self._target.getName().replace("/","") hook = CategoryEventHook({}, 'categ', {'idlist':self._target.getId(), 'dformat': 'ics'}) res = hook(self.getAW(), self._req) resultFossil = {'results': res[0]} serializer = Serializer.create('ics') data = serializer(resultFossil) self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "ICAL" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process( self ): filename = "%s - Session.xml"%self._session.getTitle().replace("/","") from MaKaC.common.xmlGen import XMLGen from MaKaC.common.output import outputGenerator xmlgen = XMLGen() xmlgen.initXml() outgen = outputGenerator(self.getAW(), xmlgen) xmlgen.openTag("marc:record", [["xmlns:marc","http://www.loc.gov/MARC21/slim"],["xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"],["xsi:schemaLocation", "http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"]]) outgen.sessionToXMLMarc21(self._session, xmlgen) xmlgen.closeTag("marc:record") data = xmlgen.getXml() self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "XML" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process( self ): filename = "%s-Categ.ics"%self._target.getName().replace("/","") hook = CategoryEventHook({}, 'categ', {'idlist':self._target.getId(), 'dformat': 'ics'}) res = hook(self.getAW(), self._req) resultFossil = {'results': res[0]} serializer = Serializer.create('ics') data = serializer(resultFossil) self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "ICAL" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process(self): boaConfig = self._conf.getBOAConfig() pdfFilename = "%s - Book of abstracts.pdf" % cleanHTMLHeaderFilename(self._target.getTitle()) cacheFile = self._getCacheFileName() if os.path.isfile(cacheFile): mtime = pytz.utc.localize(datetime.utcfromtimestamp(os.path.getmtime(cacheFile))) else: mtime = None if boaConfig.isCacheEnabled() and not self._noCache and mtime and mtime > boaConfig.lastChanged: return send_file(pdfFilename, cacheFile, 'PDF') else: tz = timezoneUtils.DisplayTZ(self._aw,self._target).getDisplayTZ() pdf = AbstractBook(self._target,self.getAW(), tz=tz) data = pdf.getPDFBin() with open(cacheFile, 'wb') as f: f.write(data) return send_file(pdfFilename, cacheFile, 'PDF')
def _process( self ): if not self._target.isScheduled(): raise NoReportError(_("You cannot export the contribution with id %s because it is not scheduled")%self._target.getId()) filename = "%s-Contribution.ics"%self._target.getTitle() hook = ContributionHook({}, 'contribution', {'event': self._conf.getId(), 'idlist':self._contrib.getId(), 'dformat': 'ics'}) res = hook(self.getAW(), self._req) resultFossil = {'results': res[0]} serializer = Serializer.create('ics') data = serializer(resultFossil) self._req.headers_out["Content-Length"] = "%s"%len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType( "ICAL" ) self._req.content_type = """%s"""%(mimetype) self._req.headers_out["Content-Disposition"] = """inline; filename="%s\""""%cleanHTMLHeaderFilename(filename) return data
def _process(self): filename = "%s - Abstract.xml" % self._target.getTitle() x = XMLGen() x.openTag("abstract") x.writeTag("Id", self._target.getId()) x.writeTag("Title", self._target.getTitle()) afm = self._target.getConference().getAbstractMgr( ).getAbstractFieldsMgr() for f in afm.getFields(): id = f.getId() if f.isActive() and self._target.getField(id).strip() != "": x.writeTag("field", self._target.getField(id), [("id", id)]) x.writeTag("Conference", self._target.getConference().getTitle()) l = [] for au in self._target.getAuthorList(): if self._target.isPrimaryAuthor(au): x.openTag("PrimaryAuthor") x.writeTag("FirstName", au.getFirstName()) x.writeTag("FamilyName", au.getSurName()) x.writeTag("Email", au.getEmail()) x.writeTag("Affiliation", au.getAffiliation()) x.closeTag("PrimaryAuthor") else: l.append(au) for au in l: x.openTag("Co-Author") x.writeTag("FirstName", au.getFirstName()) x.writeTag("FamilyName", au.getSurName()) x.writeTag("Email", au.getEmail()) x.writeTag("Affiliation", au.getAffiliation()) x.closeTag("Co-Author") for au in self._target.getSpeakerList(): x.openTag("Speaker") x.writeTag("FirstName", au.getFirstName()) x.writeTag("FamilyName", au.getSurName()) x.writeTag("Email", au.getEmail()) x.writeTag("Affiliation", au.getAffiliation()) x.closeTag("Speaker") #To change for the new contribution type system to: #x.writeTag("ContributionType", self._target.getContribType().getName()) x.writeTag("ContributionType", self._target.getContribType()) for t in self._target.getTrackList(): x.writeTag("Track", t.getTitle()) x.closeTag("abstract") data = x.getXml() self._req.headers_out["Content-Length"] = "%s" % len(data) cfg = Config.getInstance() mimetype = cfg.getFileTypeMimeType("XML") self._req.content_type = """%s""" % (mimetype) self._req.headers_out[ "Content-Disposition"] = """inline; filename="%s\"""" % cleanHTMLHeaderFilename( filename) return data