Skip to content

Commit

Permalink
Merge pull request #757 from MolSSI/next
Browse files Browse the repository at this point in the history
A few miscellaneous tweaks
  • Loading branch information
bennybp authored Sep 20, 2023
2 parents e9f85cc + 54099e2 commit e8d9cba
Show file tree
Hide file tree
Showing 37 changed files with 240 additions and 155 deletions.
5 changes: 2 additions & 3 deletions docs/source/user_guide/connecting_qcportal.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,15 @@ This class handles connecting to the server and exposing all the functionality o
Connecting to the server is handled by the constructor of the :class:`~qcportal.client.PortalClient` class.

The first parameter is the address or URI of the server you with to connect to (including ``http``/``https``).
If no address is given, then by default the client will connect to the public, MolSSI-hosted server.

.. tab-set::

.. tab-item:: PYTHON

>>> from qcportal import PortalClient
>>> client = PortalClient()
>>> client = PortalClient("https://ml.qcarchive.molssi.org")
>>> print(client.server_name)
MolSSI Public QCArchive Server
The MolSSI ML QCFractal Server

However, you can specify the address of another server. Here we connect to the MolSSI-hosted
public demonstration server
Expand Down
84 changes: 0 additions & 84 deletions qcfractal/qcfractal/auth_v1/helpers.py

This file was deleted.

4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/auth/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.auth import UserInfo, RoleInfo, GroupInfo
from qcportal.exceptions import (
InconsistentUpdateError,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/dataset_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.base_models import ProjURLParameters
from qcportal.dataset_models import (
DatasetAddBody,
Expand Down
26 changes: 20 additions & 6 deletions qcfractal/qcfractal/components/dataset_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,13 +361,18 @@ def update_metadata(
raise MissingDataError(f"Could not find dataset with type={self.dataset_type} and {dataset_id}")

if ds.name != new_metadata.name:
stmt2 = select(self.dataset_orm.id)
stmt2 = stmt2.where(self.dataset_orm.dataset_type == self.dataset_type)
stmt2 = stmt2.where(self.dataset_orm.lname == new_metadata.name.lower())
existing = session.execute(stmt2).scalar_one_or_none()

if existing:
raise AlreadyExistsError(f"{self.dataset_type} dataset named '{new_metadata.name}' already exists")
# If only change in case, no need to check if it already exists
if ds.name.lower() != new_metadata.name.lower():
stmt2 = select(self.dataset_orm.id)
stmt2 = stmt2.where(self.dataset_orm.dataset_type == self.dataset_type)
stmt2 = stmt2.where(self.dataset_orm.lname == new_metadata.name.lower())
existing = session.execute(stmt2).scalar_one_or_none()

if existing:
raise AlreadyExistsError(
f"{self.dataset_type} dataset named '{new_metadata.name}' already exists"
)

ds.name = new_metadata.name

Expand Down Expand Up @@ -571,6 +576,10 @@ def rename_specifications(
is used, it will be flushed (but not committed) before returning from this function.
"""

specification_name_map = {k: v for k, v in specification_name_map.items() if k != v}
if not specification_name_map:
return

stmt = select(self.specification_orm)
stmt = stmt.where(self.specification_orm.dataset_id == dataset_id)
stmt = stmt.where(self.specification_orm.name.in_(specification_name_map.keys()))
Expand Down Expand Up @@ -805,6 +814,11 @@ def rename_entries(self, dataset_id: int, entry_name_map: Dict[str, str], *, ses
is used, it will be flushed (but not committed) before returning from this function.
"""

# strip out any renames that don't rename
entry_name_map = {k: v for k, v in entry_name_map.items() if k != v}
if not entry_name_map:
return

stmt = select(self.entry_orm)
stmt = stmt.where(self.entry_orm.dataset_id == dataset_id)
stmt = stmt.where(self.entry_orm.name.in_(entry_name_map.keys()))
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/gridoptimization/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import LimitExceededError
from qcportal.gridoptimization import (
GridoptimizationDatasetSpecification,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/internal_jobs/routes.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from flask import current_app

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import InvalidUpdateError
from qcportal.internal_jobs import InternalJobQueryFilters, InternalJobStatusEnum
from qcportal.utils import calculate_limit
Expand Down
6 changes: 3 additions & 3 deletions qcfractal/qcfractal/components/managers/routes.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from flask import current_app

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.compute_v1.blueprint import compute_v1
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcfractal.flask_app.compute_v1.blueprint import compute_v1
from qcportal.base_models import CommonBulkGetNamesBody
from qcportal.exceptions import LimitExceededError
from qcportal.managers import (
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/manybody/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import LimitExceededError
from qcportal.manybody import (
ManybodyDatasetSpecification,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/molecules/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.base_models import CommonBulkGetBody, ProjURLParameters
from qcportal.exceptions import LimitExceededError
from qcportal.molecules import Molecule, MoleculeQueryFilters, MoleculeModifyBody
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/neb/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import LimitExceededError
from qcportal.neb import NEBDatasetSpecification, NEBDatasetNewEntry, NEBAddBody, NEBQueryFilters
from qcportal.utils import calculate_limit
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/optimization/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import LimitExceededError
from qcportal.optimization import (
OptimizationDatasetSpecification,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/reaction/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import LimitExceededError
from qcportal.reaction import (
ReactionDatasetSpecification,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/record_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.base_models import ProjURLParameters, CommonBulkGetBody
from qcportal.exceptions import LimitExceededError
from qcportal.record_models import (
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/serverinfo/routes.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
from flask import current_app

from qcfractal import __version__ as qcfractal_version
from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.client_versions import (
client_version_lower_limit,
client_version_upper_limit,
manager_version_lower_limit,
manager_version_upper_limit,
)
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.serverinfo import (
AccessLogSummaryFilters,
AccessLogQueryFilters,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/singlepoint/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from flask import current_app, g

from qcfractal.api_v1.blueprint import api_v1
from qcfractal.api_v1.helpers import wrap_route
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.blueprint import api_v1
from qcfractal.flask_app.api_v1.helpers import wrap_route
from qcportal.exceptions import LimitExceededError
from qcportal.singlepoint import (
SinglepointDatasetSpecification,
Expand Down
4 changes: 2 additions & 2 deletions qcfractal/qcfractal/components/tasks/routes.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from flask import current_app

from qcfractal.api_v1.helpers import wrap_route # uses the same wrap_route as the user api
from qcfractal.compute_v1.blueprint import compute_v1
from qcfractal.flask_app import storage_socket
from qcfractal.flask_app.api_v1.helpers import wrap_route # uses the same wrap_route as the user api
from qcfractal.flask_app.compute_v1.blueprint import compute_v1
from qcportal.exceptions import LimitExceededError
from qcportal.tasks import TaskClaimBody, TaskReturnBody
from qcportal.utils import calculate_limit
Expand Down
Loading

0 comments on commit e8d9cba

Please sign in to comment.