예제 #1
0
def tag_list():
    meta = metaInit.copy()
    query = {}
    page = int(request.args.get('page', 1))
    per_page = 20
    status = int(request.args.get('status', 0))
    deleted = int(request.args.get('deleted', 0))
    page_url = url_for('admin.tag_list', page="#p#", status=status)
    if status == -1:
        meta['css_disable'] = 'active'
        query['status'] = 0
    elif status == 1:
        query['status'] = 1
        meta['css_verify'] = 'active'
    elif status == 5:
        query['status'] = 5
        meta['css_success'] = 'active'
    else:
        meta['css_all'] = 'active'

    query['deleted'] = deleted
    current_app.logger.debug(type(g.user))

    data = Tag.objects(**query).order_by('-created_at').paginate(
        page=page, per_page=per_page)
    total_count = Tag.objects(**query).count()

    meta['data'] = data.items

    pager = Pager(page, per_page, total_count, page_url)
    meta['pager'] = pager.render_view()

    return render_template('admin/tag/list.html', meta=meta)
예제 #2
0
def theme_delete(item_id):
    """Remove an item"""

    if request.method == "POST":
        item = db.session.query(Theme).filter_by(id=item_id).one()
        if item is not None:
            item_id = item.id
            item_theme_author = item.theme_author_id
            item_license_type = item.license_type_id

            # Update category relations and counts
            Category.remove_category_relation(item_id)

            # Update tag relations and counts
            Tag.remove_tag_relation(item_id)

            # Remove Item
            db.session.delete(item)
            db.session.commit()

            # Update theme author items count
            Theme.update_theme_author_count(item_theme_author)

            # Update license types count
            Theme.update_license_type_count(item_license_type)

            return redirect(url_for("home"))

    return render_template("theme/theme-single.html",
                           term_id=term_id,
                           item_id=item_id,
                           item=item)
예제 #3
0
def tag_register():
    # data = request.json
    # account = data['account']
    # password = data['password']

    # 1、request.data 会自动传入ClientForm
    form = TagForm()
    # 2、对TagForm对实例进行校验
    if form.validate():
        # 3.1、查询标签名是否已经存在
        if Tag.query.filter_by(name=form.name.data).first():
            # 4、如果标签名存在返回报错601
            return ParameterException(error_code=601, msg='标签名已经存在')
        else:
            # 5、若标签名不存在,尝试注册标签
            try:
                author = get_account_by_token()
            except Exception:
                author = 'God'
            Tag.add_tag(name=form.name.data,
                        description=form.description.data,
                        author=author)
            return NoException(msg='注册成功')

    else:
        # 若form不满足校验规则,返回报错600,后续可以细化
        raise ParameterException()
예제 #4
0
def tag(slug):
    """Retrieve items of the tag"""
    tag = Tag.get_item_by_slug(slug)
    items = TagRelation.get_items_by_tag_id(tag.id)
    tags = Tag.get_items()

    return render_template("tag/tag.html", tags=tags, tag=tag, items=items)
예제 #5
0
    def test_get_all(self):
        self.load_fixtures()

        tag = Tag()

        actual = tag.get_all()
        expect = [
            {'tag_id': 1, 'name': 'ID昇順'},
        ]

        self.assertEqual(expect, actual)
예제 #6
0
 def run(self):
     #for i in range(2):
     Contributor.fake_feed()
     Collective.fake_feed()
     Channel.fake_feed()
     Tag.fake_feed()
     BlogPost.fake_feed()
     Podcast.fake_feed()
     Section.fake_feed()
     Page.fake_feed()
     Event.fake_feed()
예제 #7
0
파일: tag.py 프로젝트: azbhg1/temp
def tag_add():
    form = TagForm(request.form)
    if request.method == 'POST' and form.validate():
        with db.auto_commit():
            tag = Tag()
            tag.name = form.name.data
            db.session.add(tag)
            Oplog('添加标签:' + tag.name)
            flash('添加标签成功~', 'ok')
            return redirect(url_for('admin.tag_add'))
    return render_template('admin/tag_add.html', form=form)
예제 #8
0
def tags():
    posts = Post.query.all()
    for post in posts:
        name = fake.text(6).replace('.', '')
        t = Tag(name=name, posts=[post])
        db.session.add(t)
    db.session.commit()
예제 #9
0
파일: views.py 프로젝트: kfqyz/cms
def edit_post(id):
    post = Post.query.get_or_404(id)
    if current_user != post.author and not current_user.can(Permission.ADMIN):
        abort(403)
    form = PostForm(post=post)
    if form.validate_on_submit():
        post.title = form.title.data
        post.categorys = [
            Category.query.filter_by(id=id).first()
            for id in form.categorys.data
        ]
        post.body = form.body.data

        for name in form.tags.data.split():
            tag = Tag.query.filter_by(name=name).first()
            if tag is None:
                tag = Tag(name=name)
                db.session.add(tag)
            if tag not in post.tags:
                post.tags.append(tag)

        for tag in post.tags:
            if tag.name not in form.tags.data.split():
                db.session.delete(tag)

        db.session.add(post)
        db.session.commit()
        flash('文章修改成功!')
        return redirect(url_for('.post', id=post.id))
    form.title.data = post.title
    form.categorys.data = [category.id for category in post.categorys.all()]
    form.tags.data = ' '.join([tag.name for tag in post.tags.all()])
    form.body.data = post.body
    return render_template('blog/edit_post.html', form=form)
예제 #10
0
def tag_delete():
    meta = {}

    ids = request.values.get('ids', '')
    type = request.values.get('type', 1)
    if not ids:
        return jsonify(success=False, message='缺少请求参数!')

    try:
        arr = ids.split(',')
        for d in arr:
            tag = Tag.objects(_id=ObjectId(d)).first()
            if tag:
                is_pass = check_role(tag.role)
                if is_pass:
                    tag.mark_delete() if tag else None
    except (Exception) as e:
        return jsonify(success=False, message=str(e))

    return jsonify(success=True,
                   message='操作成功!',
                   data={
                       'ids': ids,
                       'type': type
                   },
                   redirect_to=url_for('admin.tag_list'))
예제 #11
0
def tag_edit(tag_id):
    """Edit Tag"""
    tag = Tag.get_item_by_id(tag_id)
    if tag is None:
        abort(404)
    else:
        if request.method == "POST":
            tag.name = request.form["name"]
            tag.slug = request.form["slug"]

            db.session.add(tag)
            db.session.commit()

        return render_template("tag/tag-edit.html",
                               tag=tag,
                               tags=Tag.get_items())
예제 #12
0
파일: home.py 프로젝트: saury2013/Memento
def result_by_tag(name,page):
    all_fragments = Tag.get_fragments_by_tagname(name)
    count = len(all_fragments)
    PER_PAGE = 1
    fragments = all_fragments[(page-1)*PER_PAGE:page*PER_PAGE]
    pagination = Pagination(page,PER_PAGE,count)
    return render_template("result.html",fragments=fragments,pagination=pagination)
예제 #13
0
def add_tag_to_article():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    article_id = request_body['article_id']
    article_tags = request_body['article_tags']
    linked_article = Tag.add_tag_to_article(article_id=article_id,
                                            article_tags=article_tags)
    return Success(linked_article)
예제 #14
0
def tag_delete():
    uid = request.get_json()['id']
    t = Tag.is_exist(uid=uid)
    if t:
        u = Tag.query.filter_by(id=uid).first()
        u.delete()
        return NoException(msg='删除成功')
    else:
        return ParameterException(msg="查无此人", error_code=602)
예제 #15
0
    def addTags(scopeitem, tags: Iterable):
        from app.models import Tag

        for tag in tags:
            if tag.strip(
            ) == "":  # If the tag is an empty string then don't use it
                continue
            tag_obj = Tag.create_if_none(tag)
            scopeitem.addTag(tag_obj)
예제 #16
0
def add_tag_to_topic():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    editorial_topic_id = request_body['editorial_topic_id']
    editorial_topic_tags = request_body['editorial_topic_tags']
    linked_editorial_topic = Tag.add_tag_to_topic(
        editorial_topic_id=editorial_topic_id,
        editorial_topic_tags=editorial_topic_tags)
    return Success(linked_editorial_topic)
예제 #17
0
def create_tag():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    tag_name = request_body['tag_name']
    if 'tag_entity_type' in request_body:
        tag_entity_type = request_body['tag_entity_type']
    else:
        tag_entity_type = 'none'
    message = Tag.create_tag(tag_name=tag_name,
                             tag_entity_type=tag_entity_type)
    return message
예제 #18
0
파일: tag.py 프로젝트: hanson-hex/movie
def add():
    """
    添加标签
    """
    form = TagForm()
    # 判断表单是否为空
    if form.validate_on_submit():
        data = form.data
        tag = Tag.query.filter_by(name=data['name']).count()
        log('tag', tag)
        # 若标签名称存在, 则返回错误信息
        if tag == 1:
            flash('标签名称已经存在!', 'err')
            return redirect(url_for('tag.add'))
        # 若名称不存在, 则添加
        else:
            tag = Tag(data)
            tag.save()
            flash('标签添加成功', 'ok')
            return redirect(url_for('tag.add'))
    return render_template('admin/tag/add.html', form=form)
예제 #19
0
def tag_add():
    """Register new tag"""

    if request.method == "POST":
        # Define variables
        name = request.form.get('name')
        slug = request.form.get('slug')
        if slug == "":
            slug = slugify(name)

        tag_exists = Tag.get_item_by_slug(slug) is not None
        if not tag_exists:
            # Add new item to database
            item = Tag.add(name, slug)
            # Redirect to add tag page
            return redirect(url_for("tag_add"))
        else:
            flash('Tag already exists.')

    # Render tag-add.html and serve page
    return render_template("tag/tag-add.html", tags=Tag.get_items())
예제 #20
0
    def load_tasks(db) -> DBFuncResult:
        _SQL = """select id, name from awards_types """
        db.exec_sql(_SQL, [])
        res = db.cursor.fetchall()

        if res:
            tags = []
            for tag in res:
                tags.append(Tag(id=tag[0], name=tag[1]))
            return DBFuncResult(tags, True, None, None)
        return DBFuncResult(None, False,
                            "Не удалось получить список тэгов заданий", None)
예제 #21
0
파일: home.py 프로젝트: saury2013/Memento
def create():
    form = CreateFragmentForm()
    form.branch.choices = Branch.get_all_choices()
    form.tags.choices = Tag.get_all_chioces()
    fragment = Fragment()
    branch_id = form.branch.data
    if form.validate_on_submit():
        fragment.title = form.title.data
        fragment.markdown = form.body.data
        fragment.user_id = current_user.id
        fragment.branch_id = form.branch.data
        tags_id = form.tags.data
        tags = Tag.get_by_ids(tags_id)
        fragment.tags = tags
        fragment.save()
        flash('Edit Saved.', category='success')
        return redirect(url_for("main.home"))

    form.title.data = fragment.title
    form.body.data = fragment.markdown
    return render_template('editor.html',form=form)
예제 #22
0
    def import_scope_list(address_list: Iterable, blacklist: bool) -> dict:
        result = {"fail": [], "success": 0, "exist": 0}
        prefixes = {"sqlite": " OR IGNORE", "mysql": " IGNORE"}
        selected_prefix = prefixes.get(db.session.bind.dialect.name)
        scope_import = {}
        scope_tag_import = {}
        address_list = [line.strip() for line in address_list]
        tags = ScopeItem.extract_import_tags(address_list)
        tag_dict = {}
        from app.models import Tag

        for tag in tags:
            tag_dict[tag] = Tag.create_if_none(tag)
        db.session.commit()
        for line in address_list:
            ip, tags = ScopeItem.parse_import_line(line)
            if not ip:
                result["fail"].append(line)
                continue
            tags = [tag_dict[tag] for tag in tags]
            item = ScopeItem(target=str(ip), blacklist=blacklist).as_dict()
            scope_tag_import[item["target"]] = tags
            scope_import[item["target"]] = item
        import_list = [v for _, v in scope_import.items()]
        chunk_size = 10000
        import_chunks = [
            import_list[i:i + chunk_size]
            for i in range(0, len(import_list), chunk_size)
        ]
        for chunk in import_chunks:
            ins_stmt = (ScopeItem.__table__.insert().prefix_with(
                selected_prefix).values(chunk))
            ins_result = db.session.execute(ins_stmt)
            result["success"] += ins_result.rowcount
        result["exist"] = len(address_list) - len(
            result["fail"]) - result["success"]
        all_scope = {item.target: item.id for item in ScopeItem.query.all()}
        tags_to_import = []
        for k, v in scope_tag_import.items():
            for tag in v:
                tags_to_import.append(
                    dict(scope_id=all_scope[k], tag_id=tag.id))
        import_chunks = [
            tags_to_import[i:i + chunk_size]
            for i in range(0, len(tags_to_import), chunk_size)
        ]
        for chunk in import_chunks:
            tag_stmt = scopetags.insert().prefix_with(selected_prefix).values(
                chunk)
            db.session.execute(tag_stmt)
        db.session.commit()
        return result
예제 #23
0
def add_tag():
    # name = request.args.get('name', 0, type=int)
    response = {"status": 500, "msg": "name is Null!"}
    name = request.form['name']
    if name != "":
        tag = Tag.add(name)
        if tag:
            res = {"id": tag.id, "name": tag.name}
            response['tag'] = res
            response["status"] = 200
        else:
            response["msg"] = "tag has already exists!"
    return make_response(json.dumps(response))
예제 #24
0
def theme_single(slug):
    """Return an item"""
    item = db.session.query(Theme).filter_by(slug=slug).one()
    item_categories = db.session.query(CategoryRelation) \
        .filter_by(theme_id=item.id).all()
    item_tags = db.session.query(TagRelation) \
        .filter_by(theme_id=item.id).all()

    return render_template("theme/theme-single.html",
                           item=item,
                           categories=Category.get_items(),
                           item_categories=item_categories,
                           tags=Tag.get_items(),
                           item_tags=item_tags)
예제 #25
0
def tag_submit():
    meta = metaInit.copy()
    meta['referer_url'] = request.environ.get(
        'HTTP_REFERER') if request.environ.get('HTTP_REFERER') else ''
    id = request.args.get('id', None)
    meta['data'] = None
    if id:
        tag = Tag.objects(_id=ObjectId(id)).first()
        meta['data'] = tag

    form = SaveForm()

    #current_app.logger.debug(id)

    return render_template('admin/tag/submit.html', meta=meta, form=form)
예제 #26
0
def create_question(cid):
    course = Course.query.filter_by(cid=cid).first_or_404()
    form = QuestionCreateForm().validate_for_api()
    with db.auto_commit():
        question = Question(title=form.title.data,
                            content=form.content.data,
                            course_id=course.cid,
                            author_gid=g.user['gid'],
                            update_time=int(datetime.now().timestamp()))
        history = History(root_question=question)
        for tag_name in form.tags.data:
            tag = Tag.get_or_create_tag(tag_name)
            question.tags.append(tag)
        db.session.add(question, history)
    return Success()
예제 #27
0
def tag_upload():
    # form = TagImageForm()
    # print(form)
    file = request.files.get('file')
    form = TagImageForm(data={'file': file})
    if form.validate():
        img = form.file.data
        file_name = uuid.uuid4().hex + '.' + img.filename.split('.')[-1]
        path = os.getcwd() + '\\app' + UPLOAD_PATH + '\\' + file_name
        img.save(path)

        t = Tag.is_exist(tag_id=1)
        if t:
            u = Tag.query.filter_by(id=1).first()
            u.update(icon_url=file_name)
            return NoException(msg="上传成功")
        else:
            return ParameterException(msg="查无此人", error_code=602)

    else:
        raise ParameterException()
예제 #28
0
파일: views.py 프로젝트: kfqyz/cms
def new_post():
    form = PostForm()
    if current_user.can(Permission.WRITE) and form.validate_on_submit():
        post = Post(title=form.title.data,
                    body=form.body.data,
                    categorys=[
                        Category.query.filter_by(id=id).first()
                        for id in form.categorys.data
                    ],
                    author=current_user._get_current_object())

        for name in form.tags.data.split():
            tag = Tag.query.filter_by(name=name).first()
            if tag is None:
                tag = Tag(name=name)
                db.session.add(tag)
            post.tags.append(tag)

        db.session.add(post)
        db.session.commit()
        flash('文章发表成功!')
        return redirect(url_for('.post', id=post.id))
    return render_template('blog/new_post.html', form=form)
예제 #29
0
def update_question(qid):
    question = Question.query.get_or_404(qid)
    form = QuestionUpdateForm().validate_for_api()
    with db.auto_commit():
        print(form.new_tags.data)
        for new_tag_name in form.new_tags.data:
            tag = Tag.get_or_create_tag(new_tag_name)
            question.tags.append(tag)
        for del_tag_name in form.del_tags.data:
            tag_set = Tag.query.filter_by(name=del_tag_name)
            if tag_set.count():
                try:
                    question.tags.remove(tag_set.first())
                except ValueError:
                    continue
        if form.content.data or form.title.data:
            if form.content.data != question.content or form.title.data != question.title:
                history = History.create_from_question(question)
                form.populate_obj(question)
                db.session.add(history)
            question.author_gid = g.user['gid']
            question.update_time = int(datetime.now().timestamp())
    return Success()
예제 #30
0
 def setUp(self):
     self.tag = Tag("Groceries")