Exemplo n.º 1
0
def seed_reviews():

    review1 = Review(
        writer_id=2,
        reviewee_id=1,
        application_id=7,
        response_id=3,
        content="Did a great job! Would recommend for any manual task!",
        score=5)
    review2 = Review(writer_id=2,
                     reviewee_id=1,
                     application_id=9,
                     content="Was energetic and helpful!",
                     score=4)
    review3 = Review(
        writer_id=1,
        reviewee_id=2,
        application_id=7,
        content="Was a top-notch volunteer experience! Great for all ages.",
        score=5)

    db.session.add(review1)
    db.session.add(review2)
    db.session.add(review3)

    db.session.commit()
Exemplo n.º 2
0
 def setUp(self):
     self.user_James = User(username = '******',password = '******', email = '*****@*****.**')
     self.new_review = Review(movie_id=12345,movie_title='Review for movies',image_path="https://image.tmdb.org/t/p/w500/jdjdjdjn",movie_review='This movie is the best thing since sliced bread',user = self.user_James )
     
     
     
     self.new_review = Review('movie_id','title','imageurl','review')
Exemplo n.º 3
0
def add(tasting_id):
    form = ReviewForm(tasting_id=tasting_id)
    current_time = datetime.utcnow()
    if form.validate_on_submit():
        filename = secure_filename(form.image.data.filename)
        # set age to 0 if it has not been entered
        if form.age.data == "":
            age = 0
        else:
            age = int(form.age.data)
        if form.brand_id.data is '0':
            brand = Brand(name=form.brand_name.data)
            db.session.add(brand)
            db.session.flush()
            review = Review(order=form.order.data,
                            notes=form.notes.data,
                            tasting_note=form.tasting_note.data,
                            img_name=filename,
                            name=form.name.data,
                            age=age,
                            max_rating=form.max_rating.data,
                            avg_rating=form.avg_rating.data,
                            min_rating=form.min_rating.data,
                            author=current_user,
                            brand_id=brand.id,
                            tasting_id=form.tasting_id.data)
        else:
            review = Review(order=form.order.data,
                            notes=form.notes.data,
                            tasting_note=form.tasting_note.data,
                            img_name=filename,
                            name=form.name.data,
                            age=form.age.data,
                            max_rating=form.max_rating.data,
                            avg_rating=form.avg_rating.data,
                            min_rating=form.min_rating.data,
                            author=current_user,
                            brand_id=form.brand_id.data,
                            tasting_id=form.tasting_id.data)
        db.session.add(review)
        db.session.commit()

        pathlib.Path(current_app.config['UPLOAD_FOLDER'] + '/' +
                     str(review.id)).mkdir(parents=True, exist_ok=True)
        form.image.data.save(current_app.config['UPLOAD_FOLDER'] + '/' +
                             str(review.id) + '/' + filename)
        rotateImage(
            current_app.config['UPLOAD_FOLDER'] + '/' + str(review.id) + '/',
            filename)
        flash('Your review is now live!')
        return redirect(
            url_for('main.tasting', tasting_id=form.tasting_id.data))
    return render_template(
        'add_review.html',
        title='Add Review',
        form=form,
    )
Exemplo n.º 4
0
def review():
    form = ReviewForm()
    if form.validate_on_submit():
        review = Review(body=form.review.data, author=current_user)
        headline = Review(body=form.headline.data, author=current_user)
        db.session.add(review)
        db.session.add(headline)
        db.session.commit()
        flash('Your review is now live!')

    return render_template('review.html', title='Review', form=form)
 def test_get_review_avg_score(self):
     """ Get average score for a list of reviews """
     watch_review_list = [Review(username="******", score="4", detail="OK"),
                          Review(username="******",
                                 score="4", detail="As expected"),
                          Review(username="******", score="3", detail="So So")]
     watch = Product(name="I Watch", price=329, id="2",
                     image_id="001", review_list=watch_review_list)
     avg_score = float(4 + 4 + 3) / 3
     watch.set_review_list(watch_review_list)
     self.assertEquals(watch.avg_score(), avg_score)
Exemplo n.º 6
0
    def test_relation_user_review(self):
        review = Review()
        user = User()
        user.reviews.append(review)

        self.assertEqual(review, user.reviews[0])
        self.assertEqual(user, review.user)
Exemplo n.º 7
0
def add_review():
    """添加审查要素.
    :return:
    """
    req_dict = request.get_json()
    step_id = req_dict.get('step_id')
    name = req_dict.get('name')
    requ = req_dict.get('requ')
    need = req_dict.get('need')
    permit = req_dict.get('permit')
    print("++++添加要素++++",req_dict)
    # order = req_dict.get('order')
    # 校验数据
    param_keys = ["step_id","name","requ","need","permit"]
    param_dict = dict()
    for i in param_keys:
        param_dict.__setitem__(i,req_dict.get(i,''))
    for key,value in param_dict.items():
        if not value:
            return jsonify(errno=RET.PARAMERR, errmsg="数据不完整,缺少%s"%key)
    try:
        exist = Review.query.filter_by(name=name,step_id=step_id).all()
        if exist:
            return jsonify(errno=RET.DBERR,errmsg="数据有重复")
        review = Review(name=name,requ=requ,need=need,permit=permit,step_id=step_id)
        db.session.add(review)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="添加失败")
    return jsonify(errno=RET.OK, errmsg="成功")
Exemplo n.º 8
0
def product(product_id):
    product = Product.query.get_or_404(product_id)
    reviews = product.reviews.all()
    if len(reviews) > 0:
        rating = int(
            round(sum([review.rating for review in reviews]) / len(reviews)))
    else:
        rating = 0
    form = ReviewForm()
    if form.validate_on_submit():
        if current_user.is_authenticated:
            review = Review(title=form.title.data,
                            rating=form.rating.data,
                            body=form.body.data,
                            reviewer=current_user._get_current_object(),
                            product=product)
            database.session.add(review)
            database.session.commit()
            flash("Your review has been posted!", "success")
            return redirect(url_for('products.product', product_id=product_id))
        else:
            flash("You must be logged in to leave a review!", "danger")
            abort(Constants.FORBIDDEN_PAGE_ERROR_PAGE)
    return render_template("product.html",
                           product=product,
                           reviews=reviews,
                           form=form,
                           rating=rating)
Exemplo n.º 9
0
def write_review(request):
    context_dict = {}

    # Check if the request is of post type
    if request.method == 'POST':
        # Get the informationg from the form in required format
        donor_id = request.POST["donor"]
        hospital_id = request.POST["hospital"]
        data = {
            'donor': Donor.objects.get(pk=donor_id),
            'hospital': Hospital.objects.get(pk=hospital_id),
            'date': request.POST["time"],
            'review': request.POST["review_text"]
        }
        # Try to create a new review with given data
        try:
            review = Review()
            review.new_review(data)
            return JsonResponse({
                'success':
                True,
                'message':
                "The review has been succesfully published!"
            })
        except:
            return JsonResponse({
                'success':
                False,
                'message':
                "The provided login details are incorrect!"
            })

    else:
        return redirect("app:app")
Exemplo n.º 10
0
def review_add(asin=None):
    if request.method == 'PUT':

        product = Product.query.filter(Product.asin == asin).first()
        if not product:
            return jsonify(status='error', errors=[{'message': ['No such product asin found']}])

        try:
            title = request.json.get('title')
            review = request.json.get('review')
        except AttributeError:
            return jsonify(status='error', errors=[{'validation': ['Check out your JSON and headers']}])

        if not title or not review:
            return jsonify(status='error', errors=[{'validation': ['Fill title & review fields']}])

        new_review = Review()
        new_review.title = title
        new_review.review = review

        product.reviews.append(new_review)
        db.session.add(new_review)
        db.session.commit()

        # TODO :)
        cache.clear()

        return jsonify(status='success')

    return jsonify(status='error', errors=[{'message': 'Wrong request format'}])
Exemplo n.º 11
0
def event(id):
    event = Event.query.get(id)  #Get event with respective ID
    form = ReviewForm()
    temp = db.session.query(func.avg(
        Review.rating).label('average')).filter(Review.event_id == id)
    if temp[0].average:  #If it has one or more reviews, find the average
        avg = round(temp[0].average, 2)
    else:  #If no reviews are posted set it to 0 stars
        avg = 0

    if form.validate_on_submit():  #If user submits a form, check validity
        rev = Review.query.filter_by(event_id=id,
                                     user_id=current_user.get_id()).count(
                                     )  #set rev to previous review of event
        #will be 0 if no previous review is posted
        if rev != 0:  #if rev is not equal to 0 a reviews has already been posted. Promt user to edit current review
            flash(
                "Can't review an event twice. Please edit/update your previous review",
                "warning")
        else:  #otherwise create new instance of Review, assigning it data from the form
            review = Review(rating=round(form.rating.data, 2),
                            text=form.text.data,
                            user_id=current_user.get_id(),
                            event_id=id)
            flash("Review has been added", "success")
            db.session.add(
                review)  #add the review to the current session and commit it
            db.session.commit()
        return redirect(url_for(
            'events.event', id=id))  #redirect user back to the event's page
    return render_template('events/event.html',
                           name=event.name.title(),
                           event=event,
                           form=form,
                           average=avg)
Exemplo n.º 12
0
def put(product_id):
    product = db.session.query(Product).get_or_404(product_id)
    body = request.get_json()

    review = (db.session.query(Review).filter_by(
        product_asin=product.asin,
        title=body.get("review_title"),
        review_text=body.get("review_text"),
    ).first())
    if not review:
        review = Review(
            product_asin=product.asin,
            title=body.get("review_title"),
            review_text=body.get("review_text"),
        )
        db.session.add(review)
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            print(f"Exception: {e}")

    return jsonify({
        "product_asin": review.product_asin,
        "title": review.title,
        "review_text": review.review_text,
    })
Exemplo n.º 13
0
 def setUp(self):
     """ 
 Set up method that will run before every Test.
 """
     self.new_review = Review(
         1, 'Python is awesome',
         'https://image.tmdb.org/t/p/w500/khsjha27hbs', 'A whole new World')
Exemplo n.º 14
0
def addReview():
    """
    Posts a New Review
    """
    form = ReviewForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    print('Request', request.json)
    print('Form', form.data)
    if form.validate_on_submit():
        print('Current User', current_user)
        review = Review(user_id=(form.data['user']),
                        restaurant_id=(form.data['restaurant']),
                        body=form.data['body'],
                        rating=(form.data['rating']),
                        bags=form.data['bags'],
                        utensils=form.data['utensils'],
                        napkins=form.data['napkins'],
                        cups=form.data['cups'],
                        bowls=form.data['bowls'],
                        straws=form.data['straws'],
                        created=datetime.datetime.now(),
                        updated=datetime.datetime.now())
        print('Review', review)
        db.session.add(review)
        db.session.commit()
        return review.to_dict()
    return {'errors': validation_errors_to_error_messages(form.errors)}
Exemplo n.º 15
0
def seed_reviews():

    # demoReview = Review(
    #     user_id=1,
    #     event_id=1,
    #     rating=random.randint(1, 5),
    #     comment=fake.text(),
    # )

    for _ in range(10):
        my_word_list = [
            'whiskey', 'bourbon', 'scotch', 'wine', 'Sommelier', 'Mixologist',
            'Rum', 'Vodka', 'spirits', 'the', 'absolute', 'best', 'host',
            'event', 'party', 'very', 'fun', 'knowledgable',
            'knows their stuff', 'will book again', 'not great',
            'did not seem to know much', 'will not book again',
            'find someone else'
        ]

        r = Review(
            user_id=random.randint(1, 10),
            event_id=random.randint(1, 10),
            rating=random.randint(2, 5),
            comment=fake.sentence(ext_word_list=my_word_list),
        )

        db.session.add(r)
        db.session.commit()
Exemplo n.º 16
0
    def process_reviews(self):
        logging.info('Parse reviews')
        with open(f'files/reviews.csv') as csv_file:
            csv_reader = csv.reader(csv_file, delimiter=',')
            line_count = 0
            for row in csv_reader:
                line_count += 1
                if line_count == 1:
                    continue

                product = Product.query.filter(Product.asin == row[0].strip()).first()
                if not product:
                    logging.error(f"There is no product with such asin code {row[0].strip()}")
                    continue

                review = Review()
                review.title = row[1]
                review.review = row[2]

                product.reviews.append(review)
                db.session.add(review)
                db.session.commit()

            logging.info(f'Processed {line_count} lines of reviews.')

        logging.info('End script')
Exemplo n.º 17
0
 def add_review(id):
     businesses = Business.check_business_exists(id)
     all_business = []
     for business in businesses:
         obj = {
             "name": business.name
         }
         all_business.append(obj)
     if not all_business:
         message = "cannot add review business that does not exist"
         response = jsonify({"message": message, "status_code": 404})
         # 404 if business does not exist
         response.status_code = 404
         return response
     opinion = str(request.data.get('opinion', ''))
     rating = int(request.data.get('rating', ''))
     if rating and opinion:
         new_review = Review(opinion=opinion, rating=rating, business_main=id)
         new_review.save()
         message = "succesfully added the review"
         response = jsonify({"message": message})
         response.status_code = 201
         return response
     message = "make sure the opinion and rating are included"
     response = jsonify({"message": message, "status_code": 400})
     response.status_code = 400
     return response  
Exemplo n.º 18
0
def book(id):
    book = Book.query.get(id)
    form = ReviewForm()
    temp = db.session.query(func.avg(
        Review.rating).label('average')).filter(Review.book_id == id)
    if temp[0].average:
        avg = round(temp[0].average, 2)
    else:
        avg = 0

    if form.validate_on_submit():
        rev = Review.query.filter_by(book_id=id,
                                     user_id=current_user.get_id()).count()
        if rev != 0:
            flash(
                "Can't review a book twice. Please edit/update your previous review",
                "warning")
        else:
            review = Review(rating=round(form.rating.data, 2),
                            text=form.text.data,
                            user_id=current_user.get_id(),
                            book_id=id)
            flash("Review has been added", "success")
            db.session.add(review)
            db.session.commit()
        return redirect(url_for('books.book', id=id))
    return render_template('books/book.html',
                           title=book.title.title(),
                           book=book,
                           form=form,
                           average=avg)
Exemplo n.º 19
0
def post_review(artist_id):
    old_rating = request.get_json()['old_rating']
    new_rating = request.get_json()['new_rating']
    user_id = request.get_json()['user_id']
    show_id = request.get_json()['show_id']

    artist = Artist.query.get(artist_id)
    num_reviews = len(artist.reviews)

    review = Review.query.filter_by(user_id=user_id, show_id=show_id).first()
    if (review):
        review.rating = new_rating

        # If there is only one review, then the review you are modifying must be that review. So you can just replace the artist rating
        #   with the new rating
        if num_reviews < 2:
            artist.rating = new_rating
        else:
            # Formula for replacing a number in an average
            artist.rating = (num_reviews * artist.rating - old_rating +
                             new_rating) / num_reviews
    else:
        new_review = Review(rating=new_rating,
                            user_id=user_id,
                            artist_id=artist_id,
                            show_id=show_id)
        db.session.add(new_review)
        # Formula for adding a number to an average.
        artist.rating = artist.rating + (new_rating -
                                         artist.rating) / (num_reviews + 1)

    db.session.commit()

    user = User.query.get(user_id)
    return user.to_dict()
Exemplo n.º 20
0
def requestor():
    cform = CreateForm()
    if cform.validate_on_submit():
        print(current_user.first_name)
        review = Review(title=cform.title.data,
                        description=cform.description.data,
                        biling=cform.biling.data,
                        status=1,
                        requestor=current_user.id,
                        requestor_name=User.get_name(current_user.id),
                        date=datetime.datetime.now(),
                        pic=current_user.profile_pic)
        db.session.add(review)
        db.session.commit()
        tags = cform.tags.data
        print(tags)
        tag_list = tags.split(',')
        print('4444444444444444')
        print(tag_list)
        Review.setTags(tag_list, review.id)
        print('333333333333333333')
        return redirect(url_for("app.requestor"))
    else:
        print('bad')

    return render_template('requestor.html', cform=cform, user=current_user)
Exemplo n.º 21
0
def create_api(app, swagger_host=None, swagger_port=5000):
    custom_swagger = {
            "info": {"title": "New Title"},
            "securityDefinitions": {"ApiKeyAuth": {"type": "apiKey" , "in" : "header", "name": "My-ApiKey"}}
        }  # Customized swagger will be merged
    api = SAFRSAPI(app, host=swagger_host, port=swagger_port, custom_swagger=custom_swagger)
    api.expose_object(Thing)
    api.expose_object(SubThing)


    for i in range(30):
        secret = hashlib.sha256(bytes(i)).hexdigest()
        reader = Person(name="Reader " + str(i), email="reader_email" + str(i), password=secret)
        author = Person(name="Author " + str(i), email="author_email" + str(i))
        book = Book(title="book_title" + str(i))
        review = Review(
            reader_id=reader.id, book_id=book.id, review="review " + str(i)
        )
        if i % 4 == 0:
            publisher = Publisher(name="name" + str(i))
        publisher.books.append(book)
        reader.books_read.append(book)
        author.books_written.append(book)
        for obj in [reader, author, book, publisher, review]:
            db.session.add(obj)

        db.session.commit()

    for model in [Person, Book, Review, Publisher]:
        # Create an API endpoint
        api.expose_object(model)
Exemplo n.º 22
0
def create_book_review(ISBN):
    form = CreateReviewForm()
    book = Book.query.get(ISBN)

    if form.validate_on_submit():
        review_params = {
            'ISBN': book.ISBN,
            'username': current_user.get_id(),
            'score': form.score.data,
            'description': form.description.data,
            'date': time.strftime("%Y-%m-%d")
        }

        if Review.query.filter_by(username=current_user.get_id(),
                                  ISBN=book.ISBN).first() is None:
            review = Review(**review_params)

            if save(review):
                flash("Review created successfully!")

                return redirect(url_for('my.show_book', ISBN=book.ISBN))
            else:
                flash("Failed to create review. Please try again.")
        else:
            flash("You have already entered a review for this book.")

    return render_template('my/book/review/new.html', book=book, form=form)
    def test_write_paper(self):
        paper = Paper(
            title="How to conquer the World",
            abstract="just conquer it!",
            status=0
        )

        review = Review()
        author = Author()
        user_that_authored = User()
        user_that_reviews = User()

        user_that_authored.authors.append(author)
        user_that_reviews.reviews.append(review)

        paper.authors.append(author)
        paper.reviews.append(review)

        db.session.add(paper)
        db.session.commit()

        paper = Paper.query.all()[0]
        self.assertEqual(review, paper.reviews[0])
        self.assertEqual(author, paper.authors[0])
        self.assertEqual(user_that_authored, paper.authors[0].user)
        self.assertEqual(user_that_reviews, paper.reviews[0].user)
Exemplo n.º 24
0
    def test_relation_review_paper(self):
        review = Review()
        paper = Paper()
        paper.reviews.append(review)

        self.assertEqual(review, paper.reviews[0])
        self.assertEqual(paper, review.paper)
Exemplo n.º 25
0
def add_review(request):
    outlet_id = request.POST.get('outlet_id')
    rating = request.POST.get('rating')
    review = request.POST.get('reviews')
    outlet = Outlet.objects.get(pk=outlet_id)
    Review(outlet=outlet,rating=rating,review=review).save()
    return HttpResponse("done",content_type="application/json")
Exemplo n.º 26
0
def create_review():
    """
    Creates an review.
    """
    form = ReviewForm()
    print(request.get_json())
    # Get the csrf_token from the request cookie and put it into the
    # form manually to validate_on_submit can be used
    form['csrf_token'].data = request.cookies['csrf_token']
    print('<<<<<<<<<<<< csrf', form['csrf_token'].data)
    if form.validate_on_submit():
        print('validated form')
        app_id = form.data['application_id']
        first_rev = Review.query.filter(
            Review.application_id == app_id).first()
        review = Review(writer_id=form.data['writer_id'],
                        reviewee_id=form.data['reviewee_id'],
                        application_id=form.data['application_id'],
                        content=form.data['content'],
                        score=form.data['score'])
        db.session.add(review)
        db.session.commit()
        if first_rev:
            first_rev.response_id = review.id
            db.session.add(first_rev)
            db.session.commit()
        rev = review.to_dict()
        order_id = rev['order_id']
        order = Order.query.filter(Order.id == order_id).first()
        order.status = "Complete"
        db.session.add(order)
        db.session.commit()
        return review.to_dict()
    return 'invalid form'
Exemplo n.º 27
0
def movie_details(id):
    m = Movie.query.get_or_404(id)
    reviews = Review.query\
        .with_entities(User.username, Review.grade, Review.feelings, Review.thoughts,
            Review.timestamp, Review.user_id, User.image)\
        .filter(Review.movie_id == id)\
        .join(User)\
        .limit(4)\
        .all()
    form = ReviewForm()
    if form.validate_on_submit():
        review = Review(grade=form.grade.data,
                        thoughts=form.thoughts.data,
                        feelings=form.feelings.data,
                        user_id=current_user.id,
                        movie_id=id)
        db.session.add(review)
        db.session.commit()
        flash('Review sent succesfully')
        return redirect(url_for('main.movie_details', id=id))
    return render_template('movie_details.html',
                           title='movie_details',
                           movie=m,
                           reviews=reviews,
                           form=form)
Exemplo n.º 28
0
 def setUp(self):
     '''
     Set up method that will run before every Test
     '''
     self.new_review = Review(1234, 'Python Must Be Crazy',
                              'A thrilling new Python Series',
                              '/khsjha27hbs', 8.5, 129993)
Exemplo n.º 29
0
def add_review(id):
    if (Restaurant.query.filter(Restaurant.id == id).count() > 0):
        email = get_jwt_identity()
        user = User.query.filter(User.email == email).first()
        data = request.get_json()
        restaurantId = int(id)
        reviewerId = int(user.id)
        review = data['review']['review']
        createdAt = datetime.now()
        updatedAt = datetime.now()
        db.session.add(
            Review(restaurantId, reviewerId, review, createdAt, updatedAt))
        db.session.commit()
        data = Review.query.filter(Review.restaurantId == id).order_by(
            desc(Review.updatedAt)).first()
        reviewdata = {
            "review": {
                "id": data.id,
                "restaurantId": data.restaurantId,
                "reviewerId": data.reviewerId,
                "review": data.review,
                "createdAt": data.createdAt,
                "updatedAt": data.updatedAt
            }
        }
        return jsonify(reviewdata), 200
    else:
        return ('No Restaurant found with that ID'), 404
Exemplo n.º 30
0
 def setUp(self):
     self.new_user = User(user_id=3000,
                          user_name='Sandy',
                          user_email='sandys@gmail',
                          user_password='******')
     self.new_review = Review(review_id=12300,
                              comment='Yes Yes',
                              user=self.new_user)