def listings(): #load the listing page with sqlite3.connect('challenge.db') as conn: cursor = conn.cursor() if request.method == 'POST': #check for post method and set last timestamp returned from html request request_dict = request.form.to_dict() for k, v in request_dict.items(): timestamp_to_be_used = k if v == 'Load more posts': #use get_more_lastings with last timestamp to obtain next 30 listings listings, first_timestamp, last_timestamp = Listing.get_more_listings( cursor, timestamp_to_be_used) else: listings, first_timestamp, last_timestamp = Listing.get_previous_listings( cursor, timestamp_to_be_used) return render_template('listings.html', listings=listings, first_timestamp=first_timestamp, last_timestamp=last_timestamp) else: #if there is no post, we load the page with the most recent listings listings, first_timestamp, last_timestamp = Listing.get_last_30( cursor) return render_template('listings.html', listings=listings, first_timestamp=first_timestamp, last_timestamp=last_timestamp)
def listings(source): if request.method == 'POST': listing = json.loads(request.data) try: print(listing) user = User.select().where( User.email == current_user.email).first() Listing.update(**listing).where(Listing.source == source, Listing.user == user).execute() return jsonify({'success': True}), 200 except: return jsonify({'success': False})
def load_listings(): """Load listings from seed data into database""" print "Listings" with open("seed_data/listings.txt") as listings: for row in listings: listing = row.rstrip().split("|") kwargs = dict(listing_id=listing[0], neighborhood=listing[1], address=listing[2], price=listing[3], avail_as_of=datetime.datetime.strptime( listing[4], "%d-%b-%Y"), length_of_rental=listing[5], bedrooms=listing[6], bathrooms=listing[7], laundry=listing[8], pets=listing[9], description=listing[10], main_photo=listing[11], active=listing[12], primary_lister=listing[13]) for key in kwargs.keys(): if kwargs[key] == "": del kwargs[key] listing = Listing(**kwargs) db.session.add(listing) db.session.commit()
def oauth_callback(provider): if not current_user.is_anonymous: return redirect(WEB_URL) oauth = OAuthSignIn.get_provider(provider) social_id, username, email = oauth.callback() if social_id is None: return redirect(WEB_URL) user = User.select().where(User.social_id == social_id).first() if not user: user = User(social_id=social_id, nickname=username, email=email) user.save() for data in data_source: data['user'] = user Listing.create(**data) login_user(user, True) return redirect(WEB_URL)
def listing_by_categories(): cat_id = request.args.get('category_id') cat_list = [] for l in Listing.select().where(Listing.categoryId == cat_id): li = model_to_dict(l, exclude=[l.cid]) cat_list.append(li) db.close() return jsonify(cat_list)
def me(): if current_user.is_authenticated: user = User.select().where(User.email == current_user.email).first() listings = Listing.select().where(Listing.user == user) return (jsonify(listings=[ listing.to_dict([Listing.user, Listing.id]) for listing in listings ], user=user.to_dict())), 200 return jsonify({'user_authentication': False}), 400
def make_listing_profile(): """add listing info to database""" roommates = request.form.getlist("roommates") laundry = True if request.form.get("laundry") == "True" else False pets = True if request.form.get("pets") == "True" else False living_there = True if request.form.get( "living_there") == "True" else False listing_id = request.form.get("listing_name") user_id = session["current_user"] main_photo = functions.save_photo("main_photo") photos = [] photos.append(functions.save_photo("photo_1")) photos.append(functions.save_photo("photo_2")) photos.append(functions.save_photo("photo_3")) kwargs = dict(listing_id=listing_id, address=request.form.get("address"), neighborhood=request.form.get("neighborhood"), price=int(request.form.get("price")), avail_as_of=request.form.get("avail_date"), length_of_rental=request.form.get("duration"), main_photo=main_photo, bedrooms=request.form.get("bedrooms"), bathrooms=request.form.get("bathrooms"), laundry=laundry, pets=pets, description=request.form.get("description"), primary_lister=user_id) if Listing.query.get(listing_id): flash("Listing Name Taken") return redirect("/listings/{}".format(listing_id)) else: for key in kwargs.keys(): if kwargs[key] == "": del kwargs[key] db.session.add(Listing(**kwargs)) db.session.commit() if living_there: functions.add_UserListing(user_id, listing_id) for roommate in roommates: functions.add_UserListing(roommate, listing_id) for photo in photos: db.session.add(Picture(listing_id=listing_id, photo=photo)) db.session.commit() return redirect("/listings/{}".format(listing_id))
def search(): with sqlite3.connect('challenge.db') as conn: cursor = conn.cursor() form = SearchForm() if request.method == 'POST': for key, val in request.form.to_dict().items(): listings, first_timestamp, last_timestamp = Listing.get_by_title( val, cursor) return render_template('listings.html', listings=listings, first_timestamp=first_timestamp, last_timestamp=last_timestamp) return render_template('search.html', form=form)
def save_country_listing(self, new_listing, country): game = self.find_game_by_title(new_listing["game_title"]) new_listing_usd_value = self.calculate_usd_value(new_listing["price"], country) if game: if game.last_updated != self.date or new_listing_usd_value < game.min_price: self.update_game_min_price(game, new_listing_usd_value, country) else: game = self.create_new_game(new_listing, new_listing_usd_value, country) listing = Listing(original_value=new_listing["price"], usd_value=new_listing_usd_value, date=self.date, game_id=game, country_id=country) self.db_util.save(listing)
def add_listing(): new_listing = Listing() new_listing.bike_id = flask_session["bike"] # get bike id from flask session new_listing.post_date = datetime.datetime.now() new_listing.post_expiration = datetime.datetime.now() + datetime.timedelta(30) # Post expires 30 days from now new_listing.post_status = "Active" new_listing.asking_price = request.form["price"] # FORM new_listing.latitude = request.form["latitude"] # FORM new_listing.longitude = request.form["longitude"] # FORM new_listing.additional_text = request.form["comments"] #FORM new_listing.user_id = g.user # Flask session new_listing.email = request.form["email"] #FORM db.session.add(new_listing) db.session.commit() return str(new_listing.bike_id)