Skip to content

Commit

Permalink
Merge branch 'dev' of github.com:biocore/qiita
Browse files Browse the repository at this point in the history
  • Loading branch information
antgonza committed Jul 15, 2024
2 parents 13eafdf + dac87a7 commit 440a322
Show file tree
Hide file tree
Showing 202 changed files with 11,548 additions and 9,096 deletions.
31 changes: 28 additions & 3 deletions .github/workflows/qiita-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,6 @@ jobs:
echo "5. Setting up qiita"
conda activate qiita
# adapt environment_script for private qiita plugins from travis to github actions.
sed 's#export PATH="/home/travis/miniconda3/bin:$PATH"; source #source /home/runner/.profile; conda #' -i qiita_db/support_files/patches/54.sql
qiita-env make --no-load-ontologies
qiita-test-install
qiita plugins update
Expand Down Expand Up @@ -203,7 +201,34 @@ jobs:
QIITA_PID=`cat /tmp/supervisord.pid`
kill $QIITA_PID
sleep 10
if [[ "$COVER_PACKAGE" != *"qiita_db"* ]]; then test_data_studies/commands.sh; all-qiita-cron-job; fi
# due to qiita_db tests being more complex and taking longer than
# the other tests we will only add some extra tests to the run that is
# not testing qiita_db
if [[ "$COVER_PACKAGE" != *"qiita_db"* ]]; then
# 1. testing that we can add some "dummy" studies to the db via
# CLI
test_data_studies/commands.sh;
# 2. making sure that all qiita cron jobs complete as expected
all-qiita-cron-job;
# 3. making sure than a production system has the expected rows
# in all our tables; steps: a. drop test db, b. change $QIITA_CONFIG_FP
# c. create new production system, c. count rows in the db.
qiita-env drop;
cp $QIITA_CONFIG_FP ${QIITA_CONFIG_FP}.bk
sed 's/TEST_ENVIRONMENT = TRUE/TEST_ENVIRONMENT = FALSE/g' ${QIITA_CONFIG_FP}.bk > $QIITA_CONFIG_FP;
qiita-env make --no-load-ontologies;
export PGPASSWORD=postgres
pgport=${{ job.services.postgres.ports[5432] }}
row_counts=`psql -h localhost -U postgres -d qiita_test -p $pgport -c "SELECT SUM(c.reltuples) FROM pg_class c JOIN pg_namespace n on n.oid = c.relnamespace WHERE n.nspname = 'qiita' AND c.relkind = 'r' AND n.nspname NOT IN ('information_schema', 'pg_catalog');"`
if [[ `echo $row_counts` != *" 0 "* ]]; then
echo "***********";
echo "The number of rows in a production system is not what's expected:";
echo $row_counts;
echo "***********";
exit 1
fi
fi
- name: Submit coveralls
uses: AndreMiras/coveralls-python-action@develop
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,6 @@ qiita_pet/*.conf

# jupyter notebooks input data
notebooks/*/*.tsv.gz

# jupyter notebooks input data
notebooks/resource-allocation/data
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Qiita changelog

Version 2024.07
---------------

Deployed on July 15th, 2024

* On June 14th, 2024 we modified the SPP to use ["fastp & minimap2 against GRCh38.p14 + Phi X 174 + T2T-CHM13v2.0, then Movi against GRCh38.p14, T2T-CHM13v2.0 + Human Pangenome Reference Consortium release 2023"](https://github.com/cguccione/human_host_filtration) to filter human-reads.
* Full refactor of the [DB patching system](https://github.com/qiita-spots/qiita/blob/master/CONTRIBUTING.md#patch-91sql) to make sure that a new production deployment has a fully empty database.
* Fully removed Qiimp from Qiita.
* Users can now add `ORCID`, `ResearchGate` and/or `GoogleScholar` information to their profile and the creation (registration) timestamp is kept in the database. Thank you @jlab.
* Admins can now track and purge non-confirmed users from the database via the GUI (`/admin/purge_users/`). Thank you @jlab.
* Added `qiita.slurm_resource_allocations` to store general job resource usage, which can be populated by `qiita_db.util.update_resource_allocation_table`.
* Added `qiita_db.util.resource_allocation_plot` to generate different models to allocate resources from a given software command based on previous jobs, thank you @Gossty !
* The stats page map can be centered via the configuration file; additionally, the Help and Admin emails are defined also via the configuration files, thank you @jlab !
* ``Sequel IIe``, ``Revio``, and ``Onso`` are now valid instruments for the ``PacBio_SMRT`` platform.
* Added `current_human_filtering` to the prep-information and `human_reads_filter_method` to the artifact to keep track of the method that it was used to human reads filter the raw artifact and know if it's up to date with what is expected via the best practices.
* Added `reprocess_job_id` to the prep-information so we keep track if a preparation has been reprocessed with another job.
* Other general fixes, like [#3385](https://github.com/qiita-spots/qiita/pull/3385), [#3397](https://github.com/qiita-spots/qiita/pull/3397), [#3399](https://github.com/qiita-spots/qiita/pull/3399), [#3400](https://github.com/qiita-spots/qiita/pull/3400), [#3409](https://github.com/qiita-spots/qiita/pull/3409), [#3410](https://github.com/qiita-spots/qiita/pull/3410).


Version 2024.02
---------------

Expand Down
11 changes: 11 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,17 @@ After the initial production release of Qiita, changes to the database schema wi
2. We keep fully patched versions of the DBS and HTML files in the repository
3. We keep a patch file for each patch as required in the `qiita_db/support_files/patches` directory. Note that **the patches will be applied in order based on the natural sort order of their filename** (e.g., `2.sql` will be applied before `10.sql`, and `10.sql` will be applied before `a.sql`)

### Patch 91.sql

In May 2024 we decided to:
* Merge all patches into the main database schema, this means that there are no patches younger than 92.sql.
* Added a new folder `patches/test_db_sql/` where we can store sql files that will only be applied for the test environment.
* Added a test to the GitHub actions to test that the production database has an expected number of rows.

Note that these changes mean:
1. 92.sql is the current first sql file to patch the database.
2. If you need to make changes (like INSERTS) _only_ to the tests database you need to add a patch to `patches/test_db_sql/`.

### Developer Workflow

1. Load the fully patched DBS file (e.g., `qiita-db.dbs`) in [DBSchema](http://www.dbschema.com/)
Expand Down
5 changes: 4 additions & 1 deletion INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ You can reboot the system with `sudo reboot` in case any packages were updated.
Next, we need to add the Postgres repository to our system:
```bash
sudo apt update
sudo apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates
sudo apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates git
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
```
Expand Down Expand Up @@ -238,6 +238,9 @@ If you are using [NGINX](https://www.nginx.com/) via conda, you are going to nee
mkdir -p ${CONDA_PREFIX}/var/run/nginx/
```

Note that the shipped nginx version from conda, does **not** contain the mod_zip module: https://github.com/evanmiller/mod_zip
This leads to unexpected behaviour when generating a download link for anonymous artefact sharing, i.e. Qiita returns a flat file listing artifact filepaths instead of generating a ZIP archive that contains those files. You need to compile nginx with the additional mod_zip module yourself. (I've invested multiple hours to realize that the configure routine does not properly link shared libraries to the nginx binary. Try adding `--with-ld-opt=" -Wl,-rpath,/home/foo/lib "` to the `./auto/configure` call.)

## Start Qiita

Start postgres (instructions vary depending on operating system and install method).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from qiita_core.util import MaxRSS_helper
from qiita_db.util import MaxRSS_helper
from qiita_db.software import Software
import datetime
from io import StringIO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from json import loads
from os.path import join

from qiita_core.util import MaxRSS_helper
from qiita_db.util import MaxRSS_helper
from qiita_db.exceptions import QiitaDBUnknownIDError
from qiita_db.processing_job import ProcessingJob
from qiita_db.software import Software
Expand Down
73 changes: 72 additions & 1 deletion qiita_core/configuration_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,12 @@ class ConfigurationManager(object):
The portal subdirectory used in the URL
portal_fp : str
The filepath to the portal styling config file
stats_map_center_latitude : float
The center latitude of the world map, shown on the Stats map.
Defaults to 40.01027 (Boulder, CO, USA)
stats_map_center_longitude : float
The center longitude of the world map, shown on the Stats map.
Defaults to -105.24827 (Boulder, CO, USA)
qiita_env : str
The script used to start the qiita environment
private_launcher : str
Expand All @@ -117,6 +123,10 @@ class ConfigurationManager(object):
The script used to start the plugins
plugin_dir : str
The path to the directory containing the plugin configuration files
help_email : str
The email address a user should write to when asking for help
sysadmin_email : str
The email address, Qiita sends internal notifications to a sys admin
Raises
------
Expand Down Expand Up @@ -234,6 +244,32 @@ def _get_main(self, config):
self.key_file = join(install_dir, 'qiita_core', 'support_files',
'ci_server.key')

self.help_email = config.get('main', 'HELP_EMAIL')
if not self.help_email:
raise ValueError(
"You did not specify the HELP_EMAIL address in the main "
"section of Qiita's config file. This address is essential "
"for users to ask for help as it is displayed at various "
"location throughout Qiita's web pages.")
if (self.help_email == '[email protected]') and \
(self.test_environment is False):
warnings.warn(
"Using the github fake email for HELP_EMAIL, "
"are you sure this is OK?")

self.sysadmin_email = config.get('main', 'SYSADMIN_EMAIL')
if not self.sysadmin_email:
raise ValueError(
"You did not specify the SYSADMIN_EMAIL address in the main "
"section of Qiita's config file. Serious issues will "
"automatically be reported to a sys admin, an according "
"address is therefore required!")
if (self.sysadmin_email == '[email protected]') and \
(self.test_environment is False):
warnings.warn(
"Using the github fake email for SYSADMIN_EMAIL, "
"are you sure this is OK?")

def _get_job_scheduler(self, config):
"""Get the configuration of the job_scheduler section"""
self.job_scheduler_owner = config.get(
Expand Down Expand Up @@ -317,5 +353,40 @@ def _get_portal(self, config):
else:
self.portal_dir = ""

msg = ("The value %s for %s you set in Qiita's configuration file "
"(section 'portal') for the Stats world map cannot be "
"intepreted as a float! %s")
lat_default = 40.01027 # Boulder CO, USA
try:
self.stats_map_center_latitude = config.get(
'portal', 'STATS_MAP_CENTER_LATITUDE', fallback=lat_default)
if self.stats_map_center_latitude == '':
self.stats_map_center_latitude = lat_default
self.stats_map_center_latitude = float(
self.stats_map_center_latitude)
except ValueError as e:
raise ValueError(msg % (self.stats_map_center_latitude,
'STATS_MAP_CENTER_LATITUDE', e))

lon_default = -105.24827 # Boulder CO, USA
try:
self.stats_map_center_longitude = config.get(
'portal', 'STATS_MAP_CENTER_LONGITUDE', fallback=lon_default)
if self.stats_map_center_longitude == '':
self.stats_map_center_longitude = lon_default
self.stats_map_center_longitude = float(
self.stats_map_center_longitude)
except ValueError as e:
raise ValueError(msg % (self.stats_map_center_longitude,
'STATS_MAP_CENTER_LONGITUDE', e))
for (name, val) in [('latitude', self.stats_map_center_latitude),
('longitude', self.stats_map_center_longitude)]:
msg = ("The %s of %s you set in Qiita's configuration file "
"(section 'portal') for the Stats world map cannot be %s!")
if val < -180:
raise ValueError(msg % (name, val, 'smaller than -180°'))
if val > 180:
raise ValueError(msg % (name, val, 'larger than 180°'))

def _iframe(self, config):
self.iframe_qiimp = config.get('iframe', 'QIIMP')
self.iframe_qiimp = config.get('iframe', 'QIIMP', fallback=None)
7 changes: 7 additions & 0 deletions qiita_core/support_files/cert.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
32 changes: 16 additions & 16 deletions qiita_core/support_files/ci_rootca.crt
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions qiita_core/support_files/ci_rootca.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDC1vjTsLU7DajT
nfeoib2B6tzVpg+iKDR5Wb3WyjkiO1suRJlgZFRqgIX+agWXCfQlZhjvjbbB8OG+
NdNqYrOyBujA2Hxr2tVpDEU65lNaI3ok1jdm1+C2r5jXLo9FQoJv30TYpRenwm7k
a8Q4SPb8BC1UAji8oWCB4dIKlMppkOtX7+a5TWaaRv/l2IdbmAzX1U6KGluP9bkq
Lg1e60io1FK2UpAxhaKm2Zt+rNsBTuygDfpWN2ltUGxAm6s85aqxZB2K8X80WCXg
WyMMR4UIH+hnVId7+KDZyvCtFPtRmOmdmriDiMNp/MY8IFjtpQYROzPfYEw9XY/b
bIqOJw+nAgMBAAECggEAJy8Mg6Y6DFJG7agLMn3g+su89cqbwkTLqMv/fb7VlqjR
QZDSN6x1vaVzTSMNVL7PtuW9hg+9/WrwO0yf4/lNojP5gy8GdrpfyOyKz7macbpI
yje6lJg9vP+7gSr/7THfAZipQ9iP1VEo9A8oOxmRckV0yDxaJLVfrz82+qHJw0jj
Iy/8kkKtQEZ8gN547IDVladRunAGU4xYl9n9hPDfAbA3lPkjNTytzPk8Be4X98kW
K2L4Q0wloRV6/n7qDamyjFsDarswxFA+TXypiESxQHFCdNiSKqAv3DHE6QcYRWQK
vwa5QfCIHFpMsclbmGvB9WSPxC6HcMppcWyf5V9RgQKBgQD/xlK2X0ig1yqn9OMX
oo8XRWZqC4skn3/I8RkeMKS1dBg3o0v3c6uF4RY4i35lMZdPewFtYy8SEQa3XMSk
6z/DCeBKzIbjqxv5pSFrMu2MR72SlmnTkbyq6T4t+OIII75T11XtbQLidDvZNgQI
8lnQQsJfBJZQQ/+ERICNomMGlwKBgQDDAuh6gVic/lF4geCAhkRarjrZlUohWUuD
1jSbSuXs5GoxMZ9+b2JAA2SUxIY3itw/SCT0ASoylmuAcoaZ7OJsjEq5EjJx5uns
GcJ6TDeGIa9ttGwU5FyLLnCdM4ndGtAYAcDdQWAAkGT+gNOQgqX81bnqhEWGNDkY
9LxCL0vxcQKBgGjD90U0Ki+XcqVxLUOVFj9V8ekl6UyK+HB6MOuoyQ56CyFfBdLJ
0kv4Mn3exVr1wSCRJbiEk9c2miWpHfLfWTKubOy2cdn3UHIlLVcXeS2ohQHyEk7S
txDakNmLxCnJWkBFR7EEodXX/luuQGDZw+gGME9zNY6TC6pF1NIu3ZjpAoGAf4HQ
RgF60jPLS1MIWqDv4qbXHdtqPAHpyUru3LcNPWZgNMgwc/gaMqbFRix1Ya2ussXW
O6DjWW5W3gaEEfL8XWMhnH7Ucvs76j8xlMtu5onx7XYx0Ts7c1mrEm5XbzWP6JKE
62ZKgjPnhSzwqCV0qKuKQ1e3KbfNuY6T5WaNblECgYAZs2s3Hw8eBPDFHVqRdHfl
a5+M8cXk2pUytNCGwJZ/Q/OJLUH/M9VOUE6ncHs4iX2XoCrHHqHjwZ2s3wgryS2n
8RJP8Zx0ZQqkgrXrfxxABY8UJsmUQu4X5EksoCYgv6owqNM6NuQBnfSwY6y8TjFs
4+5t5RSoyHDQeIc4OKiCdA==
-----END PRIVATE KEY-----
2 changes: 1 addition & 1 deletion qiita_core/support_files/ci_rootca.srl
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2FB946B7AAF21FDC0387BAA7B5ABF5D91E0D9F4B
2FB946B7AAF21FDC0387BAA7B5ABF5D91E0D9F4C
34 changes: 17 additions & 17 deletions qiita_core/support_files/ci_server.crt
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDoTCCAomgAwIBAgIUL7lGt6ryH9wDh7qntav12R4Nn0swDQYJKoZIhvcNAQEL
MIIDoTCCAomgAwIBAgIUL7lGt6ryH9wDh7qntav12R4Nn0wwDQYJKoZIhvcNAQEL
BQAwNTESMBAGA1UEAwwJbG9jYWxob3N0MQswCQYDVQQGEwJVUzESMBAGA1UEBwwJ
U2FuIERpZWdvMB4XDTIzMDUzMDE4MDQzMloXDTI0MDUyOTE4MDQzMlowbjELMAkG
U2FuIERpZWdvMB4XDTI0MDUzMTEzMjcwNVoXDTMzMDgxNzEzMjcwNVowbjELMAkG
A1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQBgNVBAcMCVNhbiBEaWVn
bzENMAsGA1UECgwEVUNTRDETMBEGA1UECwwKS25pZ2h0IExhYjESMBAGA1UEAwwJ
bG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBP9ojX6
JJQkZQ/awx45BDiqCJTdggCVMhCF1dDwYHpNIADWVLqXosUOml2lPp8QAD3MrklB
+blpPCjvBl/DqVsSqoGN3U3ocFyon4+7XzIXuI2js/Bf42PRCIDvu65WNNpfVmfC
k1Pc4iTe/pIZEErZ4gENsTdhjvFmiWW+UPwGNu3Ud0RpQtQkvs0mKpp/91RZm4Ra
woMa3fapfpLYzToSnAHfqP+1eCabLIpYp3Rsj2b0KsaMqyRO1xtb2lCf5nwEG08+
pctKjObWL03Gza41gcoWn0PGU7Dtks3gNStovcYqTC/roUK5zd+BN6GhdADLEE6r
RGhoJDSEZS9XewIDAQABo3AwbjAfBgNVHSMEGDAWgBR3cV67O03cSg+vFUQ+EKl0
GN4r5zAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DAUBgNVHREEDTALgglsb2NhbGhv
c3QwHQYDVR0OBBYEFOk1W4cBT/aN3Q2q4k3OpL6RKgikMA0GCSqGSIb3DQEBCwUA
A4IBAQBuqKdaQTIHU3al0oa1jGISIRs8WjKi0AswzOiKoeiXbGIsAC0csiW8ErcU
nwPOB8dKU4AgMrcTjTE+vKw7yie7yQ8tAg+dkNPsjz6ZCbRAttdxDfvO30/cL3Je
YgIc+A8WAeTUQ4mGWTBlTYZhFG+xMu7La7oPDhvNcAWYQhTj6rUnZ5/ggAygX+wn
UtR8gjSJU4WxFzyFDVNk9KnqeRC2l1mZHsgyUe+ne534EOiUzxa8D07t+L4jt/0X
EWGu1/GFODOwOtn9UzKw1I1jaiff5/e3CvSDzK53RY1lWqbdhqoiaMLLWjanjA2i
KZ/gjVd9s6htU1ede2oLbQ11gRdL
bG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuC9jQSL2
Zt0S8YHc4T42UMgK1o7qtXRG/G3BWkZYXrcFQHD3CFt4kvBOrWpyqulVDvmhMXbI
ZUra/Mw5lcL6c3PV4CWa1O/zfJ7OmitXsXq4iuCgizNOD6ms7bNGWXvDoV8pxZ1N
hKwzWZyKstwgIrutG4GWQbfq1Q+9JsLS4xuPd4+C+0IJpPy6TZ2jswbWjIV1Iikg
S2w8ZQKNXUoM27cR9m/VXcPUNnzpJPfiYw3r4zezR1ce8wjsownx7LuV1V5NQwnn
5vXEQRgm5MfLvJZ7i4cE9LX4PY8luPdPBbrfiMvuHJ+9F9K/Ma1xMolAdupNWCt0
5dfN4/ozEsFYGwIDAQABo3AwbjAfBgNVHSMEGDAWgBRWfa3Zu7StSFvmWxDC8J07
4LdZ3TAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DAUBgNVHREEDTALgglsb2NhbGhv
c3QwHQYDVR0OBBYEFKw6A/4GELz92LjFfSZuZZicn5x/MA0GCSqGSIb3DQEBCwUA
A4IBAQA2Rh1+Gwi4Wg2IU2g2lckzVBhQmoNgh2ei806K9P12//9sRUT41fwrzGo7
WHYKJbMP/6l204brq4c6W51xW5QVMtfBHQ4jP3e8Ryq4M/7QNBqfrf7ufzW1cIfj
kFBukbhZx/cmnTNM5j6cUbinx4GVkxQMJqxGRKVt94updY9T/SrKI4IqFVV9SzsW
ElqNpmRGElUs05GujBjN7KryUN0ilM3H8aieEIAZlH3TNncVudcdV5+0A6Mkxw8d
JmsJ1qATnR6ruJmHwjuagY3CYbhDSaQlGbQOKPor7XcT45R36crYuXdWkOh6A0Mx
Q/uy5CFcuPA1ZCfs0jwDpdBjcUm0
-----END CERTIFICATE-----
Loading

0 comments on commit 440a322

Please sign in to comment.