def create_post(): form = BlogPostForm() if form.validate_on_submit(): if form.blog_image.data: pic = add_blog_pic(form.blog_image.data) pic_thumbnail = create_thumbnail(form.blog_image.data) BlogPost.blog_image = pic blog_post = BlogPost(title=form.title.data, text=form.text.data, category=form.category.data, user_id=current_user.id, blog_image=pic, blog_thumbnail=pic_thumbnail) else: blog_post = BlogPost(title=form.title.data, text=form.text.data, category=form.category.data, user_id=current_user.id, blog_image='c1.jpg', blog_thumbnail='stories1.jpg') db.session.add(blog_post) db.session.commit() flash("Blog Post Created") return redirect(url_for('core.index')) return render_template('create_post.html', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) # checking if the same person is updating the post who created it. if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data # since we already know currently who is the user # and id of the user, so we don't need t grab it db.session.commit() flash('Blog Post Updated!') return redirect(url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html',title='Updating', form=form)
def update(blog_post_id): # ない場合は404を返す blog_post = BlogPost.query.get_or_404(blog_post_id) # 更新する人が作成者かどうか # current_userはlogin_managerの属性、現在ログインしているユーザー名が入っている # blog_post.authorは投稿したpostの作成者 if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Blog Post Updated') return redirect( url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) # updateしなかった場合 # form.title.data = blog_post.titleフォームに現在の状態を表示する elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='Updating', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Blog Post Updated') return redirect(url_for('blog_posts.blog_post',blog_post_id=blog_post.id)) #Pass in the old blog post information so user can edit the old information elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html',title='Update',form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): blog_post = BlogPost(form.title.data, form.text.data, current_user.id) db.session.add(blog_post) db.session.commit() flash('Blog Post Created') return redirect(url_for('core.index')) return render_template('create_post.html', form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): blog_post = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) db.session.add(blog_post) db.session.commit() flash("Blog Post Created") return redirect(url_for("core.index")) return render_template("create_post.html", form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): blog_post = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) db.session.add(blog_post) db.session.commit() return redirect(url_for('blog_posts.blog_post',blog_post_id=blog_post.id)) return render_template('create_post.html',form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): blog_post = BlogPost(title=form.title.data, # Create a sample Blog of BlogPost model text=form.text.data, user_id=current_user.id) db.session.add(blog_post) db.session.commit() flash('Blog Created') return redirect(url_for('core.index')) # Redirect to Home page return render_template('create_post.html', form=form)
def create_post(): form = BlogPostForm() print("create the form") if form.validate_on_submit(): print("submit it") blog_post = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) db.session.add(blog_post) db.session.commit() flash('Blog Post Created') return redirect(url_for('core.index')) return render_template('create_post.html', form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): blog_post = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) #we need to grab the user id from our BlogPost model from the current user because #form does not ask for id db.session.add(blog_post) db.session.commit() flash("Blog Post Created") return redirect(url_for('core.index')) return render_template('create_post.html', form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): # Создаем ОБЪЕКТИ МОДЕЛИ BlogPost() - Берутся поля заполнения БД title и text (id и date заполняются автоматически) # + УСТАНАВЛИВАЕТСЯ СВЯЗЬ С User() через user_id = db.Column(db.Integer,db.ForeignKey('users.id'), nullable=False). т.к. user_id ЕСТЬ в __init__ # Тоесть создавая запись в блоге сразу связывает её с Авторизированным в данную СЕССИЮ пользователем blog_posts = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) #Добвляем созданный объект в БД db.session.add(blog_posts) db.session.commit() flash('Post Created') return redirect(url_for('core.index')) return render_template('create_post.html', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: # Forbidden, No Access abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash("Post updated") return redirect( url_for("blog_posts.blog_post", blog_post_id=blog_post.id)) # Pass back the old blog post information so they can start again with the old text and title elif request.method == "GET": form.title.data = blog_post.title form.text.data = blog_post.text return render_template("create_post.html", title="Update", form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: abort( 403 ) # 403 means Forbidden, aborting the update if the current user isnt the author of the post form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Blog post updated') return redirect( url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', form=form, title='Updating')
def update_post(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title=form.title.data blog_post.text=form.text.data db.session.commit() return redirect(url_for('blog_posts.blog_post',blog_post_id=blog_post.id)) elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html',form=form)
def update(blog_post_id): #we need to make sure the current author is equal to the current user, so not everyone can update blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Post Updated') return redirect( url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) elif request.method == 'GET': #we need to make sure the title/text is already populated when they first view page form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='Update', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) # verificamos que el autor del blog sea quien este # modificando el post if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data, blog_post.title = form.text.data, db.session.commit() return redirect( url_for('blog_post.blog_post', blog_post_id=blog_post_id)) elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='updating', form=form)
def create_post(): form = BlogPostForm() if form.validate_on_submit(): blog_post = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) db.session.add(blog_post) db.session.commit() return redirect(url_for('core.index')) return render_template('create_post.html', form=form) # Views @blog_posts.route('/<int:blog_post_id>') def blog_post(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) return render_template('blog_post.html', title=blog_post.title, date=blog_post.date, post=blog_post)
def create_post(): # BlogPostFormを配置 form = BlogPostForm() # submitボタンが押された場合 if form.validate_on_submit(): #form.title.dataのようにフォームに入力された値を取り出す # models.pyのBlogPostデータベースモデルのインスタンスを作成する blog_post = BlogPost(title=form.title.data, text=form.text.data, user_id=current_user.id) db.session.add(blog_post) db.session.commit() flash('Blog Post Created') # redirectは別のurlへ飛ばす # ここではcoreブループリントのindex関数へ飛ばす return redirect(url_for('core.index')) # create_post.htmlを表示する。BlogPostForm()のformインスタンスを渡して入力してもらう return render_template('create_post.html', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.add(blog_post) db.session.commit() flash("Blog Post Updated") return redirect(url_for("blog_posts.blog_post", blog_post_id=blog_post.id)) elif request.method == "GET": form.title.data = blog_post.title form.text.data = blog_post.text return render_template("create_post.html", title="Updating", form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) # check if this person is actually the author - only this person should be able to make edits if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Blog post updated') return redirect( url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='Updating', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) if blog_post.author != current_user: abort(403)#permission error codes form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data #form blog_post.text = form.text.data #form db.session.commit() flash('Blog Post Updated') return redirect(url_for('blog_posts.blog_post', blog_post_id=blog_post_id))#redirects to blog_post view which takes blog post id #to make sure original text and title is maintained the first time when they need to update elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='Updating', form=form)
def update(blog_post_id): blog_post = BlogPost.query.get_or_404(blog_post_id) # se a pessoa tentando acessar o update post não for o autor, retorna # erro de acesso não autorizado if blog_post.author != current_user: abort(403) form = BlogPostForm() if form.validate_on_submit(): blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Blog Post Updated') return redirect( url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) # para que mostre o versão atual da postagem antes de modificá-la elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='Updating', form=form)
def update(blog_post_id): # Забор ЦИФРЫ ID из переданой в функцию переменной ( передаем ОБЪЕКТЫ МОДЕЛИ из БД BlogPost()) blog_post = BlogPost.query.get_or_404(blog_post_id) # !!! ВАЖНО !!! ПРОВЕРКА что ПОЛЬЗОВАТЕЛЬ и есть Автор поста (что бы кто угодно залогинивийся не мог ИЗМЕНИТЬ чужой пост)! # if current_user.id == blog_post.user_id или второй вариант: if blog_post.author!= current_user: # Можно просто pass, + прописать все в HTML шаблорне что ыб кнопка Update просто ен показывалась при {%if blog_post.author!= current_user %} abort(403) # Если же автор и юзер сопадают то просто даем форму создания поста которая перезапишет в БД новые данные form = BlogPostForm() if form.validate_on_submit(): # ОБЪЕКТИ МОДЕЛИ BlogPost() НЕ: СОЗДАЕТСЯ, так как мы уже взяли его выше, нашли в БД через динамический ДЕКОРАТОР ID - # + УСТАНАВЛИВАЕТСЯ СВЯЗЬ С User() через user_id = db.Column(db.Integer,db.ForeignKey('users.id'), nullable=False). т.к. user_id ЕСТЬ в __init__ # ЗАМЕНЯЕМ ПОЛЯ в найденом ранее в БД ОБЪЕКТЕ на новые данные из ФОРМЫ blog_post.title = form.title.data blog_post.text = form.text.data # user_id менять смысла нет, так как он уже доказано что тот же что и Автор # Возвращаем(поддтверждаем ИЗМЕНЕНИЯ) объект в БД (а не создаем новый) db.session.commit() flash('Post Updated') # Переадресация идет иммено на тот пост которы йбьлы изменены , для этого передаем в ШАБЛОН ID измененного поста # (можно и переменную динамического декоратора) return redirect(url_for('blog_posts.blog_post',blog_post_id=blog_post.id)) # При первичной загрузке страницы ФОРМА будет не отдавать а ПОЛУЧАТЬ(GET) данные из БД заполняя свои ПОЛЯ данными из поста который будет РЕДАКТИРУЕТСЯ # Если ничего небыло отослано через форму то полей автозаполняются данными самой ССЕСИИ ПОЛЬЗОВАТЕЛЯ (и ничего меняется в БД) elif request.method == 'GET': form.title.data = blog_post.title form.text.data = blog_post.text # title в ШАБЛОНЕ будет заменен на нашу переменную! return render_template('create_post.html', title = 'Updating', form=form)
def update(blog_post_id): # WE DON'T WANT USER TO EDIT SOMEONE ELSE'S POST! MAKE SURE CURRENT AUTHOR IS CURRENT USER! blog_post = BlogPost.query.get_or_404(blog_post_id) # GRAB A POST,CHECK FOR CORRECT USER, MAKE UPDATIONS, WRITE EXISTING BLOG AND RENDER ON TEMPLATE if blog_post.author != current_user: abort(403) # Built-in flask method, takes error codes, ie Restricted Access form = BlogPostForm() if form.validate_on_submit(): # Updations blog_post.title = form.title.data blog_post.text = form.text.data db.session.commit() flash('Blog Post Updated!') # View.View, blog_post view takes id, so we pass it here return redirect(url_for('blog_posts.blog_post', blog_post_id=blog_post.id)) elif request.method == 'GET': # USER MUST ALREADY SEE EXISTING BLOG TEXT, SO NOW HE CAN UPDATE IT, RATHER RE-WRITING ENTIRE BLOG! form.title.data = blog_post.title form.text.data = blog_post.text return render_template('create_post.html', title='Updating', form=form)