Example #1
0
 def post(self):
   soundboard_id = self.request.get('soundboard_id')
   if soundboard_id is None:
     logging.error('soundboard ID was none')
     self.redirect('/')
     return
   soundboard = Soundboard.get_by_id(long(soundboard_id))
   if soundboard is None:
     logging.error('soundboard was none')
     self.redirect('/')
     return
   session_id = self.request.cookies.get('id')
   if session_id is None:
     logging.error('session ID was none')
     self.redirect('/')
     return
   elif long(session_id) != long(soundboard.session_id):
     logging.error('session IDs were not equal')
     self.redirect('/')
     return
   new_soundboard = Soundboard.copy_sounds_only(soundboard)
   db.put(new_soundboard)
   
   self.response.out.write(
   'Share <a href="/board/%d">this link</a> with your friends' % long(new_soundboard.key().id())) 
 def post(self):
   soundboard_id = self.request.get('soundboard_id')
   if soundboard_id is None:
     self.response.out.write('soundboard_id is None')
     return
   self.response.out.write('soundboard_id: %s' % soundboard_id)
   soundboard = Soundboard.get_by_id(long(soundboard_id))
   if soundboard is None:
     self.response.out.write('soundboard is None')
     return
   session_id = self.request.cookies.get('id')
   if session_id is None:
     session_id_long = newSessionId()
     self.response.headers.add_header('Set-Cookie', 'id=%d' %
     session_id_long)
   else:
     session_id_long = long(session_id)
   # The soundboard is public
   if soundboard.session_id is None:
      new_soundboard = Soundboard.copy(soundboard)
      new_soundboard.session_id = session_id_long
      self.response.out.write(new_soundboard.session_id)
   # The soundboard is private (regardless of who is the creator)
   else:
      new_soundboard = Soundboard.copy(soundboard)
      # .session_id = None signifies being public
      new_soundboard.session_id = None
      self.response.out.write(new_soundboard.session_id)
   db.put(new_soundboard)
   self.redirect('/board/%d' % new_soundboard.key().id())
  def post(self, resource=None):
    # TODO: Limit access based on cookies
    soundboard_id = self.request.get('soundboard_id')
    soundboard = Soundboard.get_by_id(long(soundboard_id))

    if soundboard is None:
      self.error(500)
      logging.error('While updating order, could not find SoundBoard with id %s'
      % soundboard_id)
      return

    logging.debug('EditOrderHandler invoked for soundboard id %s'
    % soundboard_id)
    serialized_ids = self.request.get('serialized_ids')
    logging.error('serialized_ids: %s' % serialized_ids)
    ordered_list = serialized_ids.split('&')
    order_dictionary = {}
    index = 0
    for key_pair_string in ordered_list:
      key_value = key_pair_string.split('[]=')
      order_dictionary[long(key_value[1])] = index
      index += 1

    for sound_reference_key in soundboard.sound_references:
      if (sound_reference_key.id()) in order_dictionary:
        try:
          index = int(order_dictionary[sound_reference_key.id()])
        except ValueError:
          index = 0
        db.run_in_transaction(self.update_index,
        long(sound_reference_key.id()), index)
      else:
        logging.error('While updating order, could not find SoundReference '
        'with id %d in serialized_ids' % (sound_reference_key.id()))
 def post(self):
   resource = cgi.escape(self.request.get('board_id'))
   if resource is None or not resource.isdigit():
     soundboard = Soundboard()
   else:
     soundboard = Soundboard.get_by_id(long(resource))
   session_id = self.request.cookies.get('id')
   if session_id is not None:
     if soundboard.session_id == long(session_id):
       self.redirect('/')
   sound_reference = SoundReference()
   self.response.out.write('Uploading')
   file = self.request.get('file')
   if file != 'undefined' and len(file) != 0:
     sound = Sound()
     sound.reference_count = 1
     sound.sound_file = file
     sound.mime_type = self.get_mime_type_from_bytes(file)
     db.put(sound)
     sound_reference.sort_index = -1
     sound_reference.reference = sound.key()
     name = self.request.get('name')
     if name == 'undefined' or len(name) == 0:
       name = '???'
     elif len(name) > 20:
       name = name[0:20]
     sound_reference.name = name
     db.put(sound_reference)
     soundboard.sound_references.append(sound_reference.key())
     db.put(soundboard)
   self.response.out.write('something should be happening...')
 def post(self, something):
   soundboard = Soundboard()
   name = cgi.escape(self.request.get('name'))
   if name is None or len(name) == 0:
     name = 'Unnamed Soundboard'
   soundboard.name = name
   session_id = self.request.cookies.get('id')
   if session_id is None:
     handmade_key = db.Key.from_path(name, random.randint(0, 99999999))
     id = db.allocate_ids(handmade_key, 1)
     session_id = id[0]
     self.response.headers.add_header('Set-Cookie', 'id=%d' %
     session_id)
   else:
     session_id = long(session_id)
   soundboard.session_id = session_id
   db.put(soundboard)
   self.redirect('/board/%d' % soundboard.key().id())
Example #6
0
 def post(self):
   soundboard_id = self.request.get('soundboard_id')
   if soundboard_id is None:
     self.redirect('/')
     return
   soundboard = Soundboard.get_by_id(long(soundboard_id))
   if soundboard is None:
     self.redirect('/')
     return
   session_id = self.request.cookies.get('id')
   if session_id is None:
     session_id_long = main.newSessionId()
     self.response.headers.add_header('Set-Cookie', 'id=%d' % session_id_long)
   else:
     session_id_long = long(session_id)
   new_soundboard = Soundboard.copy(soundboard)
   new_soundboard.session_id = session_id_long
   db.put(new_soundboard)
   self.redirect('/board/%d' % new_soundboard.key().id())
 def post(self):
   soundboard_id = self.request.get('soundboard_id')
   soundboard = Soundboard.get_by_id(long(soundboard_id))
   sound_id = self.request.get('sound_id')
   sound_reference = SoundReference.get_by_id(long(sound_id))
   #sound = sound_reference.reference
   new_name = self.request.get('new_name')
   # TODO(cmcdonough): change '20' to a variable constant, and use the same
   # constant in upload handler
   if len(new_name) > 20:
     new_name = new_name[0:20]
   sound_reference.name = new_name
   db.put(sound_reference)
   self.response.out.write(new_name)
 def post(self):
   soundboard_id = self.request.get('soundboard_id')
   soundboard = Soundboard.get_by_id(long(soundboard_id))
   new_name = cgi.escape(self.request.get('new_name'))
   if len(new_name) == 0:
     logging.info('New board name for board %s is empty; stopping'
     % long(soundboard_id))
     return
   if len(new_name) > 45:
     new_name = new_name[0:45]
   soundboard.name = new_name
   db.put(soundboard)
   self.response.out.write(soundboard.name)
   logging.info(
   'Board %s renamed to %s' % (long(soundboard_id), soundboard.name))
  def post(self):
    soundboard = Soundboard.get_by_id(long(self.request.get('soundboard_id')))
 
    # the usual checks to make sure the user is authorized
    if soundboard is None or soundboard.session_id is None or self.request.cookies.get('id') is None:
      logging.error('tried to delete a nonexistent or public soundboard '
      'or invalid cookies')
      self.redirect('/')
    
    elif long(soundboard.session_id) != long(self.request.cookies.get('id')):
      logging.error('tried to delete a soundboard they did not own')
      self.redirect('/')
    
    elif long(soundboard.session_id) == long(self.request.cookies.get('id')):
      # the business end 
      soundboard.delete()
      self.redirect('/')
Example #10
0
  def get(self, resource):

    if self.request.get('rerender') != '':
      rerender = long(self.request.get('rerender'))
    else:
      rerender = 0

    soundboard = Soundboard.get_by_id(long(resource))
    if soundboard is None:
      self.redirect('/')
      return
    if rerender != 1:
      self.response.out.write('<html>')
      self.response.out.write('<head>'
      '<script '
      'src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" '
      'type="text/javascript"></script>'
      '<script '
      'src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"'
      ' type="text/javascript"></script>'
      '<link '
      'href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/dark-hive/jquery.ui.all.css" '
      'type="text/css" rel="stylesheet" />'
      '<link href="/stylesheets/style.css" type="text/css" rel="stylesheet" />'
      '<script '
      'src="https://github.com/ssoper/jquery-binaryUpload/raw/master/jquery.binaryUpload.js" '
      'type="text/javascript"></script>'
      '<script type="text/javascript" src="/js/boardPage1.js"></script>'
      )
      self.response.out.write('<title>%s</title>' % soundboard.name)
      self.response.out.write('</head>')
      self.response.out.write('<body><div id="soundboard">')

    self.response.out.write('<a href="/">330 Soundboards!</a><p>')

    # Copy button (public/private)
    self.response.out.write('<form action="/copy" method="post">'
    '<input type="hidden" name="soundboard_id" value="%d">'
    % soundboard.key().id())
    self.response.out.write('<input type="submit" '
    'value="Copy this Soundboard"></form>')

    if soundboard.session_id is not None and self.request.cookies.get('id') is not None:
      if long(soundboard.session_id) == long(self.request.cookies.get('id')): 
        # publish button (saves this soundboard to the public realm)
        # input is the soundboard ID to be retrieved by the publish handler
        # (only to be there if the user can edit)
        self.response.out.write(
        '<form action="/save" method="post">'
        '<input type="hidden" name="soundboard_id" value="%d">'
        % soundboard.key().id())
        self.response.out.write('<input type="submit" value="Publish!"></form>')
        
        # delete button allows for deletion of the user owned board    
        self.response.out.write(
        '<form action="/delete" method="post">'
        '<input type="hidden" name="soundboard_id" value="%d">'
        % soundboard.key().id())
        self.response.out.write('<input type="submit" '
        'value = "Delete this Board!"></form>') 

    self.response.out.write('<p>Cookies: %s</p>'
    % self.request.cookies.get('id'))
    self.response.out.write('Soundboard session_id: %s'
    % soundboard.session_id)
    self.response.out.write('<div id="boarddiv"><ul id="sortable">')

    # Create a sorted list of the sound_references
    sound_references = []
    for sound_reference_key in soundboard.sound_references:
      sound_references.append(
      SoundReference.get_by_id(sound_reference_key.id()))
    sound_references_sorted = sorted(
    sound_references, key=lambda sound_reference: sound_reference.sort_index)
    for sound_reference in sound_references_sorted:
      sound = sound_reference.reference
      self.response.out.write(
      '<li name="sound" id="sound_%s">/sound/%d<p>'
      % (sound_reference.key().id(), sound_reference.key().id()) )
      # This button is the left part of the multipart button
      # It displays the sound's given name
      # Clicking it will play the sound
      self.response.out.write(
      '<button id="play_%s" name="sound_button" class="sound_button" '
      'label="%s" '
      'onClick="soundPlay(\'%s\')" >%s</button>'
      % (sound_reference.key().id(), sound_reference.name, sound.key(),
      sound_reference.name))
      # This is the edit button, which is the right part of the multipart button
      # It is referenced by name in the javascript instead of with .next()
      self.response.out.write(
      '<button id="edit_%s" name="button_edit_sound"></button>'
      % sound_reference.key().id() )
      # This is the hidden input which later appears in a dialog box
      self.response.out.write(
      '<div id="name_dialog_%s" name="name_dialog"><input type="text" '
      'name="new_name" id="name_%s"></div>'
      % (sound_reference.key().id(), sound_reference.key().id()))
      self.response.out.write('</li>')

    session_id = self.request.cookies.get('id')
    if session_id == self.request.cookies.get('id'):
      self.response.out.write(
      '<li name="sound">No Sound... Yet<p>')

      # This button is an empty name; the left part of a multipart jquery button
      self.response.out.write(
      '<button id="empty_sound" class="sound_button">&nbsp;</button>')

      # This is the add button, which is the right part of a multipart button.
      # When clicked, it opens a dialog which contains a file upload input.
      self.response.out.write(
      '<button id="add_sound_button"></button>')

      # This is the hidden input which later appears in a dialog box
      self.response.out.write(
      '<div id="add_sound_dialog">'
      '<input type="file" id="upload_file" name="file">'
      '<input type="hidden" id="board_id" name="board_id" value="%d">'
      '</div>'
      % soundboard.key().id())

    self.response.out.write('</ul></div>')

    # Start the soundboard author's section
    if session_id is not None:
      if soundboard.session_id == long(session_id):
        # This is the opening tag for the author div (things which only appear
        # for the author of a particular soundboard)
        self.response.out.write(
        '<div id="author_div">')

        # This button is the left part of the multipart button
        # It displays the soundboard's given name
        # Clicking it will do nothing
        self.response.out.write(
        '<button id="board_name_button" class="board_name_button" '
        'label="%s">%s</button>'
        % (soundboard.name, soundboard.name))
        # This is the edit button, which is the right part of the multipart
        # button. It is referenced by name in the javascript instead of with
        # .next()
        self.response.out.write(
        '<button id="edit_name_button"></button>')
        # This is the hidden input which later appears in a dialog box
        self.response.out.write(
        '<div id="board_name_dialog" name="board_name_dialog">'
        '<input type="text" name="new_board_name" id="new_board_name">'
        '<input type="hidden" id="soundboard_id" value="%d"'
        '</div>'
        % soundboard.key().id())

        # Close the author div
        self.response.out.write(
        '</div>')
    if soundboard.session_id is None:
      self.response.out.write('This is a public (read-only) Soundboard')

    if rerender != 1:
      self.response.out.write('</div></body></html>')