コード例 #1
0
ファイル: views.py プロジェクト: aromeira/dataviva-site
def create():
    csrf_token = request.form.get('csrf_token')
    upload_folder = os.path.join(app.config['UPLOAD_FOLDER'], mod.name, csrf_token, 'files')

    form = RegistrationForm()

    if not os.path.exists(upload_folder):
        flash(u'Selecione o arquivo do artigo para enviá-lo.', 'danger')
        return render_template('scholar/new.html', form=form)

    if form.validate() is False:
        return render_template('scholar/new.html', form=form)
    else:
        article = Article()
        article.title = form.title.data
        article.theme = form.theme.data
        article.abstract = form.abstract.data
        article.postage_date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        article.approval_status = 0

        author_input_list = form.authors.data.split(',')
        for author_input in author_input_list:
            article.authors.append(AuthorScholar(author_input))

        keyword_input_list = form.keywords.data.split(',')
        for keyword_input in keyword_input_list:
            keyword = KeyWord.query.filter_by(name=keyword_input).first()

            if not keyword:
                article.keywords.append(KeyWord(keyword_input))
            else:
                article.keywords.append(keyword)

        db.session.add(article)
        db.session.flush()

        if os.path.exists(upload_folder):

            file_name = [file for file in os.listdir(upload_folder)][0]

            article.url = upload_helper.upload_s3_file(
                os.path.join(upload_folder, file_name),
                os.path.join('scholar/', str(article.id), 'files/', 'article'),
                {
                    'ContentType': "application/pdf",
                    'ContentDisposition': 'attachment; filename=dataviva-article-' + str(article.id) + '.pdf'
                }
            )

            shutil.rmtree(os.path.split(upload_folder)[0])

        db.session.commit()

        message = u'Muito obrigado! Seu estudo foi submetido com sucesso e será analisado pela equipe do DataViva. \
                    Em até 15 dias você receberá um retorno sobre sua publicação no site!'
        flash(message, 'success')
        return redirect(url_for('scholar.index'))
コード例 #2
0
ファイル: views.py プロジェクト: DataViva/dataviva-site
def create():
    csrf_token = request.form.get('csrf_token')
    upload_folder = os.path.join(app.config['UPLOAD_FOLDER'], mod.name, csrf_token, 'files')

    form = RegistrationForm()

    if not os.path.exists(upload_folder):
        flash(u'Selecione o arquivo do artigo para enviá-lo.', 'danger')
        return render_template('scholar/new.html', form=form)

    if form.validate() is False:
        form.set_choices(approved_articles_keywords())
        return render_template('scholar/new.html', form=form)
    else:
        article = Article()
        article.title = form.title.data
        article.theme = form.theme.data
        article.abstract = form.abstract.data
        article.postage_date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        article.approval_status = 0

        author_input_list = form.authors.data.replace(', ', ',').split(',')
        for author_input in author_input_list:
            article.authors.append(AuthorScholar(author_input))

        for keyword_input in form.keywords.data:
            keyword = KeyWord.query.filter_by(name=keyword_input).first()
            if not keyword:
                article.keywords.append(KeyWord(keyword_input))
            else:
                article.keywords.append(keyword)

        db.session.add(article)
        db.session.flush()

        if os.path.exists(upload_folder):

            file_name = [file for file in os.listdir(upload_folder)][0]

            article.file_url = upload_helper.upload_s3_file(
                os.path.join(upload_folder, file_name),
                os.path.join('scholar/', str(article.id), 'files/', 'article'),
                {
                    'ContentType': "application/pdf",
                    'ContentDisposition': 'attachment; filename=dataviva-article-' + str(article.id) + '.pdf'
                }
            )

            shutil.rmtree(os.path.split(upload_folder)[0])

        db.session.commit()
        upload_helper.log_operation(module=mod.name, operation='create', user=(g.user.id, g.user.email), objs=[(article.id, article.title)])
        new_article_advise(article, request.url_root)
        message = dictionary()["article_submission"]
        flash(message, 'success')
        return redirect(url_for('scholar.index'))
コード例 #3
0
ファイル: views.py プロジェクト: joaohbr28/dataviva-site
def create():
    csrf_token = request.form.get('csrf_token')
    upload_folder = os.path.join(app.config['UPLOAD_FOLDER'], mod.name, csrf_token, 'files')

    form = RegistrationForm()

    if not os.path.exists(upload_folder):
        flash(u'Selecione o arquivo do artigo para enviá-lo.', 'danger')
        return render_template('scholar/new.html', form=form)

    if form.validate() is False:
        form.set_choices(approved_articles_keywords())
        return render_template('scholar/new.html', form=form)
    else:
        article = Article()
        article.title = form.title.data
        article.theme = form.theme.data
        article.abstract = form.abstract.data
        article.postage_date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        article.approval_status = 0

        author_input_list = form.authors.data.replace(', ', ',').split(',')
        for author_input in author_input_list:
            article.authors.append(AuthorScholar(author_input))

        for keyword_input in form.keywords.data:
            keyword = KeyWord.query.filter_by(name=keyword_input).first()
            if not keyword:
                article.keywords.append(KeyWord(keyword_input))
            else:
                article.keywords.append(keyword)

        db.session.add(article)
        db.session.flush()

        if os.path.exists(upload_folder):

            file_name = [file for file in os.listdir(upload_folder)][0]

            article.file_url = upload_helper.upload_s3_file(
                os.path.join(upload_folder, file_name),
                os.path.join('scholar/', str(article.id), 'files/', 'article'),
                {
                    'ContentType': "application/pdf",
                    'ContentDisposition': 'attachment; filename=dataviva-article-' + str(article.id) + '.pdf'
                }
            )

            shutil.rmtree(os.path.split(upload_folder)[0])

        db.session.commit()
        upload_helper.log_operation(module=mod.name, operation='create', user=(g.user.id, g.user.email), objs=[(article.id, article.title)])
        new_article_advise(article, request.url_root)
        message = dictionary()["article_submission"]
        flash(message, 'success')
        return redirect(url_for('scholar.index'))
コード例 #4
0
def insert_record(record):
    arXiv_prefix = '{http://arxiv.org/OAI/arXiv/}'

    article = Article()

    metadata = record.find('metadata').find(arXiv_prefix + "arXiv")
    if metadata is None:
        return 'deleted'

    identifier = metadata.find(arXiv_prefix + "id").text
    exists = db.session.query(Article).filter(
        Article.identifier == identifier).exists()
    if db.session.query(exists).scalar():
        return 'exists'

    submitted = metadata.find(arXiv_prefix + "created").text
    submitted = datetime.strptime(submitted, "%Y-%m-%d")
    title = metadata.find(arXiv_prefix + "title").text
    abstract = metadata.find(arXiv_prefix + "abstract").text.strip()
    article.submitted = submitted
    article.title = title
    article.identifier = identifier
    article.abstract = abstract

    authors = metadata.find(arXiv_prefix + 'authors')
    added_authors = []

    for a in authors.getchildren():
        keyname = a.find(arXiv_prefix + "keyname")
        forenames = a.find(arXiv_prefix + "forenames")
        if keyname is None or forenames is None:
            continue  #bad entry
        fullname = ' '.join((forenames.text, keyname.text))
        # authors added in this record. Fix error from ['Wende Liu', 'Wende Liu']
        if fullname in added_authors:
            continue
        else:
            added_authors.append(fullname)
        search = db.session.query(Author).filter_by(name=fullname)
        if db.session.query(search.exists()).scalar():
            article.authors.append(search.one())
        else:
            article.authors.append(Author(fullname))

    categories = metadata.find(arXiv_prefix + "categories").text
    for c in categories.split():
        search = db.session.query(Category).filter_by(name=c)
        if db.session.query(search.exists()).scalar():
            article.categories.append(search.one())
        else:
            article.categories.append(Category(c))

    db.session.add(article)
    return 'inserted'
コード例 #5
0
ファイル: views.py プロジェクト: jaotta/dataviva-site
def create():
    form = RegistrationForm()
    if form.validate() is False:
        return render_template('scholar/new.html', form=form)
    else:
        article = Article()
        article.title = form.title.data
        article.theme = form.theme.data
        article.abstract = form.abstract.data
        article.postage_date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        article.approval_status = 0

        author_input_list = form.authors.data.split(',')
        for author_input in author_input_list:
            article.authors.append(AuthorScholar(author_input))

        keyword_input_list = form.keywords.data.split(',')
        for keyword_input in keyword_input_list:
            keyword = KeyWord.query.filter_by(name=keyword_input).first()

            if not keyword:
                article.keywords.append(KeyWord(keyword_input))
            else:
                article.keywords.append(keyword)

        db.session.add(article)
        db.session.flush()

        file_path = app.config['UPLOAD_FOLDER'] + request.form.get(
            'csrf_token')

        file_name = [file for file in os.listdir(file_path)][0]

        upload_helper.upload_s3_file(
            os.path.join(file_path, file_name), 'dataviva',
            os.path.join('scholar/article/', str(article.id)), {
                'ContentType':
                "application/pdf",
                'ContentDisposition':
                'attachment; filename=dataviva-article-' + str(article.id) +
                '.pdf'
            })

        shutil.rmtree(file_path)

        db.session.commit()

        message = u'Muito obrigado! Seu estudo foi submetido com sucesso e será analisado pela equipe do DataViva. \
                  Em até 15 dias você receberá um retorno sobre sua publicação no site!'

        flash(message, 'success')
        return redirect(url_for('scholar.index'))
コード例 #6
0
ファイル: views.py プロジェクト: yangtianhang/blogsite
def __save_blog(title, abstract, body, category_id, tag_names, article_id=None):
    tags = []
    for tag_name in tag_names.split(','):
        tag, is_create = Tag.objects.get_or_create(name=tag_name)
        tags.append(tag)
    category = Category.objects.filter(id=category_id)[0]
    if article_id is None:
        article = Article(title=title, abstract=abstract, body=body, category=category)
    else:
        article = Article.objects.filter(id=article_id)[0]
        article.title = title
        article.abstract = abstract
        article.body = body
        article.category = category

    article.save()
    print dir(article)
    article.tag.clear()
    article.tag.add(*tags)

    return article.id
コード例 #7
0
ファイル: faker_data.py プロジェクト: louyanqi/leo
import random
from models import db, User, Article, Tag
from faker import Factory

user = User(username='******', password='******')
db.session.add(user)
db.session.commit()

tag_one = Tag(name='Python')
tag_two = Tag(name='Flask')
tag_three = Tag(name='SQLALchemy')
tag_four = Tag(name='JMilkFan')
tag_list = [tag_one, tag_two, tag_three, tag_four]


fake = Factory.create()


for i in range(100):
        content = fake.text(2000)
        article = Article(title='title' + fake.text(20))
        article.user = user
        article.text = fake.text(2000)
        article.abstract = article.text[:200]
        article.tags = random.sample(tag_list, random.randint(1, 3))
        db.session.add(article)
db.session.commit()