Esempio n. 1
0
def get_review_text(need_to_add=False):
    mes = pre_text_add_book if need_to_add else pre_text_review
    i = 0
    query = Review.objects(type=i).first()

    while query:
        mes += f'\n{query.text}'
        i += 1
        try:
            query = Review.objects(type=i).first()
        except:
            break
    # print(i,query)
    mes += '\nВыбери критерий для оценки'
    return mes
Esempio n. 2
0
def get_reviews_text():
    mes = pre_text_review
    i = 0
    query = Review.objects(type=i).first()

    while query:
        mes += f'\n{query.text}'
        i += 1
        try:
            query = Review.objects(type=i).first()
        except:
            break
    # print(i,query)
    mes += '\nВыбери критерий для оценки'
    return mes
Esempio n. 3
0
def annotate(game):
    game.est = pytz.utc.localize(game.start).astimezone(est).time().strftime('%-I:%M %p')
    ratings = Review.objects(game = game)
    game.ratings = {
        'avg': int(round(ratings.average('rating'))) if ratings else None
    }
    return game
Esempio n. 4
0
def get_reviews_criteria(book):
    i = 0
    review = Review.objects(type=i, book=book).first()
    mes = f'📖{book.article}\n'
    while review:
        mark, maxcount = get_max_mark(review.mark)

        mes += f'{review.text} *{mark}/10* ({maxcount} оценок)\n'
        i += 1
        try:
            review = Review.objects(type=i, book=book).first()
        except:
            break
    # print(i,query)
    # mes += '\nВыбери критерий для оценки'
    return mes
Esempio n. 5
0
def annotate(game):
    game.est = pytz.utc.localize(
        game.start).astimezone(est).time().strftime('%-I:%M %p')
    ratings = Review.objects(game=game)
    game.ratings = {
        'avg': int(round(ratings.average('rating'))) if ratings else None
    }
    return game
Esempio n. 6
0
async def get_author_by_name( msg: types.Message , state: FSMContext ) :
	u_id = msg.from_user.id
	mark = int( msg.text )
	async with state.proxy() as data :
		book = Book.objects( id=data[ 'book_id' ] ).first()

		review_id = data[ 'review' ]
		review = Review.objects( id=review_id ).first()
		review.mark[ mark ] += 1
		review.voted[ str( msg.from_user.id ) ] = mark
		review.save()

		await add_to_temp( await new_book_or_review( u=get_user( u_id ) , c=msg , book=book , need_to_add=False ,
		                                             not_first_time=True ) , data )
Esempio n. 7
0
def get_review_type_markup(book):
    reviews = Review.objects(book=book)
    mark = inK()
    for x in range(1, len(reviews) + 1):
        mark.row(inB(str(x), data=str(x)))

    mark.row(inB('✍️ Написать свой', data='new_review_text'),
             inB('✅ Доб. критерий', data='add_criteria_on_book'))

    mark.row(inB('🎓 Добавить книгу', data='add_book'))

    mark.row(inB('❌️ Закончить', data='start'))

    # print(mark.__dict__)
    return mark
Esempio n. 8
0
def user_detail(username):
    user = User.objects(username=username).first()
    reviews = Review.objects(commenter=user)
    pim = CatImage.objects(commenter=user)
    image = images(username)

    proposed = {}
    for p in pim:
        bytes_im = io.BytesIO(p['im'].read())
        img = base64.b64encode(bytes_im.getvalue()).decode()
        proposed[p['cat_name']] = img
    return render_template('user_detail.html',
                           username=username,
                           reviews=reviews,
                           image=image,
                           pim=proposed)
Esempio n. 9
0
async def get_review_state( msg: types.Message , state: FSMContext ) :
	if msg.text == '✅ Доб. критерий' :
		await s( msg.from_user.id , 'Отправьте критерий оценки который бы вы хотели видеть' ,
		         reply_markup=simple_markup_back_end )
		await AuthorState.add_new_criteria.set()

	elif msg.text == '✍️ Написать отзыв' :
		await s( msg.from_user.id ,
		         'Отправьте сообщение и мы сохраним его как отзыв!\nНажмите "Закончить" чтобы прервать это действие' ,
		         reply_markup=simple_markup_back_end )
		await AuthorState.add_review_from_user.set()

	elif msg.text == '🎓 Добавить книгу' :
		await main_menu( msg , state )

	elif msg.text.isnumeric() :
		async with state.proxy() as data :
			review_type = int( msg.text )
			book = Book.objects( id=data[ 'book_id' ] ).first()

			review = Review.objects( book=book , type=review_type - 1 ).first()
			print( review )
			if review_type <= 0 or not list( review ) :
				await s( msg.from_user.id , 'Выберите корректный критерий' )
				return

			if str( msg.from_user.id ) in review.voted :
				await s( msg.from_user.id ,
				         f'Вы уже оценили книгу по этому критерию. Ваша оценка: *{review.voted[str(msg.from_user.id)]}*' ,
				         parse_mode='Markdown' )
				return

			data[ 'review' ] = str( review.id )

			await s( msg.from_user.id , get_solo_review_text( review ) ,
			         reply_markup=simple_markup_back_end )

			await AuthorState.get_out_of_ten_state.set()
Esempio n. 10
0
def cat_detail(cat_name):
    client = CatClient()
    attributes_to_keep = [
        'affection_level', 'child_friendly', 'dog_friendly', 'energy_level',
        'grooming', 'hypoalergenic'
    ]

    image_result, breed_result = client.retrieve_cat_by_id(cat_name)
    ratings = dict()
    for key in breed_result[0].keys():
        value = str(breed_result[0][key])
        if value.isdigit() and key in attributes_to_keep:
            new_key = key.replace('_', ' ').capitalize()
            ratings[new_key] = (range(int(value)), range(5 - int(value)))

    #if type(image_result) == dict:
    #    return render_template('movie_detail.html', error_msg=result['Error'])

    if len(image_result) == 0 or len(breed_result) == 0:
        return render_template('cat_detail.html', error_msg="error")

    picform = ProposePicForm()
    if picform.validate_on_submit():
        temp = User.objects(username=current_user.username).first()
        msg = Message('Upload Request',
                      sender='*****@*****.**',
                      recipients=[str(temp.email)])
        msg.body = "Thanks for requesting to upload an image to breed:" + str(
            cat_name) + "!\nYour image is attached to this email"
        msg.attach(picform.new_pic.data.filename, 'images/png',
                   picform.new_pic.data.read())
        mail.send(msg)

        msg = Message('Upload Request',
                      sender='*****@*****.**',
                      recipients=['*****@*****.**'])
        msg.body = "Someone is requesting to upload image to breed: " + str(
            cat_name)
        msg.attach(picform.new_pic.data.filename, 'images/png',
                   picform.new_pic.data.read())
        mail.send(msg)

        img = picform.new_pic.data
        filename = secure_filename(img.filename)

        pim = CatImage(
            commenter=load_user(current_user.username),
            date=current_time(),
            im=None,
            cat_name=cat_name,
        )
        pim.save()
        pim.im.put(img.stream, content_type='images/png')
        pim.save()

        return redirect(url_for('features.cat_detail', cat_name=cat_name))

    form = CatReviewForm()
    if form.validate_on_submit():
        review = Review(
            commenter=load_user(current_user.username),
            content=form.text.data,
            date=current_time(),
            cat_name=cat_name,
        )

        review.save()
        return redirect(request.path)

    reviews_m = Review.objects(cat_name=cat_name)
    reviews = []
    for r in reviews_m:
        reviews.append({
            'date': r.date,
            'username': r.commenter.username,
            'content': r.content,
            'image': images(r.commenter.username)
        })

    return render_template('cat_detail.html',
                           form=form,
                           image=image_result[0],
                           cat=breed_result[0],
                           ratings=ratings,
                           reviews=reviews,
                           picform=picform)