def delete(self, id): post = Post.get_by_id(id) if post is None: return render_view(url_for('PostsView:index'), status=False, redirect=True, message=_('POST_NOT_FOUND')) if not post.can_edit(): abort(401) try: title = post.title Post.delete(post.id) Feed.clear_feed_cache() ret = request.values.get('return') flash(_('POST_DELETE_SUCESS', title=title)) if ret: return render_view(ret, redirect=True) except Exception as e: flash(_('ERROR_POST_DELETE_FAILED', error=e), 'error') return render_view(url_for('PostsView:index'), redirect=True)
def transfer_post(self): form = TranferForm() if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) cat_from = Category.get_by_id(form.from_id.data) cat_to = Category.get_by_id(form.to_id.data) if not cat_from or not cat_to: raise Exception(_('CATEGORY_TRANSFER_POSTS_CHECK_FAILED')) Category.transfer_posts(cat_from, cat_to) message = _('CATEGORY_TRANSFER_POSTS_SUCCESS', from_name=cat_from.name, to_name=cat_to.name) return render_view(url_for('CategoriesView:index'), message=message, redirect=True) except Exception as e: flash(e.message, 'error') return render_view('admin/categories/transfer.html', form=form)
def post(self): form = CategoryForm() if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) category = Category.create() if not form.slug.data: form.slug.data = form.name.data form.slug.data = Category.urlify(form.slug.data) form.populate_obj(category) category.save() return render_view(url_for('CategoriesView:put', id=category.id), message=_('CATEGORY_CREATE_SUCESS'), redirect=True) except Exception as e: flash(e.message, 'error') return render_view('admin/categories/add.html', form=form)
def get(self, id): post = Post.get_by_id(id) if post is None or not post.can_edit(): return render_view(url_for('PostsView:index'), status=False, redirect=True, message=_('POST_NOT_FOUND')) return render_view('admin/posts/show.html', post=post)
def signup(): if current_user.is_authenticated: return render_view(url_for('dashboard'), redirect=True, message=_('SESSIONS_MSG_ALREADY_SIGNED_IN')) redirect_to = session.pop('redirect_to', None) if request.values.get('ret'): redirect_to = request.values.get('ret') form = SignUpForm(ret=redirect_to) if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) if not verify_captcha(): raise Exception(_('SESSIONS_ERROR_UNFINISHED_CHALLENGE_LBL')) # Create user from the form user = User.create() form.populate_obj(user) user.set_password(form.password.data) user.last_seen = datetime.datetime.utcnow() user.last_login = datetime.datetime.utcnow() # store the user user.save() # Login User login_user(user) redirect_to = form.back_link.data if not redirect_to: redirect_to = url_for('dashboard') # send registration email send_email('registration', user) return render_view(redirect_to, redirect=True, message=_('SESSIONS_MSG_SIGNUP_COMPLETED')) except Exception as e: flash(e.message, 'error') return render_view('admin/sessions/signup.html', form=form)
def post(self): form = PostForm() if form.validate_on_submit(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) remain = request.values.get('remain', False, bool) post = Post.create() form.populate_obj(post) post.user = current_user f = request.files.get('file') if f: picture = Picture.create() picture.save_file(f, current_user) post.cover_picture_id = picture.id if picture else 0 # init the score post.update_score(page_view=1) post.editor_version = 1 post.save() Feed.clear_feed_cache() if post.is_draft: message = _('POST_DRAFT_SAVE_SUCESS') else: message = _('POST_PUBLIC_SAVE_SUCESS') if remain: url = url_for('PostsView:put', id=post.id, remain='y') else: url = url_for('PostsView:get', id=post.id) return render_view(url, redirect=True, message=message) except Exception as e: flash(e.message, 'error') return render_view('admin/posts/edit.html', form=form)
def login(): if current_user.is_authenticated: return render_view(url_for('dashboard'), redirect=True, message=_('SESSIONS_MSG_ALREADY_SIGNED_IN')) redirect_to = session.pop('redirect_to', None) if request.values.get('ret'): redirect_to = request.values.get('ret') form = LoginForm(ret=redirect_to) if form.is_submitted(): try: user = User.find_by_email(form.email.data) if not user or not user.check_password(form.password.data): raise Exception(_('SESSIONS_ERROR_LOGIN')) # Update the User's info user.last_login = user.last_seen user.last_seen = datetime.datetime.utcnow() user.save() redirect_to = form.back_link.data if not redirect_to: redirect_to = url_for('dashboard') remember = form.remember_me.data login_user(user, remember=remember) return render_view(redirect_to, redirect=True, message=_('SESSIONS_MSG_LOGIN_SUCESS')) except Exception as e: flash(e.message, 'error') return render_view('admin/sessions/signin.html', form=form)
def reset_password(): if current_user.is_authenticated: return render_view(url_for('latest'), redirect=True, message=_('SESSIONS_MSG_ALREADY_SIGNED_IN')) code = request.values.get('code', None) user = User.find_by_reset_password_code(code) if not user: return render_view(url_for('sessions.forgot_password'), redirect=True, message=_('ERROR_INVALID_RESET_PASSWORD_CODE')) form = ResetPasswordForm(user=user) if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) if not verify_captcha(): raise Exception(_('SESSIONS_ERROR_UNFINISHED_CHALLENGE_LBL')) user.set_password(form.password.data) user.reset_password = None # store the user user.save() return render_view( url_for('sessions.login'), redirect=True, message=_('SESSIONS_MSG_PASSWORD_RESET_COMPLETED')) except Exception as e: flash(e.message, 'error') return render_view('admin/sessions/reset_password.html', form=form)
def index(self): page = request.values.get('page', 1, type=int) limit = 10 posts, total = Post.posts_by_user(current_user.id, page=page, limit=limit) return render_view('admin/posts/index.html', posts=posts, page=page, limit=limit, total=total)
def forgot_password(): if current_user.is_authenticated: return render_view(url_for('latest'), redirect=True, message=_('SESSIONS_MSG_ALREADY_SIGNED_IN')) form = ForgotPasswordForm() if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) if not verify_captcha(): raise Exception(_('SESSIONS_ERROR_UNFINISHED_CHALLENGE_LBL')) email = form.email.data user = User.find_by_email(email) if not user: raise Exception(_('SESSIONS_ERROR_MAIL_NOT_FOUND', email=email)) user.generate_reset_password() flash(_('SESSIONS_PASSWORD_RESET', email=email)) # send reset password email send_email('reset_password', user) return render_view(url_for('sessions.forgot_password'), redirect=True) except Exception as e: flash(e.message, 'error') return render_view('admin/sessions/forgot_password.html', form=form)
def put(self, id): category = Category.get_by_id(id) if category is None: return render_view(url_for('CategoriesView:index'), status=False, redirect=True, message=_('CATEGORY_NOT_FOUND')) if not category.can_edit(): abort(401) form = CategoryForm(category=category) if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) if not form.slug.data: form.slug.data = form.name.data if category.slug != form.slug.data: form.slug.data = Category.urlify(form.slug.data) form.populate_obj(category) category.save() return render_view(url_for('CategoriesView:put', id=category.id), message=_('CATEGORY_SAVE_SUCCESS'), redirect=True) except Exception as e: flash(e.message, 'error') return render_view('admin/categories/edit.html', form=form, category=category)
def draft_list(self): page = request.values.get('page', 1, type=int) limit = 10 posts, total = Post.posts_by_user(current_user.id, page=page, limit=limit, status=Post.POST_DRAFT) return render_view('admin/posts/drafts.html', posts=posts, page=page, limit=limit, total=total)
def index(self): page = request.args.get('page', 1, int) limit = 5 categories, total = Category.pagination(page=page, limit=limit, desc=False) categoryForm = CategoryForm() return render_view('admin/categories/index.html', page=page, limit=limit, total=total, categories=categories, categoryForm=categoryForm)
def comment_delete(id): comment = Comment.get_by_id(id) if comment is None or not comment.can_delete: abort(403) post = comment.post try: Comment.delete(id) message = _('COMMENT_DELETE_SUCCESS') except Exception as e: message = _('ERROR_COMMENT_DELETE_FAILED', error=e) return render_view(url_for('stamp.show', id=post.id), redirect=True, message=message)
def delete(self, id): category = Category.get_by_id(id) try: if category is None: raise Exception(_('CATEGORY_NOT_FOUND')) if not category.can_edit(): abort(401) if not Category.transfer_posts(category): raise Exception(_('CATEGORY_TRANSFER_POSTS_FAILED')) name = category.name Category.delete(category.id) flash(_('CATEGORY_REMOVE_SUCCESS', name=name)) except Exception as e: flash(e.message, 'error') return render_view(url_for('CategoriesView:index'), redirect=True)
def put(self, id): post = Post.get_by_id(id) if post is None or not post.can_edit() or post.is_hidden: return render_view(url_for('PostsView:index'), status=False, redirect=True, message=_('POST_NOT_FOUND')) form = PostForm(post=post) if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) cover_picture_id = request.values.get('cover_picture_id', 0, int) is_draft = request.values.get('status', 0, int) == Post.POST_DRAFT remain = request.values.get('remain', False, bool) if post.cover_picture and cover_picture_id == 0: # remove the picture, when user request its deletion post.cover_picture.remove() form.populate_obj(post) f = request.files.get('file') if f: if post.cover_picture: post.cover_picture.remove() picture = Picture.create() picture.save_file(f, current_user) post.cover_picture_id = picture.id if picture else 0 if is_draft: post.status = Post.POST_DRAFT else: if post.save_count == 1 or post.created_at is None: post.created_at = Post.current_date() post.save_count = 1 post.status = Post.POST_PUBLIC post.save_count += 1 post.editor_version = 1 post.save() Feed.clear_feed_cache() if post.is_draft: message = _('POST_DRAFT_SAVE_SUCESS') else: message = _('POST_PUBLIC_SAVE_SUCESS') if not remain: return render_view(url_for('PostsView:get', id=post.id), redirect=True, message=message) except Exception as e: flash(e.message, 'error') return render_view('admin/posts/edit.html', form=form, post=post)
def logout(): logout_user() return render_view(url_for('latest'), redirect=True, message=_('SESSIONS_MSG_SIGNED_OUT'))