示例#1
0
class ImportCommentView(MethodView):
    decorators = [login_required, editor_permission.require(401)]
    template_name = 'blog_admin/import_comments.html'

    def get(self, form=None):
        if not form:
            form = forms.ImportCommentForm()
        data = {'form': form}
        return render_template(self.template_name, **data)

    def post(self):
        form = forms.ImportCommentForm(obj=request.form)
        if not form.validate():
            return self.get(form=form)

        if form.json_file.data and form.import_format.data=='file':
            msg = 'Import from file is not ready yet'
            flash(msg, 'warning')
            return redirect(url_for('blog_admin.import_comments'))

        try:
            comment_json = json.loads(form.content.data)
        except:
            msg = 'Json data error'
            flash(msg, 'warning')
            return redirect(url_for('blog_admin.import_comments'))

        url_regx = re.compile('^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$')
        def clean_url(url):
            if not url:
                return None
            url = url.replace('\\', '')
            clean = url_regx.match(url)
            if not clean:
                # print url
                return None

            return url


        imported_comments = comment_json['posts']
        for import_comment in imported_comments:
            comment = models.Comment()
            comment.author = import_comment['author_name']
            comment.email = import_comment['author_email']
            comment.homepage = clean_url(import_comment['author_url'])
            comment.post_slug = import_comment['thread_key']
            comment.post_title = import_comment['thread_key']
            comment.md_content = import_comment['message']
            comment.pub_time = dateutil.parser.parse(import_comment['created_at'])
            comment.update_time = dateutil.parser.parse(import_comment['updated_at'])
            comment.status = 'approved'
            comment.misc = 'duoshuo'

            comment.save()

        msg = 'Succeed to import comments'
        flash(msg, 'success')
        return redirect(url_for('blog_admin.comments_approved'))
示例#2
0
class Comments(MethodView):
    decorators = [login_required, editor_permission.require(401)]

    def delete(self):
        if request.args.get('ajax') == 'true' and request.args.get(
                'action') == 'clear_comments':
            comments = models.Comment.objects(status='pending')
            comments.delete()
            flash('All pending comments has been deleted', 'success')
        # flash(request.args.get('action'))
        # return redirect(url_for('blog_admin.comments'))
        return 'All pending comments has been deleted'
示例#3
0
class Comment(MethodView):
    decorators = [login_required, editor_permission.require(401)]
    template_name = 'blog_admin/comments.html'

    def get(self, status='pending', pk=None):
        if pk:
            return redirect(url_for('blog_admin.comments'))

        data = {}
        comments = models.Comment.objects(status=status)

        keyword = request.args.get('keyword')
        if keyword:
            comments = comments.filter(md_content__icontains=keyword)

        try:
            cur_page = int(request.args.get('page', 1))
        except:
            cur_page = 1
        comments = comments.paginate(page=cur_page, per_page=10)

        data['status'] = status
        data['comments'] = comments
        data['keyword'] = keyword

        return render_template(self.template_name, **data)

    def put(self, pk):
        comment = models.Comment.objects.get_or_404(pk=pk)
        comment.status = 'approved'
        comment.save()

        if request.args.get('ajax'):
            return 'success'

        msg = 'The comment has been approved'
        flask(msg, 'success')
        return redirect(url_for('blog_admin.comments_approved'))

    def delete(self, pk):
        comment = models.Comment.objects.get_or_404(pk=pk)
        comment.delete()

        if request.args.get('ajax'):
            return 'success'

        msg = 'The comment has been deleted'
        flask(msg, 'success')
        return redirect(url_for('blog_admin.comments_approved'))
示例#4
0
class PostStatisticList(MethodView):
    decorators = [login_required, editor_permission.require(401)]
    template_name = 'blog_admin/post_statistics.html'

    def get(self):
        posts = models.PostStatistics.objects.all()

        try:
            cur_page = int(request.args.get('page', 1))
        except:
            cur_page = 1

        posts = posts.paginate(page=cur_page, per_page=PER_PAGE * 2)

        return render_template(self.template_name, posts=posts)
示例#5
0
class PostStatisticDetail(MethodView):
    decorators = [login_required, editor_permission.require(401)]
    template_name = 'blog_admin/post_statistics_detail.html'

    def get(self, slug):
        post = models.Post.objects.get_or_404(slug=slug)
        post_statistics = models.PostStatistics.objects.get_or_404(post=post)
        trackers = models.Tracker.objects(post=post)

        try:
            cur_page = int(request.args.get('page', 1))
        except:
            cur_page = 1

        trackers = trackers.paginate(page=cur_page, per_page=PER_PAGE*2)

        data = {'post_statistics':post_statistics, 'trackers':trackers, 'post':post }

        return render_template(self.template_name, **data)