Ejemplo n.º 1
0
def add_review_by_user(user: User, submisson: Submission,
                       review_type: int) -> None:
    review = Review(user=user,
                    submission=submisson,
                    review_type=review_type,
                    mwe=mwe_helper.get_todays_mwe(user.language))
    session.add(review)
    session.commit()
    pass
Ejemplo n.º 2
0
 def _parse_review(self, li):
     _user_info = li('div', class_='dper-info')[0]
     _user_rank = li('div', class_='review-rank')[0]
     _user_words = li('div', class_='review-words')[0]
     _reply = li('a', class_='reply')[0]
     _review_pic_li = li('div', class_='review-pictures')
     _review_pics = _review_pic_li[0] if _review_pic_li else None
     _review_info = li('div', class_='misc-info')[0]
     _score = _user_rank('span', class_='item')
     _actions = _review_info('span', class_='actions')[0]
     _actions_a = _actions('a')
     actions = {}
     imgs = []
     user_img = li.img['data-lazyload'].split('%')[0]
     # 有可能是匿名用户
     user_url = HOST + li.a['href'].strip() if li.a.has_attr(
         'href') else None
     user_id = li.a['data-user-id']
     user_name = _user_info.a.text.strip()
     user_level = from_pattern(
         PATTERN_USER_LEVEL,
         _user_info.img['src']) if _user_info.img else None
     use_vip = True if _user_info.span and _user_info.span['class'][
         0] == 'vip' else False
     star = from_pattern(PATTERN_STAR, ''.join(_user_rank.span['class']))
     score = {
         i.text.strip().split(':')[0]: i.text.strip().split(':')[1]
         for i in _score
     }
     review_time = _review_info.span.text.strip()
     review_shop = _review_info('span', class_='shop')[0].text
     review_shop_id = self.id
     review_id = _reply['data-id']
     review_url = 'http:' + _reply['href']
     for a in _actions_a:
         action_name = a.text.strip()
         _next = a.next_sibling.next_sibling
         if _next and _next.name == 'em':
             num = from_pattern(PATTERN_NUMS, _next.text)
             actions[action_name] = num
     if _review_pics:
         for pic in _review_pics('img'):
             imgs.append(pic['data-big'])
     words = self.decrypter.decrypt(_user_words,
                                    *self.decrypt_dict,
                                    comment=True)
     review = Review(user_name, user_id, user_url, user_img, user_level,
                     use_vip, star, score, review_id, review_url,
                     review_time, review_shop, review_shop_id, imgs, words,
                     actions)
     return review
Ejemplo n.º 3
0
def review_handler_2(user: User, update: Update, context: CallbackContext):
    review_types = [
        get_language_token(user.language, Tokens.AGREE_NICE_EXAMPLE),
        get_language_token(user.language, Tokens.DO_NOT_LIKE_EXAMPLE),
        get_language_token(user.language, Tokens.SKIP_THIS_ONE),
        get_language_token(user.language, Tokens.QUIT_REVIEWING)
    ]
    user = get_user_from_update(update)

    if update.message.text in review_types:
        submission = context.user_data["submission"]
        todays_mwe = mwe_helper.get_todays_mwe(user.language)

        points_earned_for_submission = {
            "together": 10,
            "separated": 20,
            "non-mwe": 30
        }

        if update.message.text == review_types[0]:
            points_earned = points_earned_for_submission[submission.category]
            reply_message = get_language_token(
                user.language, Tokens.SOMEONE_LOVED_YOUR_EXAMPLE) % (
                    get_random_congrats_message(user.language), points_earned)
            send_message_to_user(submission.user, reply_message)
            review = Review(user=user,
                            mwe=todays_mwe,
                            submission=submission,
                            review_type=POSITIVE_REVIEW)
            session.add(review)
            session.commit()
            review_handler(user, update, context)
        elif update.message.text == review_types[1]:
            review = Review(user=user,
                            mwe=todays_mwe,
                            submission=submission,
                            review_type=NEGATIVE_REVIEW)
            session.add(review)
            session.commit()
            review_handler(user, update, context)
        elif update.message.text == review_types[2]:
            review = Review(user=user,
                            mwe=todays_mwe,
                            submission=submission,
                            review_type=NEUTRAL_REVIEW)
            session.add(review)
            session.commit()
            review_handler(user, update, context)
        elif update.message.text == review_types[3]:
            del context.user_data["submission"]
            del context.user_data["state"]
            update.message.reply_text(
                get_language_token(user.language,
                                   Tokens.THANKS_FOR_CONTRIBUTION),
                parse_mode=telegram.ParseMode.MARKDOWN,
                reply_markup=get_main_keyboard_markup(user.language))
    else:
        update.message.reply_text(
            get_language_token(user.language,
                               Tokens.PLEASE_ENTER_VALID_REVIEW),
            parse_mode=telegram.ParseMode.MARKDOWN,
            reply_markup=get_review_type_keyboard_keyboard_markup(
                user.language))
def add_customer_review_db(session, customer, review, rating):
    review = Review(review, rating)
    customer.reviews.append(review)
    session.add(review)
    session.commit()
    return review
Ejemplo n.º 5
0
class ReviewTests(unittest.TestCase):
    def setUp(self):
        self.venue_one = Venue(name='Surf Club')
        self.venue_two = Venue(name=u'Greentree')
        self.review_one = Review(venue = self.venue_one, cost = 10000.00, num_guests = 200)
        self.review_two = Review(venue = self.venue_one, cost = 20000.00, num_guests = 500)
        self.review_three = Review(venue = self.venue_two, cost = 20000.00, num_guests=30.5)
        
    
    def test_venue_constructors(self):
        self.assertEqual(self.venue_one.name, 'Surf Club')
        self.assertEqual(self.venue_two.name, 'Greentree')
    
    def test_review_constructors(self):
        #test the venue for actual object identity
        self.assertTrue(self.review_one.venue is self.venue_one) 
        self.assertEqual(self.review_one.cost, 10000.00)
        self.assertEqual(self.review_one.num_guests, 200)
        
    
    def test_out_of_bounds_assignments(self):
        #can't enter string for venue name
        self.assertRaises(TypeError, Venue, name=5)
        
        #venue must be a venue object
        self.assertRaises(TypeError, Review, venue = 'Surf Club', cost = 10000.00, num_guests = 200)
        
        #cost and num_guests must both be greater than 0
        self.assertRaises(ValueError, Review, venue = self.venue_one, cost = 0, num_guests = 200)
        self.assertRaises(ValueError, Review, venue = self.venue_one, cost = 10000.00, num_guests = 0)
        
        #after construction, num_guests must be an int
        self.assertTrue(isinstance(self.review_three.num_guests,int))
    
    def test_review_in_venue_list(self):
        #check that creating the revue adds it to the venue's list
        self.assertTrue(self.review_one in self.venue_one.reviews)
        self.assertTrue(self.review_three not in self.venue_one.reviews)
        self.assertEqual(len(self.venue_one.reviews),2)
        
        #prevent duplicate reviews
        self.venue_one.add_review(self.review_one)
        self.assertEqual(len(self.venue_one.reviews),2)
        
    
    def test_set_review(self):
        self.review_two.set_cost(15000.00)
        self.assertEqual(self.review_two.cost, 15000.00)
        
        self.review_two.set_num_guests(160)
        self.assertEqual(self.review_two.num_guests,160)
        
        #review_three is the only review for venue 2
        set_venue_result = self.review_three.set_venue(self.venue_one)
        self.assertTrue(self.review_three.venue is self.venue_one)
    
    
    def test_venue_average_cost(self):
        self.assertAlmostEqual(self.venue_one.calculate_average_cost(), 15000.00)
        self.dummy_venue = Venue(name='Fake venue')
        self.assertEqual(self.dummy_venue.calculate_average_cost(), None)


        
        
Ejemplo n.º 6
0
 def setUp(self):
     self.venue_one = Venue(name='Surf Club')
     self.venue_two = Venue(name=u'Greentree')
     self.review_one = Review(venue = self.venue_one, cost = 10000.00, num_guests = 200)
     self.review_two = Review(venue = self.venue_one, cost = 20000.00, num_guests = 500)
     self.review_three = Review(venue = self.venue_two, cost = 20000.00, num_guests=30.5)
Ejemplo n.º 7
0
 def test_invalid_previous_steps(self):
     review = Review()
     review.set_submission('Author submission (submission.doc)')
     review.set_review_request_1('Request the first reviewer')
     review.set_review_request_2('Request the second reviewer')
     with self.assertRaises(ValueError):
         review.set_review_request_2('Request the second reviewer')
     with self.assertRaises(ValueError):
         review.set_review_request_1('Request the first reviewer')
     with self.assertRaises(ValueError):
         review.set_submission('Author submission (submission.doc)')
Ejemplo n.º 8
0
 def test_invalid_steps(self):
     review = Review()
     with self.assertRaises(ValueError):
         review.set_review_request_1('Request the first reviewer')
     with self.assertRaises(ValueError):
         review.set_review_request_2('Request the second reviewer')
     with self.assertRaises(ValueError):
         review.set_review_response_1('Response from the first reviewer')
     with self.assertRaises(ValueError):
         review.set_review_response_2('Response from the second reviewer')
     with self.assertRaises(ValueError):
         review.set_evaluation_result('Evaluation result to the author')
Ejemplo n.º 9
0
 def test_valid_steps(self):
     review = Review()
     review.set_submission('Author submission (submission.doc)')
     review.set_review_request_1('Request the first reviewer')
     review.set_review_request_2('Request the second reviewer')
     review.set_review_response_1('Response from the first reviewer')
     review.set_review_response_2('Response from the second reviewer')
     review.set_evaluation_result('Evaluation result to the author')
Ejemplo n.º 10
0
 def test_review_creation(self):
     review = Review()
Ejemplo n.º 11
0
            service.create_customer(customer)
        elif opt == 5:
            id = int(input("Enter customer id: "))
            service.list_reviews(id)
        else:
            print("Please select one from the given options.")
    elif inp == 3:
        service = ReviewService(conn)

        print("1. See all reviews")
        print("2. Add review")

        opt = int(input())
        if opt == 1:
            service.list_reviews()
        elif opt == 2:
            id = int(input("Enter review id: "))
            customer_id = int(input("Enter customer id: "))
            restaurant_id = int(input("Enter restaurant id: "))
            text = input("Enter review: ")
            rating = float(input("Enter rating (1-5)"))

            review = Review(id, customer_id, restaurant_id, text, rating)
            service.add_review(review)
        else:
            print("Please select one from the given options.")
    elif inp == 4:
        exit()
    else:
        print("Please select one from the given options.")
        continue