Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 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".
|
|
* wqflask/scripts/index.py: New file.
|
|
* etc/default_settings.py (XAPIAN_DB_PATH): New variable.
* wqflask/wqflask/database.py: Import xapian.
(xapian_database, xapian_writable_database): New functions.
|
|
* wqflask/wqflask/database.py (sql_uri): Generalize to get_setting.
(database_connection): Call get_setting instead of sql_uri.
|
|
|
|
check_search_term is not relevant to global search. It checks search
terms in the unrelated #or_search and #and_search fields.
* wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js:
Do not call check_search_term on clicking global search button.
|
|
|
|
|
|
Provide the database cursor as an argument to the methods of the two
classes:
* wqflask.base.species.TheSpecies
* wqflask.base.species.Chromosomes
Also update dependent code to initialise and pass the cursor where
these classes are used.
|
|
|