Exemplo n.º 1
0
Arquivo: dj.py Projeto: hchapman/WBOR
  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/')
Exemplo n.º 2
0
  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))
Exemplo n.º 3
0
Arquivo: dj.py Projeto: hchapman/WBOR
  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))
Exemplo n.º 4
0
Arquivo: dj.py Projeto: hchapman/WBOR
 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))
Exemplo n.º 5
0
 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],}))
Exemplo n.º 6
0
Arquivo: dj.py Projeto: hchapman/WBOR
  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))
Exemplo n.º 7
0
  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))
Exemplo n.º 8
0
Arquivo: dj.py Projeto: hchapman/WBOR
 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/")
Exemplo n.º 9
0
 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))
Exemplo n.º 10
0
Arquivo: dj.py Projeto: hchapman/WBOR
 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))
Exemplo n.º 11
0
Arquivo: dj.py Projeto: hchapman/WBOR
  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))
Exemplo n.º 12
0
Arquivo: dj.py Projeto: hchapman/WBOR
 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/")
Exemplo n.º 13
0
Arquivo: dj.py Projeto: hchapman/WBOR
 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")
Exemplo n.º 14
0
Arquivo: dj.py Projeto: hchapman/WBOR
  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
Exemplo n.º 15
0
  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]))
Exemplo n.º 16
0
  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('/')