示例#1
0
def edit_post(hash_id):
    paste = get_paste(hash_id)
    if not paste.is_user_owned(request.user):
        abort(404)
    form = PasteForm(request.POST)
    if form.validate():
        user = login.get_user()
        paste.title = form.title.data
        paste.is_private = form.is_private.data
        tags = []
        codes = [code for code in paste.codes]
        paste.codes = []
        for code in codes:
            code.delete()
        for i, c in enumerate(form.codes):
            tag_name = c.tag.data.lower()
            if not c.title.data:
                c.title.data = '代码片段%s' % (i + 1)
            code = Code(title=c.title.data,
                        content=c.content.data,
                        tag=tag_name,
                        user=user)
            code.save()
            tags.append(tag_name)
            tag = Tag.objects(name=tag_name).first()
            if tag:
                tag.popularity += 1
            else:
                tag = Tag(name=tag_name)
            tag.save()
            paste.codes.append(code)
        paste.tags = list(set(tags))
        paste.save()
        return redirect('/paste/%s' % paste.hash_id)
    return {'form': form, 'paste': paste, 'token': request.csrf_token}
示例#2
0
def create_post():
    form = PasteForm(request.POST)
    if form.validate():
        user = login.get_user()
        paste = Paste(title=form.title.data,
                      user=user,
                      is_private=form.is_private.data)
        tags = []
        for i, c in enumerate(form.codes):
            tag_name = c.tag.data.lower()
            if not c.title.data:
                c.title.data = '代码片段%s' % (i + 1)
            code = Code(title=c.title.data,
                        content=c.content.data,
                        tag=tag_name,
                        user=user)
            code.save()
            tags.append(tag_name)
            tag = Tag.objects(name=tag_name).first()
            if tag:
                tag.popularity += 1
            else:
                tag = Tag(name=tag_name)
            tag.save()
            paste.codes.append(code)
        paste.tags = list(set(tags))
        paste.save()
        return redirect('/paste/%s' % paste.hash_id)
    return {'form': form, 'token': request.csrf_token}
示例#3
0
def edit_post(hash_id):
    paste = get_paste(hash_id)
    if not paste.is_user_owned(request.user):
        abort(404)
    form = PasteForm(request.POST)
    if form.validate():
        user = login.get_user()
        paste.title = form.title.data
        paste.is_private = form.is_private.data
        tags = []
        codes = [code for code in paste.codes]
        paste.codes = []
        for code in codes:
            code.delete()
        for i, c in enumerate(form.codes):
            tag_name = c.tag.data.lower()
            if not c.title.data:
                c.title.data = '代码片段%s' % (i + 1)
            code = Code(title=c.title.data,
                        content=c.content.data,
                        tag=tag_name,
                        user=user)
            code.save()
            tags.append(tag_name)
            tag = Tag.objects(name=tag_name).first()
            if tag:
                tag.popularity += 1
            else:
                tag = Tag(name=tag_name)
            tag.save()
            paste.codes.append(code)
        paste.tags = list(set(tags))
        paste.save()
        return redirect('/paste/%s' % paste.hash_id)
    return {'form': form, 'paste': paste, 'token': request.csrf_token}
示例#4
0
def create_post():
    form = PasteForm(request.POST)
    if form.validate():
        user = login.get_user()
        paste = Paste(title=form.title.data, user=user, is_private=form.is_private.data)
        tags = []
        for i, c in enumerate(form.codes):
            tag_name = c.tag.data.lower()
            if not c.title.data:
                c.title.data = '代码片段%s' % (i + 1)
            code = Code(title=c.title.data,
                        content=c.content.data,
                        tag=tag_name,
                        user=user)
            code.save()
            tags.append(tag_name)
            tag = Tag.objects(name=tag_name).first()
            if tag:
                tag.popularity += 1
            else:
                tag = Tag(name=tag_name)
            tag.save()
            paste.codes.append(code)
        paste.tags = list(set(tags))
        paste.save()
        return redirect('/paste/%s' % paste.hash_id)
    return {'form': form, 'token': request.csrf_token}
示例#5
0
def save_paste_and_codes(form, paste=None):
    if not paste:
        paste = Paste(user=current_user.user)

    paste.title = form.title.data
    paste.is_private = form.is_private.data
    paste.codes = []
    tags = {}

    for tag in form.tags.data.split():
        tags[tag.lower()] = tag.lower()
    for i, c in enumerate(form.codes):
        syntax = Syntax.objects(key=c.syntax.data).get_or_404()
        if not c.title.data:
            c.title.data = '代码片段%s' % (i + 1)
        code = Code(title=c.title.data, content=c.content.data, syntax=syntax)
        tags[syntax.key] = syntax.name
        paste.codes.append(code)
    for key in tags:
        syntax = Syntax.objects(name__iexact=tags[key]).first()
        tag = Tag.objects(key__iexact=key).first()
        if not tag and syntax:
            tag = Tag(key=syntax.key, name=syntax.name)
            tag.save()
        elif not tag and not syntax:
            tag = Tag(key=key, name=tags[key])
        else:
            tag.popularity += 1
        tag.save()
        if tag not in paste.tags:
            paste.tags.append(tag)
    paste.save()
    return paste
示例#6
0
def index():
    page = get_page()
    pagination = Paste.objects(is_private=False).order_by('-updated_at').paginate(page=page, per_page=20)

    return render_template('index.html',
                           pagination=pagination,
                           tags=Tag.objects().order_by('-popularity')[:10])
示例#7
0
def view(username):
    page = get_page()
    user = User.objects.get_or_404(username=username)

    pastes = user.pastes.order_by('-updated_at')
    if not (current_user.is_authenticated and current_user.user == user):
        pastes = pastes(is_private=False)

    pagination = pastes.paginate(page, per_page=20)

    pastes = Paste.objects(user=user)
    syntax = {}
    for paste in pastes:
        for code in paste.codes:
            if code.syntax.name not in syntax:
                syntax[code.syntax.name] = 1
            else:
                syntax[code.syntax.name] += 1

    if len(syntax.keys()) > 3:
        most_syntax = [get_most_syntax(syntax) for i in range(3)]
    else:
        most_syntax = [Syntax.objects(name=key).first() for key in syntax]

    return render_template('users/user.html',
                           user=user,
                           pagination=pagination,
                           most_syntax=most_syntax,
                           tags=Tag.objects().order_by('-popularity')[:10])
示例#8
0
def index():
    page = get_page()
    pagination = Paste.objects(is_private=False).order_by('-updated_at').paginate(page=page, per_page=20)

    return render_template('index.html',
                           pagination=pagination,
                           tags=Tag.objects().order_by('-popularity')[:10])
示例#9
0
def index():
    page = get_page()
    pastes = Paste.objects(is_private=False).order_by('-updated_at')
    pastes, summary = paginate(pastes, page)

    return {'pastes': pastes,
            'page_summary': summary,
            'tags': Tag.objects().order_by('-popularity')[:10]}
示例#10
0
def save_paste_and_codes(form, paste=None):
    if not paste:
        paste = Paste(user=current_user.user)

    paste.title = form.title.data
    paste.is_private = form.is_private.data
    paste.codes = []
    tags = {}

    for tag in form.tags.data.split():
        tags[tag.lower()] = tag.lower()
    for i, c in enumerate(form.codes):
        syntax = Syntax.objects(key=c.syntax.data).get_or_404()
        if not c.title.data:
            c.title.data = '代码片段%s' % (i + 1)
        code = Code(title=c.title.data,
                    content=c.content.data,
                    syntax=syntax)
        tags[syntax.key] = syntax.name
        paste.codes.append(code)
    for key in tags:
        syntax = Syntax.objects(name__iexact=tags[key]).first()
        tag = Tag.objects(key__iexact=key).first()
        if not tag and syntax:
            tag = Tag(key=syntax.key, name=syntax.name)
            tag.save()
        elif not tag and not syntax:
            tag = Tag(key=key, name=tags[key])
        else:
            tag.popularity += 1
        tag.save()
        if tag not in paste.tags:
            paste.tags.append(tag)
    paste.save()
    return paste
示例#11
0
def index():
    page = get_page()
    pastes = Paste.objects(is_private=False).order_by('-updated_at')
    pastes, summary = paginate(pastes, page)

    return {
        'pastes': pastes,
        'page_summary': summary,
        'tags': Tag.objects().order_by('-popularity')[:10]
    }
示例#12
0
def likes_get(username):
    user = get_user(username)

    page = get_page()
    likes = user.likes.order_by('-updated_at')
    likes, summary = paginate(likes, page)

    return {'user': user,
            'likes': likes,
            'page_summary': summary,
            'tags': Tag.objects().order_by('-popularity')[:10]}
示例#13
0
def likes_get(username):
    user = get_user(username)

    page = get_page()
    likes = user.likes.order_by('-updated_at')
    likes, summary = paginate(likes, page)

    return {
        'user': user,
        'likes': likes,
        'page_summary': summary,
        'tags': Tag.objects().order_by('-popularity')[:10]
    }
示例#14
0
def save_paste_and_codes(form, paste=None):
    if not paste:
        paste = Paste(user=current_user.user)

    paste.title = form.title.data
    paste.is_private = form.is_private.data
    paste.codes = []
    paste.tags = []
    tags = []
    if form.tags.data:
        form.tags.data.split(' ')

    syntaxes = []
    for i, c in enumerate(form.codes):
        syntax = Syntax.objects(key=c.syntax.data).get_or_404()
        syntaxes.append(syntax)
        if not c.title.data:
            c.title.data = '代码片段%s' % (i + 1)
        code = Code(title=c.title.data, content=c.content.data, syntax=syntax)
        paste.codes.append(code)

    for syntax in syntaxes:
        tag = Tag.objects(key=syntax.key).first()
        if not tag:
            tag = Tag(key=syntax.key, name=syntax.name)
            tag.save()

    for key in tags:
        tag = Tag.objects(name__iexact=key).first()
        if not tag:
            tag = Tag(key=key.lower(), name=key.lower())
        else:
            tag.popularity += 1
        tag.save()
        if tag not in paste.tags:
            paste.tags.append(tag)

    paste.save()
    return paste
示例#15
0
def user_index(username):
    page = get_page()
    user = get_user(username)

    pastes = user.pastes.order_by('-updated_at')
    if not (request.user and request.user == user):
        pastes = pastes(is_private=False)

    pastes, summary = paginate(pastes, page)

    return {'user': user,
            'pastes': pastes,
            'page_summary': summary,
            'tags': Tag.objects().order_by('-popularity')[:10]}
示例#16
0
def view_user(username):
    page = get_page()
    user = User.objects.get_or_404(username=username)

    pastes = user.pastes.order_by('-updated_at')
    if not (current_user.is_authenticated and current_user.user == user):
        pastes = pastes(is_private=False)

    pagination = pastes.paginate(page, per_page=20)

    return render_template('users/user.html',
                           user=user,
                           pagination=pagination,
                           tags=Tag.objects().order_by('-popularity')[:10])
示例#17
0
def user_index(username):
    page = get_page()
    user = get_user(username)

    pastes = user.pastes.order_by('-updated_at')
    if not (request.user and request.user == user):
        pastes = pastes(is_private=False)

    pastes, summary = paginate(pastes, page)

    return {
        'user': user,
        'pastes': pastes,
        'page_summary': summary,
        'tags': Tag.objects().order_by('-popularity')[:10]
    }
示例#18
0
def save_paste_and_codes(form, paste=None):
    if not paste:
        paste = Paste(user=current_user.user)

    paste.title = form.title.data
    paste.is_private = form.is_private.data
    paste.codes = []
    paste.tags = []
    tags = []
    if form.tags.data:
        form.tags.data.split(' ')

    syntaxes = []
    for i, c in enumerate(form.codes):
        syntax = Syntax.objects(key=c.syntax.data).get_or_404()
        syntaxes.append(syntax)
        if not c.title.data:
            c.title.data = '代码片段%s' % (i + 1)
        code = Code(title=c.title.data,
                    content=c.content.data,
                    syntax=syntax)
        paste.codes.append(code)

    for syntax in syntaxes:
        tag = Tag.objects(key=syntax.key).first()
        if not tag:
            tag = Tag(key=syntax.key, name=syntax.name)
            tag.save()

    for key in tags:
        tag = Tag.objects(name__iexact=key).first()
        if not tag:
            tag = Tag(key=key.lower(), name=key.lower())
        else:
            tag.popularity += 1
        tag.save()
        if tag not in paste.tags:
            paste.tags.append(tag)

    paste.save()
    return paste
示例#19
0
def index():
    page = get_page()
    pagination = Paste.objects(is_private=False).order_by('-updated_at').paginate(page=page, per_page=20)

    print datetime.today()

    return render_template('index.html',
                           pagination=pagination,
                           hot_pastes=Paste.objects(is_private=False).order_by('-views')[:10],
                           pastes_count=Paste.objects().count(),
                           comments_count=Comment.objects().count(),
                           users_count=User.objects().count(),
                           syntax_count=Syntax.objects().count(),
                           bookmarks_count=Bookmark.objects().count(),
                           users_increased=User.objects(created_at__gt=date.today()).count(),
                           pastes_increased=Paste.objects(created_at__gt=date.today()).count(),
                           comments_increased=Comment.objects(created_at__gt=date.today()).count(),
                           bookmarks_increased=Bookmark.objects(created_at__gt=date.today()).count(),
                           tags=Tag.objects().order_by('-popularity')[:10])
示例#20
0
def index():
    page = get_page()
    pagination = Paste.objects(
        is_private=False).order_by('-updated_at').paginate(page=page,
                                                           per_page=20)

    print datetime.today()

    return render_template(
        'index.html',
        pagination=pagination,
        hot_pastes=Paste.objects(is_private=False).order_by('-views')[:10],
        pastes_count=Paste.objects().count(),
        comments_count=Comment.objects().count(),
        users_count=User.objects().count(),
        syntax_count=Syntax.objects().count(),
        bookmarks_count=Bookmark.objects().count(),
        users_increased=User.objects(created_at__gt=date.today()).count(),
        pastes_increased=Paste.objects(created_at__gt=date.today()).count(),
        comments_increased=Comment.objects(
            created_at__gt=date.today()).count(),
        bookmarks_increased=Bookmark.objects(
            created_at__gt=date.today()).count(),
        tags=Tag.objects().order_by('-popularity')[:10])
示例#21
0
def tags():
    return render_template('tags/index.html',
                           tags=Tag.objects().order_by('-popularity'))
示例#22
0
def tags():
    return render_template('tags/index.html',
                           tags=Tag.objects().order_by('-popularity'))
示例#23
0
def status():
    return jsonify(version=current_app.config['VERSION'],
                   pastes=Paste.objects().count(),
                   bookmarks=Bookmark.objects().count(),
                   tags=Tag.objects().count(),
                   users=User.objects().count())
示例#24
0
def tags():
    return {'tags': Tag.objects().order_by('-popularity')}
示例#25
0
def tags():
    return render_template('tags/index.html',
                           hot_pastes=Paste.objects(is_private=False).order_by('-views')[:10],
                           tags=Tag.objects().order_by('-popularity'))
示例#26
0
def tags():
    return {'tags': Tag.objects().order_by('-popularity')}
示例#27
0
def tags():
    return render_template(
        'tags/index.html',
        hot_pastes=Paste.objects(is_private=False).order_by('-views')[:10],
        tags=Tag.objects().order_by('-popularity'))
示例#28
0
def status():
    return jsonify(version=current_app.config['VERSION'],
                   pastes=Paste.objects().count(),
                   bookmarks=Bookmark.objects().count(),
                   tags=Tag.objects().count(),
                   users=User.objects().count())