aboutsummaryrefslogtreecommitdiff
path: root/qc_app
AgeCommit message (Collapse)Author
2024-06-14Move the modal to top of page to avoid display issuesFrederick Muriuki Muriithi
According to https://getbootstrap.com/docs/3.3/javascript/#callout-modal-markup-placement the bootstrap modal dialogs should be placed at the top of the page to avoid other components affecting their display and/or functionality.
2024-06-13Fix tests and issues caught by tests.update-templates-for-bootstrapFrederick Muriuki Muriithi
2024-06-13Handle HTTP errors gracefully.Frederick Muriuki Muriithi
2024-06-13Update the help text.Frederick Muriuki Muriithi
2024-06-13Clean up landing pageFrederick Muriuki Muriithi
Leave only data upload type selection on landing page.
2024-06-13Update html templates to use bootstrap for stylingFrederick Muriuki Muriithi
2024-06-12Update templates to use bootstrap classes.Frederick Muriuki Muriithi
2024-06-12Use bundled bootstrap for styling the UIFrederick Muriuki Muriithi
Use bootstrap to eliminate a myriad of UI styling headaches.
2024-06-12Make URI and UI correspond to each other.Frederick Muriuki Muriithi
Formerly, the URI and UI were not corresponding to each other, e.g. the URI /upload/samples/select_species would display the UI for selecting/creating the population. This was very confusing. This commit fixes that. The commit also adds in user input validation to catch input errors.
2024-06-12Bug: Provide missing argument. Remove unused verr variable.Frederick Muriuki Muriithi
2024-06-12Validate input before attempting to use it.Frederick Muriuki Muriithi
2024-06-12Provide an input validation module.Frederick Muriuki Muriithi
2024-05-05Fix indentation.Frederick Muriuki Muriithi
2024-05-05Provide default for InbredSetIdFrederick Muriuki Muriithi
The `InbredSetId` field in the `InbredSet` table in MariaDB is in some instances a required field, so we need to provide a value. This value should be the same as that for the `Id` field, that we do not previously know. This commit provides a value of zero (0) as the default. This value is subsequently updated to be same as that of the `Id` field.
2024-04-17Use `cursor.lastrowid` to get row identifierFrederick Muriuki Muriithi
Use the more robust `cursor.lastrowid` to get the row identifier value, rather than using the `SELECT MAX(Id) …` form. With the `cursor.lastrowid` form, we do not have to remember to add 1 to the value to avoid conflict.
2024-04-16Set InbredSet.InbredSetId value in a more robust way.Frederick Muriuki Muriithi
2024-04-16bug: Set ProbeFreezeId for only new row!Frederick Muriuki Muriithi
Previously the extra ProbeFreezeId column was being updated for *ALL* rows, rather than just the newly inserted row, which is a bug. This commit fixes that.
2024-04-12Provide more relevant error message.Frederick Muriuki Muriithi
2024-04-12Provide defaults for required field.Frederick Muriuki Muriithi
2024-04-12Add missing return.Frederick Muriuki Muriithi
2024-04-12Consistently check for possibly non-existent dataFrederick Muriuki Muriithi
The "geno-dataset", "tissue", "pheno-study" and "pheno-dataset" data "objects" might not exist for a particular uploaded bundle, so we check in a consistent manner to ensure they are provided when needed.
2024-04-12Provide tissue-id details to probeset dataset templatesFrederick Muriuki Muriithi
2024-04-10linting: Fix linting errors.Frederick Muriuki Muriithi
2024-04-10logging: Set up logging in wsgi.pyFrederick Muriuki Muriithi
Make flask use the gunicorn loggers when run under gunicorn, otherwise, use our custom logging. Putting the logging setup inside `create_app(…)` would cause each worker to override the gunicorn loggers, meaning we were not receiving the logs, especially for `debug(…)` calls.
2024-04-10Gracefully handle all `werkzeug.exceptions` errors.Frederick Muriuki Muriithi
2024-04-10Use application logger, not root logger.Frederick Muriuki Muriithi
2024-04-08Add logging for IntegrityErrorFrederick Muriuki Muriithi
2024-04-08Refactor: Make error-checking more robustFrederick Muriuki Muriithi
Rather than maintaining a dictionary of possible error-checking functions, this commit allows passing in the error-checking functions necessary for each point. This makes the code easier to extend by simply defining a new error-checking function and passing it in to the error-checking "driver".
2024-04-08Fix issues caught by integration tests.Frederick Muriuki Muriithi
2024-04-08Fix pylint and mypy errors.Frederick Muriuki Muriithi
2024-04-08bug: UI: Provide better error messaging.Frederick Muriuki Muriithi
2024-04-08bug: Handle IntegrityError: Studies cannot have same name.Frederick Muriuki Muriithi
2024-04-08bug: Check that Genotype dataset name is not duplicated.Frederick Muriuki Muriithi
2024-04-05Handle exceptions creating ProbeSet datasets.Frederick Muriuki Muriithi
2024-04-05Add explicit route for favicon to reduce noise in the logs.Frederick Muriuki Muriithi
2024-03-29Add UI to select/create tissue.Frederick Muriuki Muriithi
2024-03-20Use `url_for` to get icon.Frederick Muriuki Muriithi
2024-03-19Set up application logging.Frederick Muriuki Muriithi
2024-03-19Add debugging statements to track upload of R/qtl2 bundle.Frederick Muriuki Muriithi
2024-03-19Query by `Id` rather than `ProbeFreezeId`Frederick Muriuki Muriithi
Previously `ProbeFreezeId` was set as 1 more than the largest `Id` value found, which might not end up being the same as the incremented Id. This commit, thus, queries by `Id` which is more robust, and does an actual update for the `ProbeFreezeId` column to make it same value as `Id`.
2024-03-15Move defaults settings into qc_app module.Frederick Muriuki Muriithi
2024-03-12Build up correct path to default settingsFrederick Muriuki Muriithi
The assumption has been that the application will be started in the root of the repository, and uses that to source the default settings. It is, however, possible that the application is started in a totally different working directory, which leads to an error during startup. This commit sources the default settings relative to a know file, in this case the module __init__.py file for qc_app module.
2024-03-04Use `Id` rather than `ProbeFreezeId`.Frederick Muriuki Muriithi
2024-03-04Display flash messages correctly.Frederick Muriuki Muriithi
2024-02-28Remove last vestiges of flask's "instance path" configurations.Frederick Muriuki Muriithi
2024-02-27Remove use of instance path in configurations.Frederick Muriuki Muriithi
2024-02-15Refactor checking for user input errors.Frederick Muriuki Muriithi
2024-02-15Verify that the file actually existFrederick Muriuki Muriithi
In case a filename is provided, verify that the file actually exists in the upload directory.
2024-02-15Provide only the file name, not full path.Frederick Muriuki Muriithi
There are 2 reasons to provide only the filename and not the full path: * Security: We do not want to inadvertently expose the paths to the outside world, or allow users to enter file system paths for this system. * The code does not assume a complete path, rather, it builds the path to the upload directory using the filename received from the user.
2024-02-15Provide the log messages to the status page.Frederick Muriuki Muriithi