aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
authorzsloan2022-05-05 20:51:00 +0000
committerzsloan2022-05-10 19:39:27 +0000
commitc2ddbddf772cfbf584ca45a9f1266502e16eb8f9 (patch)
treec0882d2964b3ca0d522f995b8c8302844b2e5547 /wqflask
parent2c4b548e2c329a67828a1b7304fd03d23243c9dc (diff)
downloadgenenetwork2-c2ddbddf772cfbf584ca45a9f1266502e16eb8f9.tar.gz
Add rest of JS/Python code for importing collections from files
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/wqflask/collect.py10
-rw-r--r--wqflask/wqflask/templates/collections/list.html41
2 files changed, 45 insertions, 6 deletions
diff --git a/wqflask/wqflask/collect.py b/wqflask/wqflask/collect.py
index 9ab40a50..9874b4a4 100644
--- a/wqflask/wqflask/collect.py
+++ b/wqflask/wqflask/collect.py
@@ -73,7 +73,6 @@ def collections_add():
uc_id = g.user_session.add_collection(collection_name, set())
collections = g.user_session.user_collections
- # ZS: One of these might be unnecessary
if 'traits' in request.args:
traits = request.args['traits']
return render_template("collections/add.html",
@@ -127,7 +126,6 @@ def collections_new():
def create_new(collection_name):
params = request.args
-
if "hash" in params:
unprocessed_traits = Redis.get(params['hash'])
Redis.delete(params['hash'])
@@ -238,6 +236,14 @@ def import_collection():
if import_file.filename != '':
file_path = os.path.join(TEMPDIR, import_file.filename)
import_file.save(file_path)
+ collection_csv = open(file_path, "r")
+ traits = [row.strip() for row in collection_csv]
+ os.remove(file_path)
+
+ return json.dumps(traits)
+ else:
+ return render_template(
+ "collections/list.html")
@app.route("/collections/view")
def view_collection():
diff --git a/wqflask/wqflask/templates/collections/list.html b/wqflask/wqflask/templates/collections/list.html
index fb3946fb..6e1261d7 100644
--- a/wqflask/wqflask/templates/collections/list.html
+++ b/wqflask/wqflask/templates/collections/list.html
@@ -22,7 +22,7 @@
<input type="text" id="searchbox" class="form-control" style="width: 200px; display: inline;" placeholder="Search This Table For ...">
<input type="text" id="select_top" class="form-control" style="width: 200px; display: inline;" placeholder="Select Top ...">
<br>
- <form id="collections_form" action="/delete" method="post" enctype="multipart/form-data">
+ <form id="collections_form" action="javascript:void(0);" method="post" enctype="multipart/form-data">
<input type="hidden" name="uc_id" id="uc_id" value="" />
<div style="margin-top: 10px; display: inline-block;"><button class="btn btn-default" id="import_collection" data-url="/collections/import"> Import Collection</button> <input type="file" name="import_file" id="import_file" size="20" style="display: inline-block;"></input></div>
</form>
@@ -69,11 +69,12 @@
{% block js %}
<script language="javascript" type="text/javascript" src="{{ url_for('js', filename='js_alt/timeago.min.js') }}"></script>
- <script type="text/javascript" src="/static/new/javascript/search_results.js"></script>
+ <script language="javascript" type="text/javascript" src="{{ url_for('js', filename='js_alt/md5.min.js') }}"></script>
<script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTables/js/jquery.dataTables.min.js') }}"></script>
<script language="javascript" type="text/javascript" src="{{ url_for('js', filename='jszip/jszip.min.js') }}"></script>
<script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTablesExtensions/plugins/sorting/natural.js') }}"></script>
<script language="javascript" type="text/javascript" src="{{ url_for('js', filename='DataTablesExtensions/buttons/js/dataTables.buttons.min.js') }}"></script>
+ <script type="text/javascript" src="/static/new/javascript/search_results.js"></script>
<script>
$('#trait_table').dataTable( {
"drawCallback": function( settings ) {
@@ -118,11 +119,43 @@
return $("#collections_form").submit();
};
+ add_collection = function(trait_data, textStatus, jqXHR) {
+ var traits_hash = md5(trait_data.toString());
+
+ $.ajax({
+ type: "POST",
+ url: "/collections/store_trait_list",
+ data: {
+ hash: traits_hash,
+ traits: trait_data.toString()
+ }
+ });
+
+ return $.colorbox({
+ href: "/collections/add?hash=" + traits_hash
+ });
+ }
+
$("#import_collection").on("click", function() {
- url = $(this).data("url")
- submit_special(url)
+ var fd = new FormData();
+ var files = $('#import_file')[0].files;
+ if(files.length > 0){
+ fd.append('import_file', files[0])
+ $.ajax({
+ type: "POST",
+ url: "/collections/import",
+ data: fd,
+ dataType: "json",
+ contentType: false,
+ processData: false,
+ success: add_collection
+ });
+ } else {
+ alert("No file selected")
+ }
});
+
$("#remove_collections").on("click", function() {
url = $(this).data("url")
collections = []