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'))
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'))
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'
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'))
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
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()