Beispiel #1
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
Beispiel #2
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
Beispiel #3
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])
Beispiel #4
0
class CodeForm(Form):
    title = StringField(u'片段描述')
    tag = SelectField(u'语法',
                      choices=[(s.name.lower(), s.name)
                               for s in Syntax.objects().order_by('name')])
    content = TextAreaField(u'代码片段',
                            validators=[InputRequired(message=u'不能为空!')])
Beispiel #5
0
def get_most_syntax(syntax):
    highest_name = None
    for name in syntax:
        if not highest_name:
            highest_name = name
        else:
            if syntax[name] > syntax[highest_name]:
                highest_name = name
    syntax.pop(highest_name)
    return Syntax.objects(name=highest_name).first()
Beispiel #6
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])
Beispiel #7
0
def view(tag_name):
    criteria = {}
    tag = Tag.objects.get_or_404(key=tag_name)
    if request.args.get('filter', None) != 'mine' or not current_user.is_authenticated:
        criteria['is_private'] = False
    syntax = Syntax.objects(key=tag_name).first()
    if syntax:
        criteria['codes__syntax'] = syntax
    else:
        criteria['tags'] = tag
    pastes = Paste.objects(**criteria).order_by('-updated_at')
    page = get_page()

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

    return render_template('tags/view.html',
                           tag=tag,
                           hot_pastes=Paste.objects(is_private=False).order_by('-views')[:10],
                           pagination=pagination)
Beispiel #8
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
Beispiel #9
0
def view(tag_name):
    criteria = {}
    tag = Tag.objects.get_or_404(key=tag_name)
    if request.args.get('filter',
                        None) != 'mine' or not current_user.is_authenticated:
        criteria['is_private'] = False
    syntax = Syntax.objects(key=tag_name).first()
    if syntax:
        criteria['codes__syntax'] = syntax
    else:
        criteria['tags'] = tag
    pastes = Paste.objects(**criteria).order_by('-updated_at')
    page = get_page()

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

    return render_template(
        'tags/view.html',
        tag=tag,
        hot_pastes=Paste.objects(is_private=False).order_by('-views')[:10],
        pagination=pagination)
Beispiel #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 = []
    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
Beispiel #11
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])
Beispiel #12
0
 def find_or_create_syntax(key, syntax, name):
     syn = Syntax.objects(key=key).first()
     if syn is None:
         print "Seeding syntax: %s, %s, %s" % (key, syntax, name)
         Syntax(key=key, syntax=syntax, name=name).save()
Beispiel #13
0
 def find_or_create_syntax(key, syntax, name):
     syn = Syntax.objects(key=key).first()
     if syn is None:
         print "Seeding syntax: %s, %s, %s" % (key, syntax, name)
         Syntax(key=key, syntax=syntax, name=name).save()
Beispiel #14
0
 def find_or_create_syntax(name):
     syntax = Syntax.objects(name=name).first()
     if syntax is None:
         print "Seeding syntax: %s" % name
         Syntax(name=name).save()