def post(self, video_id): content = self.request.get("content") vote = self.request.get("vote") user = self.get_user() user_id = user["model_id"] if content: c = VideoComment( content=content, video_id=int(video_id), upvotes=0, submitter=user["username"], user_id=user_id, downvotes=0, ) c.put() video = Video.get_by_id(int(video_id)) video.comment_count = video.comment_count + 1 video.put() currentregistereduser = User.get_by_id(int(user["model_id"])) currentregistereduser.prestige = currentregistereduser.prestige + 2 currentregistereduser.put() # video_comment_cache(int(group_id), True) self.redirect("/video/%s" % video_id) elif vote: keyname = str(user_id) + "-" + str(video_id) + "-post" previous_vote = Vote.get_by_id(keyname) # previous_vote = Vote.get_by_key_name(keyname) if previous_vote != None: video = Video.get_by_id(int(video_id)) vote_count = video.upvotes - video.downvotes self.response.write(vote_count) else: vote_record = Vote.get_or_insert(keyname, vote_record=str(user_id)) video = Video.get_by_id(int(video_id)) vote_count = video.upvotes - video.downvotes if vote == "upvote": vote_count = vote_count + 1 video.upvotes = video.upvotes + 1 video.put() currentregistereduser = User.get_by_id(int(video.user_id)) currentregistereduser.prestige = currentregistereduser.prestige + 1 currentregistereduser.put() elif vote == "downvote": vote_count = vote_count - 1 video.downvotes = video.downvotes + 1 video.put() self.response.write(vote_count) else: something = "nada"
def post(self, user_id): upload_files = self.get_uploads("file") # 'file' is file upload field in the form blob_info = upload_files[0] user = User.get_by_id(int(user_id)) video = Video( title="", geo_center="", sportcategory="", subcategory="", upvotes=0, downvotes=0, submitter=user.username, comment_count=0, user_id=int(user_id), original_video_ref=blob_info.key(), mp4_video_ref=None, webm_video_ref=None, tags=[], spam=0, spamComfirmed=False, ) video.put() # should I do this with some sort of response in a post request and send some sort of token so that it can't be done randomly self.redirect("/encodevideo/%s" % video.key.id())
def post(self, profile_id): upload_files = self.get_uploads('file') blob_info = upload_files[0] blobRef = blob_info.key() user = User.get_by_id(int(profile_id)) user.avatar = blobRef user.put() user.created = None user.last_modified = None self.redirect('/profile/%s' % (profile_id))
def get(self, username): user = self.get_user() if user: searched_user_list = User.query(User.username == username).fetch(1) if searched_user_list: searched_user = searched_user_list[0] self.redirect('/profile/' + str(searched_user.key.id())) else: self.render("frontpage.html", user=user, no_user=True, username=username) else: self.redirect("/login")
def get(self): user = self.get_user() if user["model_id"] == 5187942536445952: user_model = User.get_by_id(5187942536445952) user_model.admin = True user_model.put all_videos = Video.query() video_count = 0 for v in all_videos: video_count = video_count + 1 all_users = User.query() user_count = 0 for u in all_users: user_count = user_count + 1 all_comments = VideoComment.query() comment_count = 0 for c in all_comments: comment_count = comment_count + 1 all_votes = Vote.query() vote_count = 0 for vs in all_votes: vote_count = vote_count + 1 self.response.write("There are " + str(video_count) + " videos.") self.response.write("<br>") self.response.write("There are " + str(user_count) + " users.") self.response.write("<br>") self.response.write("There are " + str(comment_count) + " comments.") self.response.write("<br>") self.response.write("There are " + str(vote_count) + " votes.") else: self.redirect("/noaccess")
def get(self): if not self.get_user(): self.redirect("/login") else: user = self.get_user() user_db_qry = User.query(User.oauth2_id == user['oauth2_id']) user_db_list = user_db_qry.fetch(1) currentregistereduser = user_db_list[0] has_username = False name = "" if currentregistereduser.name: name = currentregistereduser.name username = "" if currentregistereduser.username: username = currentregistereduser.username has_username = True bio = "" if currentregistereduser.bio: bio = currentregistereduser.bio quote = "" if currentregistereduser.quote: quote = currentregistereduser.quote email = "" if currentregistereduser.email: email = currentregistereduser.email geo_center = "" if currentregistereduser.geo_center: geo_center = currentregistereduser.geo_center high_school = "" if currentregistereduser.high_school: high_school = currentregistereduser.high_school university = "" if currentregistereduser.university: university = currentregistereduser.university sports_played = "" if currentregistereduser.sports_played: sports_played = currentregistereduser.sports_played self.render('editprofile.html', bio=bio, name=name, username=username, quote=quote, GPS=geo_center, user = user, email=email, has_username=has_username, high_school=high_school, university=university, sports_played=sports_played)
def registerUser(self, name, email, password): # initialize a session self.create_session() # query database to check if user is already there user = self.session.query(User).filter(User.email == email).first() # if user is already there, then send a message that user is already there if user is not None: return {"error": "Email already exists"} # if user is not already present then create a user try: # NOTE: password should be encrypted and saved user = User(name=name, email=email, password=password) self.session.add(user) self.session.commit() # use email id to create JWT token token = create_access_token(identity=email, expires_delta=False) # return the user info with the token return {"accesstoken": token} except Exception as exception: return {"error": "error in inserting record " + str(exception)} finally: self.end_session()
def get(self, *args, **kwargs): user = self.get_user() if user: profile_id = int(kwargs.get("profile_id")) profileowner = User.get_by_id(profile_id) current_profile_id = user['model_id'] videos = Video.query(Video.user_id == int(profile_id)).order(-Video.created).fetch(10) videos = list(videos) videos_to_display = [] for video in videos: if video.title != "": videos_to_display.append(video) quote = profileowner.quote avatar=None if profileowner.avatar: try: avatar = images.get_serving_url(profileowner.avatar, size=None, crop=False, secure_url=None) except TransformationError: logging.error('we just got a TransformationError while trying to open the users image') avatar = None if not avatar: avatar = 'http://i.imgur.com/RE9OX.jpg' owner = False if current_profile_id == profile_id: owner = True upload_url = blobstore.create_upload_url('/profileupload/%s' % (profile_id)) self.render('profile.html', user=user, avatar=avatar, videos_to_display=videos_to_display, profile_id=profile_id, upload_url=upload_url, profileowner=profileowner, owner=owner) else: self.render('login.html')
def post(self): name = self.request.get('name') username = self.request.get('username') bio = self.request.get('bio') quote = self.request.get('quote') geo_center = self.request.get('geo_center') email = self.request.get('email') sports_played = self.request.get_all('sports_played') high_school = self.request.get('high_school') university = self.request.get('university') user = self.get_user() username_is_valid = re.match('^[\w-]+$', username) is not None if not username_is_valid and not user['username']: error = "Sorry, the username can only be letters and numbers." self.render("editprofile.html", name=name, username=username, bio=bio, quote=quote, email=email, error=error, user=user, geo_center=geo_center, high_school=high_school, university=university, sports_played=sports_played) elif username or user['username']: if not username: username = user['username'] keyname = "username-" + str(username) previous_username = UniqueUsername.get_by_id(keyname) if previous_username != None and previous_username.user_id_record != str(user['model_id']): error = "Sorry, that username is already in use." self.render("editprofile.html", name=name, username=username, bio=bio, quote=quote, email=email, error=error, user=user, geo_center=geo_center, high_school=high_school, university=university, sports_played=sports_played) else: username_record = UniqueUsername.get_or_insert(keyname, user_id_record=str(user['model_id'])) user_db_qry = User.query(User.oauth2_id == user['oauth2_id']) user_db_list = user_db_qry.fetch(1) currentregistereduser = user_db_list[0] profile_id = currentregistereduser.key.id() currentregistereduser.name = name currentregistereduser.username = username currentregistereduser.bio = bio currentregistereduser.quote = quote currentregistereduser.email = email currentregistereduser.high_school = high_school currentregistereduser.university = university if sports_played: currentregistereduser.sports_played = sports_played error = None GPSlocation = None if geo_center: g = geocoders.GoogleV3() #to catch an error where there is no corresponding location try: #to catch an error where there are multiple returned locations try: place, (lat, lng) = g.geocode(geo_center) place, searched_location = g.geocode(geo_center) except ValueError: geocodespot = g.geocode(geo_center, exactly_one=False) place, (lat, lng) = geocodespot[0] place, searched_location = geocodespot[0] GPSlocation = "("+str(lat)+", "+str(lng)+")" #this is straight from the docs: http://code.google.com/p/geopy/wiki/Exceptions and happens when there is no location that matches except geocoders.googlev3.GQueryError: logging.error('could not find the spot') error = "We cannot find " + geo_center +"... try to be a little more specific or search a nearby location." except geocoders.googlev3.GTooManyQueriesError: logging.error('the request did not go through because there are too many queries') #TODO something = 'nada' if error: self.render('editprofile.html', bio=bio, name=name, username=username, email=email, error=error, quote=quote, user = user, geo_center=geo_center, high_school=high_school, university=university, sports_played=sports_played) else: if GPSlocation: currentregistereduser.geo_center = GPSlocation if not currentregistereduser.geo_center: currentregistereduser.geo_center = None currentregistereduser.put() currentregistereduser.created = None currentregistereduser.last_modified = None currentregistereduser.avatar = None self.session['_current_user'] = currentregistereduser.to_dict() self.redirect('/profile/%s' % (profile_id)) elif not username: error = "Come on you can put a little something. At least a username is required." self.render("editprofile.html", name=name, username=username, bio=bio, quote=quote, email=email, error=error, user=user, geo_center=geo_center, high_school=high_school, university=university, sports_played=sports_played)
def post(self, video_id): title = self.request.get("title") sportcategory = self.request.get("sportcategory") sportlevel = self.request.get("sportlevel") tags = self.request.get("tags") shoutouts = self.request.get("shoutouts") subcategory = self.request.get("subcategory") description = self.request.get("description") winner = self.request.get("winner") loser = self.request.get("loser") geo_center = self.request.get("geo_center") user = self.get_user() if title and sportcategory != "choose" and sportlevel != "choose": video = Video.get_by_id(int(video_id)) video.title = title video.sportcategory = sportcategory video.sportlevel = sportlevel if tags: try: tags = tags.split(",") for i in xrange(len(tags)): if tags[i][0] == " ": tags[i] = tags[i][1:] if tags[i][0] == "#": tags[i] = tags[i][1:] except IndexError: dud_value = None if shoutouts: shoutouts = shoutouts.split(", ") for i in xrange(len(shoutouts)): if shoutouts[i][0] == "@": shoutouts[i] = shoutouts[i][1:] video.shoutouts = shoutouts if subcategory != "choose": video.subcategory = subcategory if description: video.description = description if winner: video.winner = winner if loser: video.loser = loser error = None GPSlocation = None if geo_center: g = geocoders.GoogleV3() # to catch an error where there is no corresponding location try: # to catch an error where there are multiple returned locations try: place, (lat, lng) = g.geocode(geo_center) place, searched_location = g.geocode(geo_center) except ValueError: geocodespot = g.geocode(geo_center, exactly_one=False) place, (lat, lng) = geocodespot[0] place, searched_location = geocodespot[0] GPSlocation = "(" + str(lat) + ", " + str(lng) + ")" # this is straight from the docs: http://code.google.com/p/geopy/wiki/Exceptions and happens when there is no location that matches except geocoders.googlev3.GQueryError: logging.error("we hit an error here in that we could not find it") error = ( "We cannot find '" + geo_center + "' try to be a little more specific or search a nearby location." ) except geocoders.googlev3.GTooManyQueriesError: logging.error("the request did not go through because there are too many queries") # TODO something = "nada" if error: self.render( "videoinfo.html", user=user, error=error, title=title, sportcategory=sportcategory, sportlevel=sportlevel, tags=tags, subcategory=subcategory, description=description, winner=winner, loser=loser, geo_center=geo_center, ) else: if GPSlocation: video.geo_center = GPSlocation if not video.geo_center: video.geo_center = None video.put() currentregistereduser = User.get_by_id(int(user["model_id"])) currentregistereduser.prestige = currentregistereduser.prestige + 10 currentregistereduser.put() # get this to redirect to a permalink self.redirect("/video/%s" % video_id) else: error = "Please complete all the required sections." self.render( "videoinfo.html", user=user, error=error, title=title, sportcategory=sportcategory, sportlevel=sportlevel, tags=tags, subcategory=subcategory, description=description, winner=winner, loser=loser, geo_center=geo_center, )
def _on_signin(self, data, auth_info, provider): """Callback whenever a new or existing user is logging in. data is a user info dictionary. auth_info contains access token or oauth token and secret. See what's in it with logging.info(data, auth_info) """ auth_id = '%s:%s' % (provider, data['id']) # 1. check whether user exist, e.g. # User.get_by_auth_id(auth_id) # # 2. create a new user if it doesn't # User(**data).put() # # 3. sign in the user # self.session['_user_id'] = auth_id # # 4. redirect somewhere, e.g. self.redirect('/profile') # # See more on how to work the above steps here: # http://webapp-improved.appspot.com/api/webapp2_extras/auth.html # http://code.google.com/p/webapp-improved/issues/detail?id=20 currentregistereduser = None #check for user existance upon login/registration try: user_db_qry = User.query(User.oauth2_id == auth_id) user_db_list = user_db_qry.fetch(1) currentregistereduser = user_db_list[0] #if the user does not exist yet except IndexError: name = None # try: name = data['name'] except KeyError: name = None user_db = User( name=name, oauth2_id=auth_id, prestige = 100, ) user_db.put() user_db.model_id = user_db.key.id() user_db.put() currentregistereduser = user_db self.session['_user_id'] = auth_id self.session['data'] = data currentregistereduser.created = None currentregistereduser.last_modified = None currentregistereduser.avatar = None self.session['_current_user'] = currentregistereduser.to_dict() if currentregistereduser.username: self.redirect("/") else: self.redirect("/profile")