def print_annotations(): app = create_app() ctx = app.app_context() ctx.push() db.init_app(app) all_annotations = TestAnnotations.query.all() for annotation in all_annotations: print(annotation.to_dict()) ctx.pop()
def create_app(app_name='SURVEY_API'): app = Flask(app_name) app.config.from_object('surveyapi.config.BaseConfig') from surveyapi.api import api app.register_blueprint(api, url_prefix="/api") from surveyapi.models import db db.init_app(app) return app
def create_test_groups(): app = create_app() ctx = app.app_context() ctx.push() db.init_app(app) for i in range(1, NUM_OF_TEST_GROUPS + 1): group = TestSurveyGroups(id=i, max_quota=MAX_TEST_QUOTA, remaining_quota=REMAINING_TEST_QUOTA) db.session.add(group) db.session.commit() ctx.pop()
def create_app(app_name='SURVEY_API'): app = Flask(app_name) app.config.from_object('surveyapi.config.BaseConfig') cors = CORS(app, resources={r"/api/*": {"origins": "*"}}) from surveyapi.api import api app.register_blueprint(api, url_prefix="/api") from surveyapi.models import db db.init_app(app) return app
def create_app(app_name='survey_api'): # 创建Flask应用的实例 app = Flask(app_name) # 加载配置信息 app.config.from_object('surveyapi.config') from surveyapi.api import api # 注册蓝图 app.register_blueprint(api, url_prefix="/api") from surveyapi.models import db # 使用db初始化app db.init_app(app) # 返回创建的app实例 return app
def seed_test_annotation_sentences(): app = create_app() ctx = app.app_context() ctx.push() db.init_app(app) with open('sentences_test.csv') as f: reader = csv.DictReader(f) for row in reader: annotation_sentence = TestAnnotationSentences( id=uuid.uuid4().hex, text=row['sentence'], link=row['news_link'], type=row['type'], topic=row['topic'], outlet=row['outlet'], group_id=int(row['group_id'])) db.session.add(annotation_sentence) db.session.commit() ctx.pop()
def create_app(app_name='SURVEY_API'): app = Flask(app_name) app.config.from_object('surveyapi.config.BaseConfig') cors = CORS(app, resources={r"/api/*": { "origins": "*" }}, allow_headers=[ "Content-Type", "Authorization", "Access-Control-Allow-Credentials" ]) from surveyapi.api import api app.register_blueprint(api, url_prefix="/api") from surveyapi.models import db db.init_app(app) return app
def annotations_to_csv(): app = create_app() ctx = app.app_context() ctx.push() db.init_app(app) sql_str = 'select survey_record_id, created_at, label, words, factual, sentence_group_id, annotation_sentence_id from survey_annotations ORDER BY created_at' sql = text(sql_str) fieldnames = [ 'survey_record_id', 'sentence_id', 'sentence_group_id', 'created_at', 'label', 'words', 'factual' ] with open('annotations_mturk_22_07_2020.csv', mode='w') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() for row in db.session.execute(sql): record = dict(row) survey_record_id = record['survey_record_id'] created_at = record['created_at'] label = SimpleChoice.query.get(record['label']).to_dict()['text'] words = record['words'] factual = SimpleChoice.query.get( record['factual']).to_dict()['text'] sentence_group_id = record['sentence_group_id'] sentence_id = record['annotation_sentence_id'] writer.writerow({ 'survey_record_id': survey_record_id, 'sentence_id': sentence_id, 'sentence_group_id': sentence_group_id, 'created_at': created_at, 'label': label, 'words': words, 'factual': factual }) print('csv generated...') ctx.pop()
def all_sentences_to_csv(): app = create_app() ctx = app.app_context() ctx.push() db.init_app(app) fieldnames = ['id', 'group_id', 'text', 'link', 'type', 'topic', 'outlet'] sql_str = 'select id, group_id, text as sentence, link, type, topic, outlet from annotation_sentences' from sqlalchemy import text sql = text(sql_str) with open('all_sentences_with_ids.csv', mode='w') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() for row in db.session.execute(sql): record = dict(row) id = record['id'] group_id = record['group_id'] text = record['sentence'] link = record['link'] type = record['type'] topic = record['topic'] outlet = record['outlet'] writer.writerow({ 'id': id, 'group_id': group_id, 'text': text, 'link': link, 'type': type, 'topic': topic, 'outlet': outlet }) print('csv generated...') ctx.pop()
def create_db_client(): app = create_app() ctx = app.app_context() db.init_app(app) return db, ctx
def detailed_user_record_to_csv(): app = create_app() ctx = app.app_context() ctx.push() db.init_app(app) with open('detailed_user_record_mturk_22_07_2020.csv', mode='w') as csv_file: fieldnames = [ 'id', 'mturk_id', 'age', 'gender', 'education', 'native_english_speaker', 'political_ideology', 'followed_news_outlets', 'news_check_frequency', 'survey_completed' ] writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() ''' First, get the annotation bundle ''' sql_str = 'SELECT survey_record_id, sentence_group_id, COUNT(*) as count FROM survey_annotations GROUP BY survey_record_id ORDER BY count' sql = text(sql_str) # result = [dict(row) for row in db.session.execute(sql)] for row in db.session.execute(sql): survey_record_id = dict(row)['survey_record_id'] annotation_count = dict(row)['count'] ''' Then, get the detailed records for each id ''' selection = "select identifier_key, age, gender, education, political_ideology, native_english_speaker, followed_news_outlets, news_check_frequency, demographics.survey_record_id " from_stm = "from demographics " joins = "inner join ideologies on demographics.survey_record_id = ideologies.survey_record_id inner join survey_record on survey_record.id=ideologies.survey_record_id " whr = "where survey_record.id='" sql_str_2 = selection + from_stm + joins + whr + survey_record_id + "'" sql_2 = text(sql_str_2) result_2 = db.session.execute(sql_2) for row_2 in result_2: record = dict(row_2) print(record) mturk_id = record['identifier_key'] age = record['age'] gender = SimpleChoice.query.get( record['gender']).to_dict()['text'] education = SimpleChoice.query.get( record['education']).to_dict()['text'] native_english_speaker = SimpleChoice.query.get( record['native_english_speaker']).to_dict()['text'] political_ideology = record['political_ideology'] followed_news_outlets = record['followed_news_outlets'].split( ',') converted_news_outlets = [] for outlet in followed_news_outlets: if (outlet.isdigit()): ot = SimpleChoice.query.get(outlet).to_dict()['text'] converted_news_outlets.append(ot) else: converted_news_outlets.append(outlet) news_check_frequency = SimpleChoice.query.get( record['news_check_frequency']).to_dict()['text'] survey_completed = annotation_count >= 10 writer.writerow({ 'id': survey_record_id, 'mturk_id': mturk_id, 'age': age, 'gender': gender, 'education': education, 'native_english_speaker': native_english_speaker, 'political_ideology': political_ideology, 'followed_news_outlets': converted_news_outlets, 'news_check_frequency': news_check_frequency, 'survey_completed': survey_completed }) print('csv generated...') ctx.pop()
from flask import render_template from surveyapi import create_app from surveyapi.models import db from flask_migrate import Migrate # Create the app app = create_app.create_app() # Initialise DB db.init_app(app) # Initialise DB migrations migrate = Migrate(app, db) @app.route('/', defaults={'path': ''}) @app.route('/<path:path>') def catch_all(path): return render_template("index.html")