def post(self): if (self.request.get("submit") != "Add Program"): self.session.add_flash( "There was an error processing your request. Please try again.") else: slug = self.request.get("slug") program = Program.get(slug=slug) if program: self.session.add_flash(("Program \"%s\" already exists with slug %s."% (program.title, slug))) self.redirect("/dj/programs/") return # Set up the program entry, and then put it in the DB program = Program.new(title=self.request.get("title"), slug=self.request.get("slug"), desc=self.request.get("desc"), dj_list=self.request.get_all("djkey"), page_html=self.request.get("page_html"), current=bool(self.request.get("current"))) program.put() self.session.add_flash( "%s was successfully created associated a program. " "Click <a href='/dj/programs/%s'>here</a> " "to edit it (you probably want to do " "this as there are no DJs on it currently)."% (program.title, str(program.key))) self.redirect('/dj/programs/')
def get(self): shows = Program.get(num=1000) # TODO: NOPE slug = self.request.get("show") datestring = self.request.get("programdate") selected_date = None if datestring: try: selected_date = datetime.datetime.strptime(datestring, "%m/%d/%Y") selected_date = selected_date + datetime.timedelta(hours=12) except: self.session.add_flash("The date provided could not be parsed.") self.redirect("/") return if slug: selected_program = Program.get(slug=slug) if not selected_program: self.session.add_flash("There is no program for slug %s." % slug) self.redirect("/") return if selected_date: plays = models.getPlaysBetween(program=selected_program, after=(selected_date - datetime.timedelta(hours=24)), before=(selected_date + datetime.timedelta(hours=24))) else: lastplay = Play.get_last(program=selected_program, num=1) if lastplay: lastplay = lastplay[0] last_date = lastplay.play_date plays = models.getPlaysBetween(program=selected_program, after=(last_date - datetime.timedelta(days=1))) else: plays = [] else: if not selected_date: lastplay = Play.get_last() if lastplay: selected_date = lastplay.play_date if selected_date: plays = models.getPlaysForDate(selected_date) else: plays = Play.get_last(num=60) template_values = { 'playlists_selected': True, 'session': self.session, 'plays': plays, 'shows': shows, } self.response.out.write(template.render(get_path("playlist.html"), template_values))
def get(self): # If we have a reset_key, then try to reset the password. reset_key = self.request.get("reset_key") if reset_key: username = self.request.get("username") try: reset_dj = Dj.recovery_login(username, reset_key) except NoSuchUsername: self.session.add_flash("There is no user by that name") self.redirect("/dj/reset/") return except InvalidLogin: self.flash = ("This request is no longer valid, or the key provided" "is somehow corrupt. If clicking the link in your email" "does not work again, perhaps request a new reset.") self.redirect("/dj/reset") return self.set_session_user(reset_dj) program_list = Program.get_by_dj(dj=reset_dj) if not program_list: self.session.add_flash( "You have been temporarily logged in. Please change your" "password so that you may log in in the future!") self.session.add_flash( "You will not be able to do much until you have a" "program. If you see this message, please email" "<a href='mailto:[email protected]'>Connor</a>" "immediately.") self.redirect('/dj/myself') return elif len(program_list) == 1: self.set_session_program(program_list[0]) self.session.add_flash( "You have been temporarily logged in. Please change your password so " "that you may log in in the future!") self.session.add_flash( "Logged in with program %s"%program_list[0].title) self.redirect("/dj/myself") return else: self.session.add_flash( "You have been temporarily logged in. Please change your password so " "that you may log in in the future!") self.redirect("/dj/myself") return else: if self.session_has_login(): self.redirect("/dj/") return template_values = { 'session': self.session, 'flash': self.flashes, } self.response.out.write( template.render(get_path("dj_reset_password.html"), template_values))
def get(self, program_key): program = Program.get(program_key) if not program: self.session.add_flash( "Unable to find program (" + program_key + "). Please try again.") self.redirect("/dj/programs/") else: new_programs = Program.get(num=5) template_values = { 'program_djs': [Dj.get(dj) for dj in program.dj_list], 'program': program, 'session': self.session, 'flash': self.flashes, 'new_programs': new_programs } self.response.out.write( template.render(get_path("dj_manage_programs.html"), template_values))
def get(self): q = self.request.get("query") progs = Program.autocomplete(q) self.response.out.write(json.dumps({ 'query': q, 'suggestions': ["%s - %s"%(prog.title, prog.slug) for prog in progs], 'data': [{'key': prog.key.urlsafe(), 'name': prog.title, 'slug': prog.slug} for prog in progs],}))
def get(self): new_programs = Program.get(num=5) template_values = { 'session': self.session, 'flash': self.flashes, 'new_programs': new_programs, } self.response.out.write( template.render(get_path("dj_manage_programs.html"), template_values))
def get(self): slug = self.request.get("show") datestring = self.request.get("programdate") selected_date = None selected_program = None if datestring: try: selected_date = datetime.datetime.strptime(datestring, "%m/%d/%Y") selected_date = selected_date + datetime.timedelta(hours=12) except: self.session.add_flash("The date provided could not be parsed.", level="error") self.redirect("/playlists") return if slug: selected_program = Program.get(slug=slug) if not selected_program: self.session.add_flash("There is no program for slug %s." % slug, level="error") self.redirect("/playlists") return if selected_date: plays = Play.get_last(program=selected_program, after=(selected_date - datetime.timedelta(hours=24)), before=(selected_date + datetime.timedelta(hours=24)), num=60) else: lastplay = Play.get_last(program=selected_program) if lastplay: last_date = lastplay.play_date plays = Play.get_last(program=selected_program, after=(last_date - datetime.timedelta(days=1)), num=60) else: plays = [] else: if selected_date: plays = Play.get_last(before=selected_date, num=60) else: plays = Play.get_last(num=60) template_values = { 'playlists_selected': True, 'session': self.session, 'plays': plays, 'show': selected_program, 'datestring': datestring, } self.response.out.write(template.render(get_path("playlist.html"), template_values))
def post(self): program_key = self.request.get("programkey") program = Program.get(key=program_key) if not program: self.session.add_flash( "An error occurred retrieving your program. Please try again.") self.redirect("/dj/") return self.set_session_program(program) self.session.add_flash( "The current program has been set to %s."%program.title) self.redirect("/dj/")
def get(self, slug): program = Program.get_by_slug(slug) if not program: self.session.add_flash("Invalid program slug specified.") self.redirect("/") return template_values = { 'session': self.session, 'flash': self.flashes, 'program': program, 'djs' : tuple(Dj.get(program.dj_list) if program.dj_list else None), } self.response.out.write( template.render(get_path("show.html"), template_values))
def get(self): program_list = Program.get_by_dj(dj=self.dj_key) if len(program_list) <= 1: self.session.add_flash( "You don't have more than one radio program to choose between.") self.redirect("/dj/") return template_values = { 'program_list': program_list, 'session': self.session, 'flash': self.flashes, 'posts': BlogPost.get_last(num=1) } self.response.out.write(template.render(get_path("dj_selectprogram.html"), template_values))
def get(self): if not self.session_has_program(): self.session.add_flash( "You can't chart songs until you have an associated program in the " "system. Please contact a member of management immediately.") self.redirect("/dj/") return memcache_key = "playlist_html_%s"%self.session.get('program').get('key') playlist_html = memcache.get(memcache_key) if not playlist_html: playlist_html = template.render("dj_chartsong_playlist_div.html", {'playlist': Play.get_last(num=50, program=Program.get(self.program_key), after=(datetime.date.today())), } ) memcache.set(memcache_key, playlist_html, 60 * 60 * 24) last_psa = None #Psa.get_last() # cache.getLastPsa() new_albums = None #new_song_div_html = memcache.get("new_song_div_html") album_songs = [] new_song_div_html = None if not new_song_div_html: new_albums = Album.get_new() #by_artist=True) if new_albums: logging.debug(new_albums) album_songs = Song.get(new_albums[0].tracklist) new_song_div_html = template.render( get_path("dj_chartsong_newsongdiv.html"), {'new_albums': new_albums, 'album_songs': album_songs,}) memcache.set("new_song_div_html", new_song_div_html) template_values = { 'last_psa': last_psa, 'playlist_html': playlist_html, 'session': self.session, 'flash': self.flashes, 'new_albums': new_albums, 'album_songs': album_songs, 'new_song_div_html': new_song_div_html, } self.response.out.write( template.render(get_path("dj_chartsong.html"), template_values))
def post(self, program_key): program = Program.get(program_key) if (not program or (self.request.get("submit") != "Edit Program" and self.request.get("submit") != "Delete Program")): self.session.add_flash( "There was an error processing your request. Please try again.") elif self.request.get("submit") == "Edit Program": program.title = self.request.get("title") program.slug = self.request.get("slug") program.desc = self.request.get("desc") program.page_html = self.request.get("page_html") program.dj_list = self.request.get_all("djkey") program.current = bool(self.request.get("current")) program.put() self.session.add_flash(program.title + " successfully edited.") elif self.request.get("submit") == "Delete Program": program.delete() self.session.add_flash(program.title + " successfully deleted.") self.redirect("/dj/programs/")
def post(self): program = cache.getProgram(self.request.get("program_key")) if not program: self.session.add_flash("Unable to find program.") self.redirect("/dj/myshow") return slug = self.request.get("slug") p = Program.get_by_slug(slug) if p and program.key != p.key: self.session.add_flash("There is already a program with slug \"" + slug + "\".") self.redirect("/dj/myshow") return program.title = self.request.get("title") program.slug = self.request.get("slug") program.desc = self.request.get("desc") program.page_html = self.request.get("page_html") program.put() self.set_session_program(program) self.session.add_flash("Program successfully changed.") self.redirect("/dj/myshow")
def post(self): username = self.request.get("username") password = self.request.get("password") # Try to log in. try: dj = Dj.login(username, password) except NoSuchUsername: self.flash = "Invalid username. Please try again." self.redirect('/dj/login/') return except InvalidLogin: self.flash = "Invalid username/password combination. Please try again." self.redirect('/dj/login/') return self.user = dj program_list = Program.get_by_dj(dj=dj, num=10) if not program_list: self.flash = ("You have successfully logged in," "but you have no associated programs." "You will not be able to do much until" "you have a program. If you see this message," "please email <a href='mailto:[email protected]'>" "Connor</a> immediately.") self.redirect('/dj/') return elif len(program_list) == 1: self.program = program_list[0] self.flash = ("Successfully logged in with program %s."% program_list[0].title) self.redirect("/dj/") return else: self.redirect("/dj/selectprogram/") return
def get(self): import csv shows = [] #Program.get(num=1000) slug = self.request.get("show") datestring = self.request.get("programdate") selected_date = None if datestring: try: selected_date = datetime.datetime.strptime(datestring, "%m/%d/%Y") selected_date = selected_date + datetime.timedelta(hours=12) print selected_date.isoformat(" ") except: self.session.add_flash("The date provided could not be parsed.") self.redirect("/") return if slug: selected_program = Program.get_by_slug(slug) if not selected_program: self.session.add_flash("There is no program for slug %s." % slug) self.redirect("/") return if selected_date: plays = Play.get_last(program=selected_program, after=(selected_date - datetime.timedelta(hours=24)), before=(selected_date + datetime.timedelta(hours=24)), num=60) else: lastplay = Play.get_last(program=selected_program) if lastplay: last_date = lastplay.play_date plays = Play.get_last(program=selected_program, after=(last_date - datetime.timedelta(days=1)), num=60) else: plays = [] else: if selected_date is None: lastplay = Play.get_last() if lastplay: selected_date = lastplay.play_date if selected_date: print "doop" print selected_date.isoformat(" ") plays = Play.get_last(after=(selected_date - datetime.timedelta(hours=24)), before=(selected_date + datetime.timedelta(hours=24)), num=1000) else: plays = Play.get_last(num=60) csv_sep = "\t" out_data = [("Date", "Time", "Title", "Artist")] for p in plays: s = p.song out_data.append((p.play_date.isoformat(csv_sep), s.title, s.artist)) self.response.out.write("\n".join([csv_sep.join(row) for row in out_data]))
def get(self): labels = Permission.PERMISSIONS try: seth = Dj.get_by_email("*****@*****.**") except NoSuchEntry: seth = Dj.new(fullname='Seth Glickman', email='*****@*****.**', username='******', password='******') seth.put() hchaps = Dj.new(fullname='Harrison Chapman', email="*****@*****.**", username="******", password="******") program = Program.new( title='Seth\'s Show', slug='seth', desc='This is the show where Seth plays his favorite music.', dj_list=[seth.key], page_html='a <b>BOLD</b> show!') program.put() for l in labels: try: permission = Permission.get_by_title(l) except NoSuchEntry: permission = Permission.new(l, []) permission.put() finally: if seth.key not in permission.dj_list: permission.add_dj(seth.key) permission.put() if not BlogPost.get_last(num=3): post1 = BlogPost.new( title="Blog's first post!", text="This is really just filler text on the first post.", slug="first-post", post_date=datetime.datetime.now()) post1.put() time.sleep(2) post2 = BlogPost.new( title="Blog's second post!", text="More filler text, alas.", slug="second-post", post_date=datetime.datetime.now()) post2.put() contactspage = BlogPost.new( title="Contacts Page", text="This is a dummy stub for the contacts page. Lorem ipsum whatnot", slug="contacts-page", post_date=datetime.datetime.now()) contactspage.put() artists = [ "Bear In Heaven", "Beck", "Arcade Fire", "Andrew Bird", "The Antlers", "Arcade Fire", "The Beach Boys", "Brian Wilson", "The Beatles", "Beethoven", "Beirut", "Belle & Sebastian", "Benji Hughes", "Club 8", "Crayon Fields", ] for a in artists: if not (ArtistName._RAW.query() .filter(ArtistName._RAW.artist_name == a) .fetch(1, keys_only=True)): ar = ArtistName.new(artist_name=a) ar.put() self.session.add_flash("Permissions set up, ArtistNames set up, " "Blog posts set up, DJ Seth entered.") self.redirect('/')