exporting csv and video working
This commit is contained in:
parent
d5bfe8f360
commit
5d27caf107
@ -2,7 +2,7 @@ import sys
|
|||||||
import json
|
import json
|
||||||
import random
|
import random
|
||||||
import base64
|
import base64
|
||||||
from flask import Flask, redirect, url_for, request, session, make_response, jsonify, send_from_directory
|
from flask import Flask, redirect, url_for, request, session, make_response, jsonify, send_file
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from sqlalchemy import Integer, String, Column, Float
|
from sqlalchemy import Integer, String, Column, Float
|
||||||
@ -14,6 +14,7 @@ from sqlalchemy.orm import DeclarativeBase
|
|||||||
from flask_wtf.csrf import CSRFProtect
|
from flask_wtf.csrf import CSRFProtect
|
||||||
import os
|
import os
|
||||||
import csv
|
import csv
|
||||||
|
from zipfile import ZipFile
|
||||||
|
|
||||||
random_order = True
|
random_order = True
|
||||||
# activate environment: cd C:\Users\Jan\Google Drive\Master Stuff\Code\SLAEForms Testing\.venv\Scripts\
|
# activate environment: cd C:\Users\Jan\Google Drive\Master Stuff\Code\SLAEForms Testing\.venv\Scripts\
|
||||||
@ -388,13 +389,50 @@ def update_session():
|
|||||||
|
|
||||||
# Database stuff------------------------------------------------------------------------------
|
# Database stuff------------------------------------------------------------------------------
|
||||||
|
|
||||||
def create_csv(model, filename):
|
def zipdir(path, ziph):
|
||||||
|
# ziph is zipfile handle
|
||||||
|
for root, dirs, files in os.walk(path):
|
||||||
|
for file in files:
|
||||||
|
ziph.write(os.path.join(root, file),
|
||||||
|
os.path.relpath(os.path.join(root, file),
|
||||||
|
os.path.join(path, '..')))
|
||||||
|
|
||||||
|
#create all csvs
|
||||||
|
def create_all_csvs():
|
||||||
|
meta = db.metadata
|
||||||
|
tables = meta.tables.keys()
|
||||||
|
|
||||||
|
for table_name in tables:
|
||||||
|
create_csv(meta.tables[table_name], table_name)
|
||||||
|
|
||||||
|
|
||||||
|
# export CSV
|
||||||
|
@app.route("/export_all_tables")
|
||||||
|
def export_all_tables():
|
||||||
|
create_all_csvs()
|
||||||
|
|
||||||
|
with ZipFile('zip_exports/all_tables.zip', 'w') as zipf: #no compression, need to add zipfile.ZIP_DEFLATED for compression
|
||||||
|
zipdir('exports/', zipf)
|
||||||
|
|
||||||
|
return send_file("zip_exports/all_tables.zip", as_attachment=False, download_name="all_tables.zip")
|
||||||
|
|
||||||
|
# export CSV
|
||||||
|
@app.route("/export_all_videos")
|
||||||
|
def export_all_videos():
|
||||||
|
|
||||||
|
with ZipFile('zip_exports/all_videos.zip', 'w') as zipf: #no compression, need to add zipfile.ZIP_DEFLATED for compression
|
||||||
|
zipdir('uploads/', zipf)
|
||||||
|
|
||||||
|
return send_file("zip_exports/all_videos.zip", as_attachment=False, download_name="all_tables.zip")
|
||||||
|
|
||||||
|
|
||||||
|
def create_csv(table, filename):
|
||||||
filename = filename + ".csv"
|
filename = filename + ".csv"
|
||||||
# Query all data from the table
|
# Query all data from the table
|
||||||
data = db.session.query(model).all()
|
data = db.session.query(table).all()
|
||||||
|
|
||||||
# Get the column names from the model
|
# Get the column names from the model
|
||||||
column_names = [column.name for column in model.__table__.columns]
|
column_names = [column.name for column in table.columns]
|
||||||
|
|
||||||
# Open a CSV file and write data
|
# Open a CSV file and write data
|
||||||
path = os.path.join(EXPORT_FOLDER, filename)
|
path = os.path.join(EXPORT_FOLDER, filename)
|
||||||
@ -406,25 +444,15 @@ def create_csv(model, filename):
|
|||||||
|
|
||||||
|
|
||||||
# export CSV
|
# export CSV
|
||||||
@app.route("/export_csv")
|
@app.route("/export_csv/<table_name>")
|
||||||
def export_csv():
|
def export_csv(table_name):
|
||||||
|
|
||||||
create_csv(User, "usertable")
|
|
||||||
|
|
||||||
"""
|
|
||||||
meta = db.metadata
|
meta = db.metadata
|
||||||
tables = meta.tables.keys()
|
|
||||||
print("tables: ",tables)
|
try:
|
||||||
print("testquerys:")
|
create_csv(meta.tables[table_name], table_name)
|
||||||
qtable = meta.tables["default_demographic_test"]
|
except Exception as e:
|
||||||
query1 = select(qtable).where(qtable.c.alter == 78)
|
return f'Error occurred: {str(e)}', 500
|
||||||
print("Query 1: ", query1)
|
|
||||||
print("Query 1 result: ")
|
|
||||||
result = db.session.execute(query1)
|
|
||||||
print("Columns: ", result.columns)
|
|
||||||
for row in result:
|
|
||||||
print(row)
|
|
||||||
"""
|
|
||||||
|
|
||||||
return redirect("/")
|
return redirect("/")
|
||||||
|
|
||||||
|
@ -5,6 +5,10 @@ https://jamesalvarez.co.uk/blog/how-to-make-responsive-likert-scales-in-css-(lik
|
|||||||
# Rootpage that shows all defined routes
|
# Rootpage that shows all defined routes
|
||||||
https://stackoverflow.com/questions/13317536/get-list-of-all-routes-defined-in-the-flask-app
|
https://stackoverflow.com/questions/13317536/get-list-of-all-routes-defined-in-the-flask-app
|
||||||
|
|
||||||
|
# Zip file of whole directory
|
||||||
|
https://stackoverflow.com/questions/1855095/how-to-create-a-zip-archive-of-a-directory
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Licenses:
|
Licenses:
|
||||||
|
|
||||||
|
4
slaeforms/exports/default_block3_test.csv
Normal file
4
slaeforms/exports/default_block3_test.csv
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
id,user_id,date_created,stimulus_name,likertscale,text_feedback
|
||||||
|
e27365db-7e5a-443b-b6e5-996774baf359,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:01:55.709616,"('video_3', 'video_3')",3,
|
||||||
|
9e880318-bc66-410e-bac8-d70adbf98de6,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:01:59.317487,video_3,2,
|
||||||
|
d147ad99-d41e-48a2-91ee-d5610438e862,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:02:01.661348,video_2,5,
|
|
2
slaeforms/exports/default_demographic_test.csv
Normal file
2
slaeforms/exports/default_demographic_test.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
id,user_id,date_created,stimulus_name,alter,geschlecht,hoerstatus,bevorzugte_kommunikation,gebärdenzeitraum,gebärdensprachkompetenz
|
||||||
|
024e75ae-c5b7-4594-8095-b9f360df9d0c,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:01:47.038602,"('video_3', 'video_3')",27,Männlich,Hörend,Gesprochene Sprache,4.0,1
|
|
4
slaeforms/exports/double_video_test.csv
Normal file
4
slaeforms/exports/double_video_test.csv
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
id,user_id,date_created,stimulus_name,likertscale
|
||||||
|
c317333a-e930-4a3a-93e4-5e213df2d2e6,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:01:28.132611,"('video_1', 'video_1')",1
|
||||||
|
860d97ef-4855-4995-9ff3-88177ab494af,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:01:30.220347,"('video_2', 'video_2')",3
|
||||||
|
b59c4adb-b730-404a-9d0b-b5630e4f445b,662dc5a5-ff08-4270-ad33-444e8dd01514,2024-06-25 12:01:36.894157,"('video_3', 'video_3')",2
|
|
2
slaeforms/exports/user.csv
Normal file
2
slaeforms/exports/user.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
user_id,device_id,question_order,date_created
|
||||||
|
662dc5a5-ff08-4270-ad33-444e8dd01514,50bc84f6-6c55-4277-9651-5c3c98e973f5,"{'Block 0': [('video_1', 'video_1'), ('video_2', 'video_2'), ('video_3', 'video_3')], 'Block 1': ['empty_stimulus'], 'Block 2': ['video_1', 'video_3', 'video_2']}",2024-06-25 12:01:22.516505
|
|
BIN
slaeforms/zip_exports/all_tables.zip
Normal file
BIN
slaeforms/zip_exports/all_tables.zip
Normal file
Binary file not shown.
BIN
slaeforms/zip_exports/all_videos.zip
Normal file
BIN
slaeforms/zip_exports/all_videos.zip
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user