예제 #1
0
    def update(self, type, file, article_uuid=None, blck_uuid=None):
        uploader = Uploader(file)

        if article_uuid is None:
            raise Exception(_("Wrong value, need article uuid"))

        article = Article({"uuid": article_uuid})
        if type == "video":
            url = uploader.video(article_uuid)
            block = Block({"title": file.filename, "type": "video", "uuid": blck_uuid})
            block.set_content(url, "file")
            # return article.update_media_block(block_id=blck_uuid, content=url, title=file.filename).json()

        elif type == "image":
            url = uploader.image(article_uuid)
            block = Block({"title": file.filename, "type": "image", "uuid": blck_uuid})
            block.set_content(url, "link")
            # return article.update_media_block(block_id=blck_uuid, content=url, title=file.filename).json()

        elif type == "file":
            url = uploader.file(article_uuid)
            block = Block({"title": file.filename, "type": "file", "uuid": blck_uuid})
            block.set_content(url, "link")
            # return article.update_media_block(block_id=blck_uuid, content=url, title=file.filename).json()

        else:
            raise Exception(_("Wrong type"))
        return article.update_block_new(block).json()
def add_article(args, result):
    title = args[0]
    author = args[1]
    content = args[2]
    label = args[3]
    article = Article(title=title, author=author, content=content, label=label)
    article.save()
    result['status'] = 'success'
예제 #3
0
 def delete(self, id):
     user = current_user()
     article = query_article(id)
     if article is None:
         return jsonify(falseReturn("该文章不存在"))
     if article.writer_student_number != user.student_number:
         return jsonify(falseReturn("非法删除,只有该文章的作者才可以删除文章"))
     Article.delete_article(article)
     return jsonify(trueReturn("删除文章成功"))
예제 #4
0
def addArticle():
    form = request.form
    # 计算字数  就是计算字符串的长度
    numbers = len(form['content'])
    if request.method == 'POST':
        with db.auto_commit():
            article = Article()
            article.set_attrs(form)
            article.numbers = numbers
            db.session.add(article)
        return jsonify({'code': 200, 'message': '写入文章成功'})
def create_article(article_input: ArticleInput) -> Article:

    collection = Article.collection()
    document = article_input.dict()

    resp = collection.insert_one(document)
    inserted_id = resp.inserted_id

    document["_id"] = inserted_id

    return Article.from_mongodb(document)
def get_article_by_id(article_id: Union[str, ObjectId]) -> Optional[Article]:

    article_id = ensure_object_id(article_id)

    collection = Article.collection()
    found = collection.find_one(article_id)

    if not found:
        return None

    return Article.from_mongodb(found)
예제 #7
0
 def add_article(self, form, user):
     try:
         article = Article(form=form)
         article.user_id = user.id
         article.read_count = 0
         category = self.dao.getCategoryById(form['category'])
         article.category = [category]
         self.dao.add_article(article)
         return PublicMethod.true_return(data='', msg=u'发布成功')
     except Exception, e:
         traceback.print_exc()
         return PublicMethod.false_return(data='', msg=u'后台报错,请联系管理员')
def update_article_by_id(article_id: Union[str, ObjectId],
                         article_args: ArticleInput) -> Optional[Article]:

    collection = Article.collection()
    article_id = ensure_object_id(article_id)

    resp = collection.update_one(dict(_id=article_id),
                                 {"$set": article_args.dict()})

    if resp.modified_count == 1:
        return Article(id=str(article_id), **article_args.dict())
    else:
        return None
예제 #9
0
파일: edit.py 프로젝트: lodely/flask_blog
def edit():
    form = EditForm(request.form)
    uid = current_user.id
    user = User.query.filter_by(id=uid).first()
    form.author.data = user.nickname
    if request.method == 'POST' and form.validate():
        article = Article()
        with db.auto_commit():
            article.set_attrs(form.data)
            db.session.add(article)
            db.session.commit()

    return render_template('edit.html', form=form)
예제 #10
0
def scrap_and_save(url):
    #try:
    #_set_task_progress(0)
    data = []
    page = scr.ScrapPage(url)  # Using our Scrap module to scrap the website
    articles = page.Articles()
    n = len(articles)
    #i=0
    for article in articles:
        b = scr.ScrapArticles()
        b.run(article, url)
        content = b.content
        if content != '':
            headline = b.headline
            authors = b.authors
            url_art = b.url
            summary = b.summary
            keywords = b.keywords
            json = tjs.ToJson(authors, content, url_art, headline, keywords,
                              summary)
            article = Article(**json).save()
            json['id'] = article.id
            #print(json['headline'])
            data.append(json)
            #time.sleep(5)
            #i += 1
    #data=Article.objects()
    return data
예제 #11
0
파일: routes.py 프로젝트: adnou10/ScrapNews
def key():
    if request.method == 'POST':
        key=request.form.get('key')
        arts=Article.objects(keywords=key)
        return  render_template('articles.html',arts=arts)   #display articles in db
    else:
        return redirect(url_for('articles'))
예제 #12
0
 def get(self, student_number):
     articles = query_someone_article(student_number)
     if articles is None:
         return jsonify(true_data_Return("null", "null", "无数据"))
     data = []
     for i in articles:
         data.append(Article.get_simple_article(i))
     return jsonify(true_data_Return(data, "", "获取数据成功"))
예제 #13
0
 def get(self, id):
     article = query_article(id)
     if article is None:
         return jsonify(falseReturn("该文章不存在"))
     data = []
     data.append(Article.get_article(article))
     history("article", article.title, id)
     return jsonify(true_data_Return(data, "", "获取数据成功"))
def delete_article_by_id(article_id: str) -> bool:

    collection = Article.collection()
    article_id = ensure_object_id(article_id)

    resp = collection.delete_one(dict(_id=article_id))

    return resp.deleted_count == 1
예제 #15
0
파일: views.py 프로젝트: Styxlethes/ToDo
def prepare():
    form = TODOForm()
    if form.validate():
        with db.auto_commit():
            article = Article(title=form.title.data, text=form.text.data)
            db.session.add(article)
            return redirect(url_for('main.index'))
    return render_template('prepare.html', form=form)
예제 #16
0
 def get(self, keyword):
     try:
         articles = Article.objects(keywords=keyword).to_json()
         return Response(articles, mimetype="application/json", status=200)
     except DoesNotExist:
         raise ArticleNotExistsError
     except Exception:
         raise InternalServerError
예제 #17
0
def del_article(article_id, result):
    article = Article.objects(_id=article_id)
    if article:
        article.delete()
        result['status'] = 'success'
    else:
        result['status'] = 'fail'
        result['msg'] = 'article not exist'
예제 #18
0
def edit_article_importance():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    article_id = request_body['article_id']
    article_importance = request_body['article_importance']
    article = Article.edit_article_importance(
        article_id=article_id, article_importance=article_importance)
    return Success(article)
예제 #19
0
def search_articles_by_label(required_label):
    tmp_list = list()
    articles = Article.objects()
    for article in articles:
        # whether list has contains relationship
        if set(required_label) <= set(article.label):
            tmp_list.append(article)
    return tmp_list
예제 #20
0
def create_article():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    editorial_topic_id = request_body['editorial_topic_id']
    article_id = request_body['article_id']
    linked_editorial_topic = Article.create_article(
        editorial_topic_id=editorial_topic_id, article_id=article_id)
    return Success(linked_editorial_topic)
예제 #21
0
def delete_tag_from_article():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    article_id = request_body['article_id']
    article_tags = request_body['article_tags']
    article = Article.delete_tag_from_article(article_id=article_id,
                                              article_tags=article_tags)
    return Success(article)
예제 #22
0
def upload_and_parse_url():
    request_body = request.get_json()
    # user_id = request_body['user_id']
    editorial_topic_id = request_body['editorial_topic_id']
    target_url = request_body['target_url']
    linked_editorial_topic = Article.upload_and_parse_url(
        editorial_topic_id=editorial_topic_id, target_url=target_url)
    return Success(linked_editorial_topic)
예제 #23
0
def get_news(url):
    """
    RSSから記事情報をListで取得

    Parameters
    ----------
    url : String
        RSSのURL

    Returns
    -------
    list[Article]
        記事のList
    """

    # RSS情報を取得
    feeds = feedparser.parse(url)

    ai = predict()

    articles = list()

    for feed in feeds['entries']:
        article = Article()

        # 記事へのURL
        article.url = feed['link']

        # 記事名
        article.title = feed['title']

        # タグ
        if app.config["TAG_JUDGMENT_BY_AI"]:
            article.tag = get_tag(feed) + "," + ai.tag_judgment(article.title)
        else:
            article.tag = get_tag(feed)

        # Rss内の画像取得
        article.image = search_eyecatch_by_feed(feed)

        # 記事更新日 TODO:要改善
        article.datetime = datetime.today().strftime("%Y/%m/%d %H:%M:%S")

        # サイトタイトル
        article.site_name = feeds['feed']['title']

        articles.append(article)

    return articles
예제 #24
0
 def post(self):
     try:
         body = request.get_json()
         article = Article(**body).save()
         id = article.id
         return {'id': str(id)}, 200
     except (FieldDoesNotExist, ValidationError):
         raise SchemaValidationError
     except Exception as e:
         raise InternalServerError
예제 #25
0
def get_likes_status(args, result):
    id = args[0]
    phone_num = args[1]
    article = Article.objects(_id=id).first()
    if article:
        likes_list = article['point_praise_user_list']
        if phone_num in likes_list:
            result['is_like'] = True
    else:
        result['status'] = 'fail'
        result['msg'] = 'article not exist'
예제 #26
0
파일: manage.py 프로젝트: ohahlev/flaskit
def init_article_data():
    about_us = Article.query.filter_by(type=util.ABOUT).first()
    if not about_us:
        about_us = Article(
            type=util.ABOUT,
            text="This is about us text paragraph",
        )
        db.session.add(about_us)

    contact_us = Article.query.filter_by(type=util.CONTACT).first()
    if not contact_us:
        contact_us = Article(type=util.CONTACT,
                             text="This is contact us text paragraphe")
        db.session.add(contact_us)

    contact = Contact.query.filter_by(phone1=admin_contact_number).first()
    if not contact:
        contact = Contact(phone1=admin_contact_number,
                          email="*****@*****.**")
        db.session.add(contact)
예제 #27
0
 def post(self):
     user = current_user()
     try:
         title = request.form['title']
         content = request.form['content']
     except:
         return jsonify(falseReturn("缺少部分必要信息"))
     article_id = create_id()
     new = Article(title, user.student_number, article_id, content)
     db.session.add(new)
     session_commit()
     return jsonify(trueReturn("上传文章成功"))
예제 #28
0
def edit_article(args, result):
    article_id = args[0]
    edit_type = args[1]
    edit_content = args[2]
    article = Article.objects(_id=article_id).first()
    if article:
        article[edit_type] = edit_content
        article.save()
        result['status'] = 'success'
    else:
        result['status'] = 'fail'
        result['msg'] = 'article not exist'
예제 #29
0
def test_delete_article_exist(client, mock_article_gen):

    collection = Article.collection()

    article1 = mock_article_gen(title="First")
    article2 = mock_article_gen(title="Second")

    assert collection.count_documents({}) == 2

    resp = client.delete(f"/article/{article1.id}")

    print(resp.json())
    assert resp.status_code == 200
    assert collection.count_documents({}) == 1
예제 #30
0
def test_delete_article_doesnt_exist(client, mock_article_gen):

    collection = Article.collection()

    non_existent_id = ObjectId()
    article1 = mock_article_gen(title="First")
    article2 = mock_article_gen(title="Second")

    assert collection.count_documents({}) == 2

    resp = client.delete(f"/article/{non_existent_id}")

    assert resp.status_code == 404
    assert collection.count_documents({}) == 2
예제 #31
0
def publish():
    message = dict(MESSAGE)
    reqp = reqparse.RequestParser()
    reqp.add_argument("title",
                      type=str,
                      required=True,
                      location=["json", "form"])
    reqp.add_argument("tag",
                      type=list,
                      required=False,
                      location=["json", "form"])
    reqp.add_argument("privacy",
                      type=bool,
                      required=True,
                      location=["json", "form"])
    reqp.add_argument("article",
                      type=str,
                      required=True,
                      location=["json", "form"])
    args = reqp.parse_args()

    today = datetime.datetime.now()
    tags = request.json['tag']
    # print(request.json['tag'])

    if Article.query.filter_by(title=args["title"]).first() is not None:
        message["success"] = False
        message["message"] = "文章已存在!请换个标题。"
        return jsonify(message)

    article = Article(title=args["title"],
                      tags="丨".join(tags),
                      article=args["article"],
                      privacy=args["privacy"],
                      p_year=today.year,
                      p_month=today.month,
                      p_day=today.day)
    try:
        db.session.add(article)
        db.session.commit()
        # print(article.id)
        message["res"] = {"id": article.id}
    except Exception as e:
        print(e, flush=True)
        db.session.rollback()
        message["success"] = False
        message["message"] = "新建文章失败!"
    # print("--Log--: post article %s, %s" % (message["success"], message["message"]), flush=True)
    return jsonify(message)