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
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
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
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
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
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 )
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
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)
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()
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)