aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-07-25 11:07:33 -0500
committerFrederick Muriuki Muriithi2024-07-25 14:34:09 -0500
commit754e8f214b940e05298cb360ed829f5c685d55a5 (patch)
tree62c2c5b601746621f0949b38937ad232f006dee2
parentde9e1b9fe37928b864bea28b408de6c14d04526b (diff)
downloadgn-uploader-754e8f214b940e05298cb360ed829f5c685d55a5.tar.gz
Rename module: qc_app --> uploader
-rw-r--r--README.org2
-rw-r--r--scripts/insert_data.py4
-rw-r--r--scripts/insert_samples.py8
-rw-r--r--scripts/process_rqtl2_bundle.py6
-rw-r--r--scripts/qc.py2
-rw-r--r--scripts/qc_on_rqtl2_bundle.py6
-rw-r--r--scripts/qcapp_wsgi.py4
-rw-r--r--scripts/rqtl2/entry.py6
-rw-r--r--scripts/validate_file.py4
-rw-r--r--scripts/worker.py4
-rw-r--r--tests/conftest.py4
-rw-r--r--tests/qc_app/test_parse.py4
-rw-r--r--uploader/__init__.py (renamed from qc_app/__init__.py)0
-rw-r--r--uploader/base_routes.py (renamed from qc_app/base_routes.py)0
-rw-r--r--uploader/check_connections.py (renamed from qc_app/check_connections.py)2
-rw-r--r--uploader/db/__init__.py (renamed from qc_app/db/__init__.py)0
-rw-r--r--uploader/db/averaging.py (renamed from qc_app/db/averaging.py)0
-rw-r--r--uploader/db/datasets.py (renamed from qc_app/db/datasets.py)0
-rw-r--r--uploader/db/platforms.py (renamed from qc_app/db/platforms.py)0
-rw-r--r--uploader/db/populations.py (renamed from qc_app/db/populations.py)0
-rw-r--r--uploader/db/species.py (renamed from qc_app/db/species.py)0
-rw-r--r--uploader/db/tissues.py (renamed from qc_app/db/tissues.py)0
-rw-r--r--uploader/db_utils.py (renamed from qc_app/db_utils.py)0
-rw-r--r--uploader/dbinsert.py (renamed from qc_app/dbinsert.py)4
-rw-r--r--uploader/default_settings.py14
-rw-r--r--uploader/entry.py (renamed from qc_app/entry.py)4
-rw-r--r--uploader/errors.py (renamed from qc_app/errors.py)0
-rw-r--r--uploader/files.py (renamed from qc_app/files.py)0
-rw-r--r--uploader/input_validation.py (renamed from qc_app/input_validation.py)0
-rw-r--r--uploader/jobs.py (renamed from qc_app/jobs.py)0
-rw-r--r--uploader/parse.py (renamed from qc_app/parse.py)6
-rw-r--r--uploader/samples.py (renamed from qc_app/samples.py)10
-rw-r--r--uploader/static/css/custom-bootstrap.css (renamed from qc_app/static/css/custom-bootstrap.css)0
-rw-r--r--uploader/static/css/styles.css (renamed from qc_app/static/css/styles.css)0
-rw-r--r--uploader/static/css/two-column-with-separator.css (renamed from qc_app/static/css/two-column-with-separator.css)0
-rw-r--r--uploader/static/images/CITGLogo.png (renamed from qc_app/static/images/CITGLogo.png)bin11962 -> 11962 bytes
-rw-r--r--uploader/static/js/select_platform.js (renamed from qc_app/static/js/select_platform.js)0
-rw-r--r--uploader/static/js/upload_progress.js (renamed from qc_app/static/js/upload_progress.js)0
-rw-r--r--uploader/static/js/upload_samples.js (renamed from qc_app/static/js/upload_samples.js)0
-rw-r--r--uploader/static/js/utils.js (renamed from qc_app/static/js/utils.js)0
-rw-r--r--uploader/templates/base.html (renamed from qc_app/templates/base.html)0
-rw-r--r--uploader/templates/cli-output.html (renamed from qc_app/templates/cli-output.html)0
-rw-r--r--uploader/templates/continue_from_create_dataset.html (renamed from qc_app/templates/continue_from_create_dataset.html)0
-rw-r--r--uploader/templates/continue_from_create_study.html (renamed from qc_app/templates/continue_from_create_study.html)0
-rw-r--r--uploader/templates/data_review.html (renamed from qc_app/templates/data_review.html)0
-rw-r--r--uploader/templates/dbupdate_error.html (renamed from qc_app/templates/dbupdate_error.html)0
-rw-r--r--uploader/templates/dbupdate_hidden_fields.html (renamed from qc_app/templates/dbupdate_hidden_fields.html)0
-rw-r--r--uploader/templates/errors_display.html (renamed from qc_app/templates/errors_display.html)0
-rw-r--r--uploader/templates/final_confirmation.html (renamed from qc_app/templates/final_confirmation.html)0
-rw-r--r--uploader/templates/flash_messages.html (renamed from qc_app/templates/flash_messages.html)0
-rw-r--r--uploader/templates/http-error.html (renamed from qc_app/templates/http-error.html)0
-rw-r--r--uploader/templates/index.html (renamed from qc_app/templates/index.html)0
-rw-r--r--uploader/templates/insert_error.html (renamed from qc_app/templates/insert_error.html)0
-rw-r--r--uploader/templates/insert_progress.html (renamed from qc_app/templates/insert_progress.html)0
-rw-r--r--uploader/templates/insert_success.html (renamed from qc_app/templates/insert_success.html)0
-rw-r--r--uploader/templates/job_progress.html (renamed from qc_app/templates/job_progress.html)0
-rw-r--r--uploader/templates/no_such_job.html (renamed from qc_app/templates/no_such_job.html)0
-rw-r--r--uploader/templates/parse_failure.html (renamed from qc_app/templates/parse_failure.html)0
-rw-r--r--uploader/templates/parse_results.html (renamed from qc_app/templates/parse_results.html)0
-rw-r--r--uploader/templates/rqtl2/create-geno-dataset-success.html (renamed from qc_app/templates/rqtl2/create-geno-dataset-success.html)0
-rw-r--r--uploader/templates/rqtl2/create-probe-dataset-success.html (renamed from qc_app/templates/rqtl2/create-probe-dataset-success.html)0
-rw-r--r--uploader/templates/rqtl2/create-probe-study-success.html (renamed from qc_app/templates/rqtl2/create-probe-study-success.html)0
-rw-r--r--uploader/templates/rqtl2/create-tissue-success.html (renamed from qc_app/templates/rqtl2/create-tissue-success.html)0
-rw-r--r--uploader/templates/rqtl2/index.html (renamed from qc_app/templates/rqtl2/index.html)0
-rw-r--r--uploader/templates/rqtl2/no-such-job.html (renamed from qc_app/templates/rqtl2/no-such-job.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-job-error.html (renamed from qc_app/templates/rqtl2/rqtl2-job-error.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-job-results.html (renamed from qc_app/templates/rqtl2/rqtl2-job-results.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-job-status.html (renamed from qc_app/templates/rqtl2/rqtl2-job-status.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-qc-job-error.html (renamed from qc_app/templates/rqtl2/rqtl2-qc-job-error.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-qc-job-results.html (renamed from qc_app/templates/rqtl2/rqtl2-qc-job-results.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-qc-job-status.html (renamed from qc_app/templates/rqtl2/rqtl2-qc-job-status.html)0
-rw-r--r--uploader/templates/rqtl2/rqtl2-qc-job-success.html (renamed from qc_app/templates/rqtl2/rqtl2-qc-job-success.html)0
-rw-r--r--uploader/templates/rqtl2/select-geno-dataset.html (renamed from qc_app/templates/rqtl2/select-geno-dataset.html)0
-rw-r--r--uploader/templates/rqtl2/select-population.html (renamed from qc_app/templates/rqtl2/select-population.html)0
-rw-r--r--uploader/templates/rqtl2/select-probeset-dataset.html (renamed from qc_app/templates/rqtl2/select-probeset-dataset.html)0
-rw-r--r--uploader/templates/rqtl2/select-probeset-study-id.html (renamed from qc_app/templates/rqtl2/select-probeset-study-id.html)0
-rw-r--r--uploader/templates/rqtl2/select-tissue.html (renamed from qc_app/templates/rqtl2/select-tissue.html)0
-rw-r--r--uploader/templates/rqtl2/summary-info.html (renamed from qc_app/templates/rqtl2/summary-info.html)0
-rw-r--r--uploader/templates/rqtl2/upload-rqtl2-bundle-step-01.html (renamed from qc_app/templates/rqtl2/upload-rqtl2-bundle-step-01.html)0
-rw-r--r--uploader/templates/rqtl2/upload-rqtl2-bundle-step-02.html (renamed from qc_app/templates/rqtl2/upload-rqtl2-bundle-step-02.html)0
-rw-r--r--uploader/templates/samples/select-population.html (renamed from qc_app/templates/samples/select-population.html)0
-rw-r--r--uploader/templates/samples/select-species.html (renamed from qc_app/templates/samples/select-species.html)0
-rw-r--r--uploader/templates/samples/upload-failure.html (renamed from qc_app/templates/samples/upload-failure.html)0
-rw-r--r--uploader/templates/samples/upload-progress.html (renamed from qc_app/templates/samples/upload-progress.html)0
-rw-r--r--uploader/templates/samples/upload-samples.html (renamed from qc_app/templates/samples/upload-samples.html)0
-rw-r--r--uploader/templates/samples/upload-success.html (renamed from qc_app/templates/samples/upload-success.html)0
-rw-r--r--uploader/templates/select_dataset.html (renamed from qc_app/templates/select_dataset.html)0
-rw-r--r--uploader/templates/select_platform.html (renamed from qc_app/templates/select_platform.html)0
-rw-r--r--uploader/templates/select_species.html (renamed from qc_app/templates/select_species.html)0
-rw-r--r--uploader/templates/select_study.html (renamed from qc_app/templates/select_study.html)0
-rw-r--r--uploader/templates/stdout_output.html (renamed from qc_app/templates/stdout_output.html)0
-rw-r--r--uploader/templates/unhandled_exception.html (renamed from qc_app/templates/unhandled_exception.html)0
-rw-r--r--uploader/templates/upload_progress_indicator.html (renamed from qc_app/templates/upload_progress_indicator.html)0
-rw-r--r--uploader/templates/worker_failure.html (renamed from qc_app/templates/worker_failure.html)0
-rw-r--r--uploader/upload/__init__.py (renamed from qc_app/upload/__init__.py)0
-rw-r--r--uploader/upload/rqtl2.py (renamed from qc_app/upload/rqtl2.py)20
96 files changed, 64 insertions, 50 deletions
diff --git a/README.org b/README.org
index 6e9c78e..c2b7c3b 100644
--- a/README.org
+++ b/README.org
@@ -208,7 +208,7 @@ flask run
To run the linter over the code base, run:
#+BEGIN_SRC shell
- pylint setup.py tests quality_control qc_app r_qtl scripts
+ pylint setup.py tests quality_control uploader r_qtl scripts
#+END_SRC
To check for correct type usage in the application, run:
diff --git a/scripts/insert_data.py b/scripts/insert_data.py
index 1465348..4b2e5f3 100644
--- a/scripts/insert_data.py
+++ b/scripts/insert_data.py
@@ -14,8 +14,8 @@ from MySQLdb.cursors import DictCursor
from functional_tools import take
from quality_control.file_utils import open_file
-from qc_app.db_utils import database_connection
-from qc_app.check_connections import check_db, check_redis
+from uploader.db_utils import database_connection
+from uploader.check_connections import check_db, check_redis
# Set up logging
stderr_handler = logging.StreamHandler(stream=sys.stderr)
diff --git a/scripts/insert_samples.py b/scripts/insert_samples.py
index 8431462..87f29dc 100644
--- a/scripts/insert_samples.py
+++ b/scripts/insert_samples.py
@@ -7,10 +7,10 @@ import argparse
import MySQLdb as mdb
from redis import Redis
-from qc_app.db_utils import database_connection
-from qc_app.check_connections import check_db, check_redis
-from qc_app.db import species_by_id, population_by_id
-from qc_app.samples import (
+from uploader.db_utils import database_connection
+from uploader.check_connections import check_db, check_redis
+from uploader.db import species_by_id, population_by_id
+from uploader.samples import (
save_samples_data,
read_samples_file,
cross_reference_samples)
diff --git a/scripts/process_rqtl2_bundle.py b/scripts/process_rqtl2_bundle.py
index 4da3936..a7e169d 100644
--- a/scripts/process_rqtl2_bundle.py
+++ b/scripts/process_rqtl2_bundle.py
@@ -17,9 +17,9 @@ import r_qtl.errors as rqe
import r_qtl.r_qtl2 as rqtl2
import r_qtl.r_qtl2_qc as rqc
-from qc_app import jobs
-from qc_app.db_utils import database_connection
-from qc_app.check_connections import check_db, check_redis
+from uploader import jobs
+from uploader.db_utils import database_connection
+from uploader.check_connections import check_db, check_redis
from scripts.cli_parser import init_cli_parser
from scripts.redis_logger import setup_redis_logger
diff --git a/scripts/qc.py b/scripts/qc.py
index e8573a9..6de051f 100644
--- a/scripts/qc.py
+++ b/scripts/qc.py
@@ -11,7 +11,7 @@ from quality_control.utils import make_progress_calculator
from quality_control.errors import InvalidValue, DuplicateHeading
from quality_control.parsing import FileType, strain_names, collect_errors
-from qc_app.db_utils import database_connection
+from uploader.db_utils import database_connection
from .cli_parser import init_cli_parser
diff --git a/scripts/qc_on_rqtl2_bundle.py b/scripts/qc_on_rqtl2_bundle.py
index 40809b7..150fbce 100644
--- a/scripts/qc_on_rqtl2_bundle.py
+++ b/scripts/qc_on_rqtl2_bundle.py
@@ -16,9 +16,9 @@ from redis import Redis
from quality_control.errors import InvalidValue
from quality_control.checks import decimal_points_error
-from qc_app import jobs
-from qc_app.db_utils import database_connection
-from qc_app.check_connections import check_db, check_redis
+from uploader import jobs
+from uploader.db_utils import database_connection
+from uploader.check_connections import check_db, check_redis
from r_qtl import errors as rqe
from r_qtl import r_qtl2 as rqtl2
diff --git a/scripts/qcapp_wsgi.py b/scripts/qcapp_wsgi.py
index 349c006..fe77031 100644
--- a/scripts/qcapp_wsgi.py
+++ b/scripts/qcapp_wsgi.py
@@ -5,8 +5,8 @@ from logging import getLogger, StreamHandler
from flask import Flask
-from qc_app import create_app
-from qc_app.check_connections import check_db, check_redis
+from uploader import create_app
+from uploader.check_connections import check_db, check_redis
def setup_logging(appl: Flask) -> Flask:
"""Setup appropriate logging paradigm depending on environment."""
diff --git a/scripts/rqtl2/entry.py b/scripts/rqtl2/entry.py
index 93fc130..b7fb68e 100644
--- a/scripts/rqtl2/entry.py
+++ b/scripts/rqtl2/entry.py
@@ -6,9 +6,9 @@ from argparse import Namespace
from redis import Redis
from MySQLdb import Connection
-from qc_app import jobs
-from qc_app.db_utils import database_connection
-from qc_app.check_connections import check_db, check_redis
+from uploader import jobs
+from uploader.db_utils import database_connection
+from uploader.check_connections import check_db, check_redis
from scripts.redis_logger import setup_redis_logger
diff --git a/scripts/validate_file.py b/scripts/validate_file.py
index 0028795..a40d7e7 100644
--- a/scripts/validate_file.py
+++ b/scripts/validate_file.py
@@ -12,8 +12,8 @@ from redis.exceptions import ConnectionError # pylint: disable=[redefined-builti
from quality_control.utils import make_progress_calculator
from quality_control.parsing import FileType, strain_names, collect_errors
-from qc_app import jobs
-from qc_app.db_utils import database_connection
+from uploader import jobs
+from uploader.db_utils import database_connection
from .cli_parser import init_cli_parser
from .qc import add_file_validation_arguments
diff --git a/scripts/worker.py b/scripts/worker.py
index 0eb9ea5..91b0332 100644
--- a/scripts/worker.py
+++ b/scripts/worker.py
@@ -11,8 +11,8 @@ from tempfile import TemporaryDirectory
from redis import Redis
-from qc_app import jobs
-from qc_app.check_connections import check_redis
+from uploader import jobs
+from uploader.check_connections import check_redis
def parse_args():
"Parse the command-line arguments"
diff --git a/tests/conftest.py b/tests/conftest.py
index a39acf0..9012221 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -11,8 +11,8 @@ from redis import Redis
from functional_tools import take
-from qc_app import jobs, create_app
-from qc_app.jobs import JOBS_PREFIX
+from uploader import jobs, create_app
+from uploader.jobs import JOBS_PREFIX
from quality_control.errors import InvalidValue, DuplicateHeading
diff --git a/tests/qc_app/test_parse.py b/tests/qc_app/test_parse.py
index 3915a4d..076c47c 100644
--- a/tests/qc_app/test_parse.py
+++ b/tests/qc_app/test_parse.py
@@ -4,7 +4,7 @@ import sys
import redis
import pytest
-from qc_app.jobs import job, jobsnamespace
+from uploader.jobs import job, jobsnamespace
from tests.conftest import uploadable_file_object
@@ -24,7 +24,7 @@ def test_parse_with_existing_uploaded_file(#pylint: disable=[too-many-arguments]
1. the system redirects to the job/parse status page
2. the job is placed on redis for processing
"""
- monkeypatch.setattr("qc_app.jobs.uuid4", lambda : job_id)
+ monkeypatch.setattr("uploader.jobs.uuid4", lambda : job_id)
# Upload a file
speciesid = 1
filename = "no_data_errors.tsv"
diff --git a/qc_app/__init__.py b/uploader/__init__.py
index 3ee8aa0..3ee8aa0 100644
--- a/qc_app/__init__.py
+++ b/uploader/__init__.py
diff --git a/qc_app/base_routes.py b/uploader/base_routes.py
index 9daf439..9daf439 100644
--- a/qc_app/base_routes.py
+++ b/uploader/base_routes.py
diff --git a/qc_app/check_connections.py b/uploader/check_connections.py
index ceccc32..2561e55 100644
--- a/qc_app/check_connections.py
+++ b/uploader/check_connections.py
@@ -5,7 +5,7 @@ import traceback
import redis
import MySQLdb
-from qc_app.db_utils import database_connection
+from uploader.db_utils import database_connection
def check_redis(uri: str):
"Check the redis connection"
diff --git a/qc_app/db/__init__.py b/uploader/db/__init__.py
index 36e93e8..36e93e8 100644
--- a/qc_app/db/__init__.py
+++ b/uploader/db/__init__.py
diff --git a/qc_app/db/averaging.py b/uploader/db/averaging.py
index 62bbe67..62bbe67 100644
--- a/qc_app/db/averaging.py
+++ b/uploader/db/averaging.py
diff --git a/qc_app/db/datasets.py b/uploader/db/datasets.py
index 767ec41..767ec41 100644
--- a/qc_app/db/datasets.py
+++ b/uploader/db/datasets.py
diff --git a/qc_app/db/platforms.py b/uploader/db/platforms.py
index cb527a7..cb527a7 100644
--- a/qc_app/db/platforms.py
+++ b/uploader/db/platforms.py
diff --git a/qc_app/db/populations.py b/uploader/db/populations.py
index 4485e52..4485e52 100644
--- a/qc_app/db/populations.py
+++ b/uploader/db/populations.py
diff --git a/qc_app/db/species.py b/uploader/db/species.py
index 653e59b..653e59b 100644
--- a/qc_app/db/species.py
+++ b/uploader/db/species.py
diff --git a/qc_app/db/tissues.py b/uploader/db/tissues.py
index 9fe7bab..9fe7bab 100644
--- a/qc_app/db/tissues.py
+++ b/uploader/db/tissues.py
diff --git a/qc_app/db_utils.py b/uploader/db_utils.py
index ef26398..ef26398 100644
--- a/qc_app/db_utils.py
+++ b/uploader/db_utils.py
diff --git a/qc_app/dbinsert.py b/uploader/dbinsert.py
index ef08423..88d16ef 100644
--- a/qc_app/dbinsert.py
+++ b/uploader/dbinsert.py
@@ -11,8 +11,8 @@ from flask import (
flash, request, url_for, Blueprint, redirect, render_template,
current_app as app)
-from qc_app.db_utils import with_db_connection, database_connection
-from qc_app.db import species, species_by_id, populations_by_species
+from uploader.db_utils import with_db_connection, database_connection
+from uploader.db import species, species_by_id, populations_by_species
from . import jobs
diff --git a/uploader/default_settings.py b/uploader/default_settings.py
new file mode 100644
index 0000000..7a9da0f
--- /dev/null
+++ b/uploader/default_settings.py
@@ -0,0 +1,14 @@
+"""
+The default configuration file. The values here should be overridden in the
+actual configuration file used for the production and staging systems.
+"""
+
+import os
+
+LOG_LEVEL = os.getenv("LOG_LEVEL", "WARNING")
+SECRET_KEY = b"<Please! Please! Please! Change This!>"
+UPLOAD_FOLDER = "/tmp/qc_app_files"
+REDIS_URL = "redis://"
+JOBS_TTL_SECONDS = 1209600 # 14 days
+GNQC_REDIS_PREFIX="GNQC"
+SQL_URI = ""
diff --git a/qc_app/entry.py b/uploader/entry.py
index f2db878..4a02f1e 100644
--- a/qc_app/entry.py
+++ b/uploader/entry.py
@@ -15,8 +15,8 @@ from flask import (
current_app as app,
send_from_directory)
-from qc_app.db import species
-from qc_app.db_utils import with_db_connection
+from uploader.db import species
+from uploader.db_utils import with_db_connection
entrybp = Blueprint("entry", __name__)
diff --git a/qc_app/errors.py b/uploader/errors.py
index 3e7c893..3e7c893 100644
--- a/qc_app/errors.py
+++ b/uploader/errors.py
diff --git a/qc_app/files.py b/uploader/files.py
index b163612..b163612 100644
--- a/qc_app/files.py
+++ b/uploader/files.py
diff --git a/qc_app/input_validation.py b/uploader/input_validation.py
index 9abe742..9abe742 100644
--- a/qc_app/input_validation.py
+++ b/uploader/input_validation.py
diff --git a/qc_app/jobs.py b/uploader/jobs.py
index 21889da..21889da 100644
--- a/qc_app/jobs.py
+++ b/uploader/jobs.py
diff --git a/qc_app/parse.py b/uploader/parse.py
index d20f6f0..865dae2 100644
--- a/qc_app/parse.py
+++ b/uploader/parse.py
@@ -8,9 +8,9 @@ from flask import current_app as app
from quality_control.errors import InvalidValue, DuplicateHeading
-from qc_app import jobs
-from qc_app.dbinsert import species_by_id
-from qc_app.db_utils import with_db_connection
+from uploader import jobs
+from uploader.dbinsert import species_by_id
+from uploader.db_utils import with_db_connection
parsebp = Blueprint("parse", __name__)
diff --git a/qc_app/samples.py b/uploader/samples.py
index 804f262..9c95770 100644
--- a/qc_app/samples.py
+++ b/uploader/samples.py
@@ -20,14 +20,14 @@ from flask import (
from functional_tools import take
-from qc_app import jobs
-from qc_app.files import save_file
-from qc_app.input_validation import is_integer_input
-from qc_app.db_utils import (
+from uploader import jobs
+from uploader.files import save_file
+from uploader.input_validation import is_integer_input
+from uploader.db_utils import (
with_db_connection,
database_connection,
with_redis_connection)
-from qc_app.db import (
+from uploader.db import (
species_by_id,
save_population,
population_by_id,
diff --git a/qc_app/static/css/custom-bootstrap.css b/uploader/static/css/custom-bootstrap.css
index 67f1199..67f1199 100644
--- a/qc_app/static/css/custom-bootstrap.css
+++ b/uploader/static/css/custom-bootstrap.css
diff --git a/qc_app/static/css/styles.css b/uploader/static/css/styles.css
index a88c229..a88c229 100644
--- a/qc_app/static/css/styles.css
+++ b/uploader/static/css/styles.css
diff --git a/qc_app/static/css/two-column-with-separator.css b/uploader/static/css/two-column-with-separator.css
index b6efd46..b6efd46 100644
--- a/qc_app/static/css/two-column-with-separator.css
+++ b/uploader/static/css/two-column-with-separator.css
diff --git a/qc_app/static/images/CITGLogo.png b/uploader/static/images/CITGLogo.png
index ae99fed..ae99fed 100644
--- a/qc_app/static/images/CITGLogo.png
+++ b/uploader/static/images/CITGLogo.png
Binary files differ
diff --git a/qc_app/static/js/select_platform.js b/uploader/static/js/select_platform.js
index 4fdd865..4fdd865 100644
--- a/qc_app/static/js/select_platform.js
+++ b/uploader/static/js/select_platform.js
diff --git a/qc_app/static/js/upload_progress.js b/uploader/static/js/upload_progress.js
index 9638b36..9638b36 100644
--- a/qc_app/static/js/upload_progress.js
+++ b/uploader/static/js/upload_progress.js
diff --git a/qc_app/static/js/upload_samples.js b/uploader/static/js/upload_samples.js
index aed536f..aed536f 100644
--- a/qc_app/static/js/upload_samples.js
+++ b/uploader/static/js/upload_samples.js
diff --git a/qc_app/static/js/utils.js b/uploader/static/js/utils.js
index 045dd47..045dd47 100644
--- a/qc_app/static/js/utils.js
+++ b/uploader/static/js/utils.js
diff --git a/qc_app/templates/base.html b/uploader/templates/base.html
index eb5e6b7..eb5e6b7 100644
--- a/qc_app/templates/base.html
+++ b/uploader/templates/base.html
diff --git a/qc_app/templates/cli-output.html b/uploader/templates/cli-output.html
index 33fb73b..33fb73b 100644
--- a/qc_app/templates/cli-output.html
+++ b/uploader/templates/cli-output.html
diff --git a/qc_app/templates/continue_from_create_dataset.html b/uploader/templates/continue_from_create_dataset.html
index 03bb49c..03bb49c 100644
--- a/qc_app/templates/continue_from_create_dataset.html
+++ b/uploader/templates/continue_from_create_dataset.html
diff --git a/qc_app/templates/continue_from_create_study.html b/uploader/templates/continue_from_create_study.html
index 34e6e5e..34e6e5e 100644
--- a/qc_app/templates/continue_from_create_study.html
+++ b/uploader/templates/continue_from_create_study.html
diff --git a/qc_app/templates/data_review.html b/uploader/templates/data_review.html
index b7528fd..b7528fd 100644
--- a/qc_app/templates/data_review.html
+++ b/uploader/templates/data_review.html
diff --git a/qc_app/templates/dbupdate_error.html b/uploader/templates/dbupdate_error.html
index e1359d2..e1359d2 100644
--- a/qc_app/templates/dbupdate_error.html
+++ b/uploader/templates/dbupdate_error.html
diff --git a/qc_app/templates/dbupdate_hidden_fields.html b/uploader/templates/dbupdate_hidden_fields.html
index ccbc299..ccbc299 100644
--- a/qc_app/templates/dbupdate_hidden_fields.html
+++ b/uploader/templates/dbupdate_hidden_fields.html
diff --git a/qc_app/templates/errors_display.html b/uploader/templates/errors_display.html
index 715cfcf..715cfcf 100644
--- a/qc_app/templates/errors_display.html
+++ b/uploader/templates/errors_display.html
diff --git a/qc_app/templates/final_confirmation.html b/uploader/templates/final_confirmation.html
index 0727fc8..0727fc8 100644
--- a/qc_app/templates/final_confirmation.html
+++ b/uploader/templates/final_confirmation.html
diff --git a/qc_app/templates/flash_messages.html b/uploader/templates/flash_messages.html
index b7af178..b7af178 100644
--- a/qc_app/templates/flash_messages.html
+++ b/uploader/templates/flash_messages.html
diff --git a/qc_app/templates/http-error.html b/uploader/templates/http-error.html
index 374fb86..374fb86 100644
--- a/qc_app/templates/http-error.html
+++ b/uploader/templates/http-error.html
diff --git a/qc_app/templates/index.html b/uploader/templates/index.html
index 89d2ae9..89d2ae9 100644
--- a/qc_app/templates/index.html
+++ b/uploader/templates/index.html
diff --git a/qc_app/templates/insert_error.html b/uploader/templates/insert_error.html
index 5301288..5301288 100644
--- a/qc_app/templates/insert_error.html
+++ b/uploader/templates/insert_error.html
diff --git a/qc_app/templates/insert_progress.html b/uploader/templates/insert_progress.html
index 52177d6..52177d6 100644
--- a/qc_app/templates/insert_progress.html
+++ b/uploader/templates/insert_progress.html
diff --git a/qc_app/templates/insert_success.html b/uploader/templates/insert_success.html
index 7e1fa8d..7e1fa8d 100644
--- a/qc_app/templates/insert_success.html
+++ b/uploader/templates/insert_success.html
diff --git a/qc_app/templates/job_progress.html b/uploader/templates/job_progress.html
index 1af0763..1af0763 100644
--- a/qc_app/templates/job_progress.html
+++ b/uploader/templates/job_progress.html
diff --git a/qc_app/templates/no_such_job.html b/uploader/templates/no_such_job.html
index 42a2d48..42a2d48 100644
--- a/qc_app/templates/no_such_job.html
+++ b/uploader/templates/no_such_job.html
diff --git a/qc_app/templates/parse_failure.html b/uploader/templates/parse_failure.html
index 31f6be8..31f6be8 100644
--- a/qc_app/templates/parse_failure.html
+++ b/uploader/templates/parse_failure.html
diff --git a/qc_app/templates/parse_results.html b/uploader/templates/parse_results.html
index e2bf7f0..e2bf7f0 100644
--- a/qc_app/templates/parse_results.html
+++ b/uploader/templates/parse_results.html
diff --git a/qc_app/templates/rqtl2/create-geno-dataset-success.html b/uploader/templates/rqtl2/create-geno-dataset-success.html
index 1b50221..1b50221 100644
--- a/qc_app/templates/rqtl2/create-geno-dataset-success.html
+++ b/uploader/templates/rqtl2/create-geno-dataset-success.html
diff --git a/qc_app/templates/rqtl2/create-probe-dataset-success.html b/uploader/templates/rqtl2/create-probe-dataset-success.html
index 790d174..790d174 100644
--- a/qc_app/templates/rqtl2/create-probe-dataset-success.html
+++ b/uploader/templates/rqtl2/create-probe-dataset-success.html
diff --git a/qc_app/templates/rqtl2/create-probe-study-success.html b/uploader/templates/rqtl2/create-probe-study-success.html
index d0ee508..d0ee508 100644
--- a/qc_app/templates/rqtl2/create-probe-study-success.html
+++ b/uploader/templates/rqtl2/create-probe-study-success.html
diff --git a/qc_app/templates/rqtl2/create-tissue-success.html b/uploader/templates/rqtl2/create-tissue-success.html
index 5f2c5a0..5f2c5a0 100644
--- a/qc_app/templates/rqtl2/create-tissue-success.html
+++ b/uploader/templates/rqtl2/create-tissue-success.html
diff --git a/qc_app/templates/rqtl2/index.html b/uploader/templates/rqtl2/index.html
index f3329c2..f3329c2 100644
--- a/qc_app/templates/rqtl2/index.html
+++ b/uploader/templates/rqtl2/index.html
diff --git a/qc_app/templates/rqtl2/no-such-job.html b/uploader/templates/rqtl2/no-such-job.html
index b17004f..b17004f 100644
--- a/qc_app/templates/rqtl2/no-such-job.html
+++ b/uploader/templates/rqtl2/no-such-job.html
diff --git a/qc_app/templates/rqtl2/rqtl2-job-error.html b/uploader/templates/rqtl2/rqtl2-job-error.html
index 9817518..9817518 100644
--- a/qc_app/templates/rqtl2/rqtl2-job-error.html
+++ b/uploader/templates/rqtl2/rqtl2-job-error.html
diff --git a/qc_app/templates/rqtl2/rqtl2-job-results.html b/uploader/templates/rqtl2/rqtl2-job-results.html
index 4ecd415..4ecd415 100644
--- a/qc_app/templates/rqtl2/rqtl2-job-results.html
+++ b/uploader/templates/rqtl2/rqtl2-job-results.html
diff --git a/qc_app/templates/rqtl2/rqtl2-job-status.html b/uploader/templates/rqtl2/rqtl2-job-status.html
index e896f88..e896f88 100644
--- a/qc_app/templates/rqtl2/rqtl2-job-status.html
+++ b/uploader/templates/rqtl2/rqtl2-job-status.html
diff --git a/qc_app/templates/rqtl2/rqtl2-qc-job-error.html b/uploader/templates/rqtl2/rqtl2-qc-job-error.html
index 90e8887..90e8887 100644
--- a/qc_app/templates/rqtl2/rqtl2-qc-job-error.html
+++ b/uploader/templates/rqtl2/rqtl2-qc-job-error.html
diff --git a/qc_app/templates/rqtl2/rqtl2-qc-job-results.html b/uploader/templates/rqtl2/rqtl2-qc-job-results.html
index 59bc8cd..59bc8cd 100644
--- a/qc_app/templates/rqtl2/rqtl2-qc-job-results.html
+++ b/uploader/templates/rqtl2/rqtl2-qc-job-results.html
diff --git a/qc_app/templates/rqtl2/rqtl2-qc-job-status.html b/uploader/templates/rqtl2/rqtl2-qc-job-status.html
index f4a6266..f4a6266 100644
--- a/qc_app/templates/rqtl2/rqtl2-qc-job-status.html
+++ b/uploader/templates/rqtl2/rqtl2-qc-job-status.html
diff --git a/qc_app/templates/rqtl2/rqtl2-qc-job-success.html b/uploader/templates/rqtl2/rqtl2-qc-job-success.html
index 2861a04..2861a04 100644
--- a/qc_app/templates/rqtl2/rqtl2-qc-job-success.html
+++ b/uploader/templates/rqtl2/rqtl2-qc-job-success.html
diff --git a/qc_app/templates/rqtl2/select-geno-dataset.html b/uploader/templates/rqtl2/select-geno-dataset.html
index 873f9c3..873f9c3 100644
--- a/qc_app/templates/rqtl2/select-geno-dataset.html
+++ b/uploader/templates/rqtl2/select-geno-dataset.html
diff --git a/qc_app/templates/rqtl2/select-population.html b/uploader/templates/rqtl2/select-population.html
index 37731f0..37731f0 100644
--- a/qc_app/templates/rqtl2/select-population.html
+++ b/uploader/templates/rqtl2/select-population.html
diff --git a/qc_app/templates/rqtl2/select-probeset-dataset.html b/uploader/templates/rqtl2/select-probeset-dataset.html
index 26f52ed..26f52ed 100644
--- a/qc_app/templates/rqtl2/select-probeset-dataset.html
+++ b/uploader/templates/rqtl2/select-probeset-dataset.html
diff --git a/qc_app/templates/rqtl2/select-probeset-study-id.html b/uploader/templates/rqtl2/select-probeset-study-id.html
index b9bf52e..b9bf52e 100644
--- a/qc_app/templates/rqtl2/select-probeset-study-id.html
+++ b/uploader/templates/rqtl2/select-probeset-study-id.html
diff --git a/qc_app/templates/rqtl2/select-tissue.html b/uploader/templates/rqtl2/select-tissue.html
index 34e1758..34e1758 100644
--- a/qc_app/templates/rqtl2/select-tissue.html
+++ b/uploader/templates/rqtl2/select-tissue.html
diff --git a/qc_app/templates/rqtl2/summary-info.html b/uploader/templates/rqtl2/summary-info.html
index 1be87fa..1be87fa 100644
--- a/qc_app/templates/rqtl2/summary-info.html
+++ b/uploader/templates/rqtl2/summary-info.html
diff --git a/qc_app/templates/rqtl2/upload-rqtl2-bundle-step-01.html b/uploader/templates/rqtl2/upload-rqtl2-bundle-step-01.html
index 07c240f..07c240f 100644
--- a/qc_app/templates/rqtl2/upload-rqtl2-bundle-step-01.html
+++ b/uploader/templates/rqtl2/upload-rqtl2-bundle-step-01.html
diff --git a/qc_app/templates/rqtl2/upload-rqtl2-bundle-step-02.html b/uploader/templates/rqtl2/upload-rqtl2-bundle-step-02.html
index 93b1dc9..93b1dc9 100644
--- a/qc_app/templates/rqtl2/upload-rqtl2-bundle-step-02.html
+++ b/uploader/templates/rqtl2/upload-rqtl2-bundle-step-02.html
diff --git a/qc_app/templates/samples/select-population.html b/uploader/templates/samples/select-population.html
index da19ddc..da19ddc 100644
--- a/qc_app/templates/samples/select-population.html
+++ b/uploader/templates/samples/select-population.html
diff --git a/qc_app/templates/samples/select-species.html b/uploader/templates/samples/select-species.html
index edadc61..edadc61 100644
--- a/qc_app/templates/samples/select-species.html
+++ b/uploader/templates/samples/select-species.html
diff --git a/qc_app/templates/samples/upload-failure.html b/uploader/templates/samples/upload-failure.html
index 09e2ecf..09e2ecf 100644
--- a/qc_app/templates/samples/upload-failure.html
+++ b/uploader/templates/samples/upload-failure.html
diff --git a/qc_app/templates/samples/upload-progress.html b/uploader/templates/samples/upload-progress.html
index 7bb02be..7bb02be 100644
--- a/qc_app/templates/samples/upload-progress.html
+++ b/uploader/templates/samples/upload-progress.html
diff --git a/qc_app/templates/samples/upload-samples.html b/uploader/templates/samples/upload-samples.html
index e62de57..e62de57 100644
--- a/qc_app/templates/samples/upload-samples.html
+++ b/uploader/templates/samples/upload-samples.html
diff --git a/qc_app/templates/samples/upload-success.html b/uploader/templates/samples/upload-success.html
index cb745c3..cb745c3 100644
--- a/qc_app/templates/samples/upload-success.html
+++ b/uploader/templates/samples/upload-success.html
diff --git a/qc_app/templates/select_dataset.html b/uploader/templates/select_dataset.html
index 2f07de8..2f07de8 100644
--- a/qc_app/templates/select_dataset.html
+++ b/uploader/templates/select_dataset.html
diff --git a/qc_app/templates/select_platform.html b/uploader/templates/select_platform.html
index d9bc68f..d9bc68f 100644
--- a/qc_app/templates/select_platform.html
+++ b/uploader/templates/select_platform.html
diff --git a/qc_app/templates/select_species.html b/uploader/templates/select_species.html
index 3b1a8a9..3b1a8a9 100644
--- a/qc_app/templates/select_species.html
+++ b/uploader/templates/select_species.html
diff --git a/qc_app/templates/select_study.html b/uploader/templates/select_study.html
index 648ad4c..648ad4c 100644
--- a/qc_app/templates/select_study.html
+++ b/uploader/templates/select_study.html
diff --git a/qc_app/templates/stdout_output.html b/uploader/templates/stdout_output.html
index 85345a9..85345a9 100644
--- a/qc_app/templates/stdout_output.html
+++ b/uploader/templates/stdout_output.html
diff --git a/qc_app/templates/unhandled_exception.html b/uploader/templates/unhandled_exception.html
index 6e6a051..6e6a051 100644
--- a/qc_app/templates/unhandled_exception.html
+++ b/uploader/templates/unhandled_exception.html
diff --git a/qc_app/templates/upload_progress_indicator.html b/uploader/templates/upload_progress_indicator.html
index e274e83..e274e83 100644
--- a/qc_app/templates/upload_progress_indicator.html
+++ b/uploader/templates/upload_progress_indicator.html
diff --git a/qc_app/templates/worker_failure.html b/uploader/templates/worker_failure.html
index b65b140..b65b140 100644
--- a/qc_app/templates/worker_failure.html
+++ b/uploader/templates/worker_failure.html
diff --git a/qc_app/upload/__init__.py b/uploader/upload/__init__.py
index 5f120d4..5f120d4 100644
--- a/qc_app/upload/__init__.py
+++ b/uploader/upload/__init__.py
diff --git a/qc_app/upload/rqtl2.py b/uploader/upload/rqtl2.py
index 51d8321..6aed1f7 100644
--- a/qc_app/upload/rqtl2.py
+++ b/uploader/upload/rqtl2.py
@@ -27,20 +27,20 @@ from flask import (
from r_qtl import r_qtl2
-from qc_app import jobs
-from qc_app.files import save_file, fullpath
-from qc_app.dbinsert import species as all_species
-from qc_app.db_utils import with_db_connection, database_connection
-
-from qc_app.db.platforms import platform_by_id, platforms_by_species
-from qc_app.db.averaging import averaging_methods, averaging_method_by_id
-from qc_app.db.tissues import all_tissues, tissue_by_id, create_new_tissue
-from qc_app.db import (
+from uploader import jobs
+from uploader.files import save_file, fullpath
+from uploader.dbinsert import species as all_species
+from uploader.db_utils import with_db_connection, database_connection
+
+from uploader.db.platforms import platform_by_id, platforms_by_species
+from uploader.db.averaging import averaging_methods, averaging_method_by_id
+from uploader.db.tissues import all_tissues, tissue_by_id, create_new_tissue
+from uploader.db import (
species_by_id,
save_population,
populations_by_species,
population_by_species_and_id,)
-from qc_app.db.datasets import (
+from uploader.db.datasets import (
geno_dataset_by_id,
geno_datasets_by_species_and_population,