exporting csv and video working
This commit is contained in:
parent
d5bfe8f360
commit
5d27caf107
@ -2,7 +2,7 @@ import sys
|
||||
import json
|
||||
import random
|
||||
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_sqlalchemy import SQLAlchemy
|
||||
from sqlalchemy import Integer, String, Column, Float
|
||||
@ -14,6 +14,7 @@ from sqlalchemy.orm import DeclarativeBase
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
import os
|
||||
import csv
|
||||
from zipfile import ZipFile
|
||||
|
||||
random_order = True
|
||||
# activate environment: cd C:\Users\Jan\Google Drive\Master Stuff\Code\SLAEForms Testing\.venv\Scripts\
|
||||
@ -388,13 +389,50 @@ def update_session():
|
||||
|
||||
# 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"
|
||||
# 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
|
||||
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
|
||||
path = os.path.join(EXPORT_FOLDER, filename)
|
||||
@ -406,25 +444,15 @@ def create_csv(model, filename):
|
||||
|
||||
|
||||
# export CSV
|
||||
@app.route("/export_csv")
|
||||
def export_csv():
|
||||
@app.route("/export_csv/<table_name>")
|
||||
def export_csv(table_name):
|
||||
|
||||
create_csv(User, "usertable")
|
||||
|
||||
"""
|
||||
meta = db.metadata
|
||||
tables = meta.tables.keys()
|
||||
print("tables: ",tables)
|
||||
print("testquerys:")
|
||||
qtable = meta.tables["default_demographic_test"]
|
||||
query1 = select(qtable).where(qtable.c.alter == 78)
|
||||
print("Query 1: ", query1)
|
||||
print("Query 1 result: ")
|
||||
result = db.session.execute(query1)
|
||||
print("Columns: ", result.columns)
|
||||
for row in result:
|
||||
print(row)
|
||||
"""
|
||||
|
||||
try:
|
||||
create_csv(meta.tables[table_name], table_name)
|
||||
except Exception as e:
|
||||
return f'Error occurred: {str(e)}', 500
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
|
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