def get(self, entity_id=None):
   """HTML GET handler.
   
   Check the query parameters for the ID of the monster to be displayed.
   If found, disply that monster using the standard template."""
   
   template_values = self.build_template_values()
   
   if entity_id:
     try:
       monster = Monster.get_by_id_safe(int(entity_id), template_values[handlers.base.PROFILE_KEY])
     except ValueError:
       return self.not_found()
     if not monster:
       self.not_found()
       return
     template_values['monster'] = monster
   else:
     self.redirect("/view/"+str(Monster.all().order("-creation_time").get().key().id()))
     return
   
   if handlers.base.PROFILE_KEY in template_values:
     template_values['vote'] = Vote.all().filter("monster = ", template_values['monster']).filter("voter = ", template_values[handlers.base.PROFILE_KEY]).get()
   
   template_values['edit_url'] = self.uri_for('monster.edit', entity_id=r'%s')
   template_values['delete_url'] = self.uri_for('monster.delete', entity_id=entity_id)
   template_values['profile_url'] = self.uri_for('profile', profile_id=monster.creator.key().id())
   
   template = configuration.site.jinja_environment.get_template('monster/view.html')
   self.response.write(template.render(template_values))
 def test_get(self):
   creator = Profile().put()
   monster = Monster()
   monster.creator = creator
   monster.put_unsearchable()
   
   response = main.app.get_response('/monster/'+str(monster.key().id())+'/delete')
   self.assert200(response)
Exemple #3
0
    def get(self):
        """HTML GET handler.
    
    Renders a response to a GET. Queries monsters to feature and renders
    them to the index.html template. Does not accept any query parameters"""

        template_values = self.build_template_values()
        template_values["popular_monsters"] = Monster.get_top_rated(5, user=template_values[handlers.base.PROFILE_KEY])
        template_values["recent_monsters"] = Monster.get_recent(5, user=template_values[handlers.base.PROFILE_KEY])

        template = configuration.site.jinja_environment.get_template("index.html")
        self.response.write(template.render(template_values))
 def get(self, profile_id=None):
   """HTML GET handler.
   
   Check the query parameters for the ID of the profile to be displayed.
   If found, display the user. Otherwise display current user"""
   
   template_values = self.build_template_values()
   
   if profile_id and template_values[handlers.base.PROFILE_KEY] and int(profile_id) == template_values[handlers.base.PROFILE_KEY].key().id():
     template_values['viewed_profile'] = template_values[handlers.base.PROFILE_KEY]
   elif profile_id:
     template_values['viewed_profile'] = Profile.get_by_id(int(profile_id))
   elif template_values[handlers.base.PROFILE_KEY]:
     return self.redirect(self.uri_for("profile", profile_id=template_values[handlers.base.PROFILE_KEY].key().id()))
   else:
     return self.forbidden()
   
   favorites = Vote.all().filter("voter = ", template_values['viewed_profile']).filter("is_up = ", True).fetch(1)
   if favorites:
     template_values['recent_up_monster'] = favorites[0].monster
     
   created =   Monster.get_recent(1, creator=template_values['viewed_profile'], user=template_values[handlers.base.PROFILE_KEY])
   if created:
     template_values['recent_monster'] = created[0]
   template = configuration.site.jinja_environment.get_template('profile/view.html')
   return self.response.write(template.render(template_values))
 def get(self):
   """HTML GET handler.
   
   Just show a template with the normal template values."""
   
   template_values = self.build_template_values()
   template_values['monsters'] = Monster.get_most_recent(10, user=template_values[handlers.base.PROFILE_KEY])
   
   template = configuration.site.jinja_environment.get_template('monster/landing.html')
   self.response.write(template.render(template_values))
 def post(self, entity_id=None):
   """HTML POST handler. 
   
   Save changes to the given monster."""
   
   template_values = self.build_template_values()
   
   if entity_id:
     monster = Monster.get_by_id_safe(int(entity_id), template_values[handlers.base.PROFILE_KEY])
     if monster:
       user = users.get_current_user()
       if monster.creator.account == user:
         monster.name = self.request.get('name')
         monster.hp = self.request.get('hp')
         monster.armor = self.request.get('armor')
         monster.damage = self.request.get('damage')
         monster.instinct = self.request.get('instinct')
         monster.description = self.request.get('description')
         
         nextindex = 0
         monster.tags = []
         while self.request.get('tag-'+str(nextindex)):
           monster.tags.append(self.request.get('tag-'+str(nextindex)))
           nextindex += 1
         
         nextindex = 0
         monster.special_qualities = []
         while self.request.get('specialquality-'+str(nextindex)):
           monster.special_qualities.append(self.request.get('specialquality-'+str(nextindex)))
           nextindex += 1
         
         nextindex = 0
         monster.damage_tags = []
         while self.request.get('damagetag-'+str(nextindex)):
           monster.damage_tags.append(self.request.get('damagetag-'+str(nextindex)))
           nextindex += 1
           
         nextindex = 0
         monster.moves = []
         while self.request.get('move-'+str(nextindex)):
           monster.moves.append(self.request.get('move-'+str(nextindex)))
           nextindex += 1
         
         monster.edited = True
         monster.put()
         return self.redirect(self.uri_for("monster", entity_id=monster.key().id()))
       else:
         return self.forbidden()
     else:
       return self.not_found()
   else:
     return self.not_found()
     
   template = configuration.site.jinja_environment.get_template('monster/edit.html')
   self.response.write(template.render(template_values))
Exemple #7
0
 def get(self):
   """HTML GET handler.
   
   Renders a response to a GET. Queries monsters to feature and renders
   them to the index.html template. Does not accept any query parameters"""
   
   template_values = self.build_template_values()
   query = cgi.escape(self.request.get('q'))
   if query:
     template_values['results'] = Monster.search(query)
     if len(template_values['results']) == 0:
       template_values['results'] = 1
  
   template = configuration.site.jinja_environment.get_template('search.html')
   self.response.write(template.render(template_values))
 def get(self, entity_id=None):
   """HTML GET handler.
   
   Check if the user has already voted. If they haven't, -1 the monster.
   Otherwise, error."""
   
   user = users.get_current_user()
   profile = Profile.all().filter("account = ", user).get()
   monster = Monster.get_by_id_safe(int(entity_id), profile)
   
   if (not monster) or (not profile):
     return self.forbidden()
     
   previous_vote = Vote.all().filter("voter = ", profile).filter("monster = ",monster).get()
   if previous_vote and previous_vote.is_up:
     previous_vote.is_up = False
     previous_vote.put()
     
     if monster.downs:
       monster.downs += 1
     else:
       monster.downs = 1
       
     if monster.ups:
       monster.ups -= 1
     else:
       monster.ups = 0
       
     monster.compute_score()
     monster.put()
   elif previous_vote:
     return self.response_set_status(500)
   else:
     vote = Vote()
     vote.voter = profile
     vote.monster = monster
     vote.is_up = False
     vote.put()
     
     if monster.downs:
       monster.downs += 1
     else:
       monster.downs = 1
     monster.compute_score()
     monster.put()
 def get(self):
   """HTML GET handler.
   
   Renders a response to a GET. Queries monsters to feature and renders
   them. Easy enough, right?"""
   
   template_values = self.build_template_values()
   skip = int(self.request.get("skip", default_value=0))
   template_values['monsters'] = Monster.get_recent_public(skip=skip)
   
   if len(template_values['monsters']) >= 10:
     template_values['next'] = str(self.uri_for('monster.all'))+"?skip="+str(skip+10)
     
   if skip >= 10:
     template_values['prev'] = str(self.uri_for('monster.all'))+"?skip="+str(skip-10)
  
   template = configuration.site.jinja_environment.get_template('monster/all.html')
   self.response.write(template.render(template_values))
Exemple #10
0
 def get(self, entity_id=None):
   """HTML GET handler.
   
   Check the query parameters for the ID of the monster to be displayed.
   If found, disply that monster using the standard template."""
   
   template_values = self.build_template_values()
   
   if entity_id:
     monster = Monster.get_by_id_safe(int(entity_id), template_values[handlers.base.PROFILE_KEY])
     if monster:
       if monster.creator.account == template_values[handlers.base.USER_KEY]:
         monster.delete()
       else:
         return self.forbidden()
     else:
       return self.not_found()
   else:
     return self.not_found()
   
   template = configuration.site.jinja_environment.get_template('monster/delete.html')
   self.response.write(template.render(template_values))
Exemple #11
0
 def get(self, profile_id=None):
   """HTML GET handler.
   
   Renders a response to a GET. Queries monsters to feature and renders
   them. Easy enough, right?"""
   
   template_values = self.build_template_values()
   skip = int(self.request.get("skip", default_value=0))
   creator = Profile.get_by_id(int(profile_id))
   template_values['creator'] = creator
   template_values['monsters'] = Monster.get_recent(
     10,
     creator=creator,
     user=template_values[handlers.base.PROFILE_KEY],
     skip=skip)
   
   if len(template_values['monsters']) >= 10:
     template_values['next'] = str(self.uri_for('profile.monster.all', profile_id=profile_id))+"?skip="+str(skip+10)
     
   if skip >= 10:
     template_values['prev'] = str(self.uri_for('profile.monster.all', profile_id=profile_id))+"?skip="+str(skip-10)
  
   template = configuration.site.jinja_environment.get_template('monster/all.html')
   self.response.write(template.render(template_values))
Exemple #12
0
 def post(self, entity_id=None):
   """HTML POST handler. 
   
   Save changes to the given monster."""
   
   template_values = self.build_template_values()
   
   if not template_values[handlers.base.PROFILE_KEY].is_publisher:
     return self.forbidden()
   
   monster = Monster()
   
   monster.product = int(self.request.get('product'))
   monster.creator = template_values[handlers.base.PROFILE_KEY]
   
   if monster.product == -1:
     monster.is_core = True
   
   license = self.request.get('license')
   if license:
     monster.license = configuration.site.licenses[license]
   else:
     return self.error()
   
   name = self.request.get('name')
   if name:
     monster.name = name
   else:
     return self.error()
     
   tags = self.request.get('tags')
   if tags:
     for tag in tags.split(", "):
       monster.tags.append(tag)
   else:
     return self.error()
   
   damage = self.request.get('damage')
   if damage:
     monster.damage = damage
   else:
     return self.error()
   
   hp = self.request.get('hp')
   if hp:
     monster.hp = hp
   else:
     return self.error()
   
   armor = self.request.get('armor')
   if armor:
     monster.armor = armor
   else:
     return self.error()
     
   damage_tags = self.request.get('damage_tags')
   if damage_tags:
     for tag in damage_tags.split(", "):
       monster.damage_tags.append(tag)
   else:
     return self.error()
   
   special_qualities = self.request.get('special_qualities')
   if special_qualities:
     for sq in special_qualities.split(", "):
       monster.special_qualities.append(sq)
   else:
     return self.error()
     
   description = self.request.get('description')
   if armor:
     monster.description = description
   else:
     return self.error()
   
   instinct = self.request.get('instinct')
   if instinct:
     monster.instinct = instinct
   else:
     return self.error()
   
   moves = self.request.get('moves')
   if moves:
     for move in moves.split("\n"):
       monster.moves.append(move)
   else:
     return self.error()
     
   monster.put()
   return self.redirect(self.uri_for("monster", entity_id=monster.key().id()))
Exemple #13
0
  def post(self):
    """HTML POST handler. 

    Parse ALL THE MONSTERS."""

    template_values = self.build_template_values()

    if not template_values[handlers.base.PROFILE_KEY].is_publisher:
      return self.forbidden()

    upload_files = self.get_uploads('file_upload')
    blob_info = upload_files[0]
    blob_key = blob_info.key()
    blob_reader = blobstore.BlobReader(blob_key)
    root = ET.parse(blob_reader)
    
    product = int(self.request.get('product'))
    
    for upload_monster in root.iter('monster'):
      monster = Monster()
      
      if product == -1:
        monster.is_core = True
      else:
        monster.product = product
      monster.creator = template_values[handlers.base.PROFILE_KEY]
      
      monster.name = upload_monster.findtext('name')
      
      monster.description = upload_monster.findtext('description')
      
      monster.instinct = upload_monster.findtext('instinct')
      
      tags = upload_monster.find('tags')
      if tags and len(tags):
        for tag in tags:
          monster.tags.append(tag.text.encode('utf-8'))
        
      monster.damage = upload_monster.findtext('damage')
      
      monster.hp = upload_monster.findtext('hp')
      
      monster.armor = upload_monster.findtext('armor')
      
      damage_tags = upload_monster.find('damage_tags')
      if damage_tags and len(damage_tags):
        for tag in damage_tags:
          monster.damage_tags.append(tag.text)
      
      special_qualities = upload_monster.find('special_qualities')
      if special_qualities and len(special_qualities): 
        for special_quality in special_qualities:
          monster.special_qualities.append(special_quality.text)
        
      for move in upload_monster.find('moves'):
        monster.moves.append(move.text)
      
      try:  
        monster.put()
      except:
        print monster
        raise
    
    if product == -1:
      return self.redirect(self.uri_for('home'))
    self.redirect(self.uri_for('product', entity_id=product))