Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
The query changes in GeneUtil.pyi (to insert column names using string formatting) are definitely some sort of SQL injection issue, but I'm not sure how else to do it
Also, the table name will be changed later, once the new table has been tested for a while.
|
|
|
|
Once this is confirmed to be working as expected, it will be changed back to GeneList (and the old table's name will be changed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Handle the correlation error such that it gives the user a better
message for the cause of the error, instead of displaying the
exception.
|
|
|
|
|
|
instead of group_id
|
|
|
|
|
|
Just assign the value of the function call directly to the dictionary
key rather than using an intermediate variable.
|
|
|
|
* The ",".join(...) call was processing the data for output to file,
way too early, which would lead to errors down the line, very far
removed from the actual cause of the error.
|
|
|
|
|
|
* wqflask/wqflask/gsearch.py (MAX_SEARCH_RESULTS): Set to 10k.
|
|
* wqflask/wqflask/gsearch.py: Do not import types.
(is_permitted_for_listing): Delete function.
(GSearch.__init__): Do not call is_permitted_for_listing.
|
|
|
|
* wqflask/wqflask/gsearch.py (GSearch.__init__): Curry function passed
to Maybe.apply to construct the display name.
|
|
* wqflask/wqflask/gsearch.py (MAX_SEARCH_RESULTS): New constant.
(GSearch.__init__): Hard-limit the number of search results to
MAX_SEARCH_RESULTS.
|
|
* wqflask/wqflask/gsearch.py (GSearch.__init__): Support prefix search
and range queries.
|
|
* wqflask/scripts/index.py (main): Retrieve year as an integer from
the SQL database.
* wqflask/wqflask/gsearch.py (GSearch.__init__): Convert year from
integer to string.
|
|
* wqflask/scripts/index.py (main): Index fields with prefixes, and add
values for range queries.
|
|
* wqflask/utility/monads.py (MonadicDictCursor): Delete class.
(sql_query_mdict): New function.
* wqflask/scripts/index.py: Import sql_query_mdict instead of
MonadicDictCursor.
(main): Use sql_query_mdict.
|
|
We reopen the SQL database once for each query because it times out if
kept waiting.
* wqflask/scripts/index.py (main): Open xapian database once, but SQL
database once for each query.
|
|
* wqflask/utility/monads.py (MonadicDict, MonadicDictCursor): Remove
empty first line in docstrings.
|
|
* wqflask/utility/monads.py (MonadicDict.__init__): Ignore None values
early instead of converting them to Nothing and then ignoring them.
|
|
* wqflask/utility/monads.py (MonadicDictCursor.fetchone): Return
monadic value.
|
|
* wqflask/scripts/index.py (write_document): New function.
(main): Use write_document.
|
|
* wqflask/wqflask/database.py (xapian_database,
xapian_writable_database): Close xapian database even if error occurs.
|
|
Remove any rows that do not have values since they are not useful to
the computations and only lead to errors.
Remove the conversion to output format here: only convert the values
for output at the point of output, and not earlier.
|
|
|
|
Not all database queries need transactions. If transactions are
required, they should be made a separate context manager and called
only when required.
* wqflask/wqflask/database.py (database_connection): Do not rollback
or commit.
|
|
|
|
|
|
|
|
|
|
|
|
* wqflask/wqflask/gsearch.py: Import Just and Maybe from
pymonad.maybe; curry from pymonad.tools; xapian; MonadicDict from
utility.monads; xapian_database from wqflask.database. Do not import
datetime; database_connection from wqflask.database; base.data_set;
base.trait; db; utility.type_checking; utility.
(is_permitted_for_listing): New function.
(GSearch.__init__): Reimplement using xapian.
* wqflask/wqflask/templates/gsearch_gene.html (block js): Accept
dictionaries with missing keys, replacing them with "N/A".
|