Skip to content
Snippets Groups Projects
Commit 1d468ad5 authored by Tim Repke's avatar Tim Repke
Browse files

Merge branch 'master' into 'production'

Master

See merge request !38
parents 51011bf5 ab490bae
No related branches found
No related tags found
1 merge request!38Master
Pipeline #1406 passed with warnings
...@@ -26,7 +26,7 @@ stages: ...@@ -26,7 +26,7 @@ stages:
build-job: build-job:
stage: build stage: build
image: python:3.10.9 image: python:3.10.6
script: script:
- python -V - python -V
- pip install virtualenv - pip install virtualenv
...@@ -40,14 +40,14 @@ build-job: ...@@ -40,14 +40,14 @@ build-job:
test-job1: test-job1:
stage: test stage: test
image: python:3.10.9 image: python:3.10.6
script: script:
- source venv/bin/activate - source venv/bin/activate
- flake8 --config .flake8 - flake8 --config .flake8
test-job2: test-job2:
stage: test stage: test
image: python:3.10.9 image: python:3.10.6
script: script:
- source venv/bin/activate - source venv/bin/activate
- which python - which python
...@@ -57,7 +57,7 @@ test-job2: ...@@ -57,7 +57,7 @@ test-job2:
deploy-to-production: deploy-to-production:
stage: deploy stage: deploy
tags: tags:
- bare-metal - vm,bare-metal
script: script:
- echo "Current working directory and user" - echo "Current working directory and user"
- pwd - pwd
...@@ -71,10 +71,9 @@ deploy-to-production: ...@@ -71,10 +71,9 @@ deploy-to-production:
- git config --global user.email gitlab-runner@gitlab.pik-potsdam.de - git config --global user.email gitlab-runner@gitlab.pik-potsdam.de
- git config --global -l --show-origin - git config --global -l --show-origin
- echo "Go to deployment location" - echo "Go to deployment location"
- cd /home/nacsos/nacsos-core - cd /var/www/nacsos2/nacsos-core
- ls -lisah - ls -lisah
- sudo chown -R gitlab-runner /home/nacsos/nacsos-core - sudo chown -R gitlab-runner:gitlab-runner /var/www/nacsos2/nacsos-core
- sudo chgrp -R gitlab-runner /home/nacsos/nacsos-core
- ls -lisah - ls -lisah
- echo "Stopping NACSOS-core service" - echo "Stopping NACSOS-core service"
- sudo systemctl stop nacsos-core.service - sudo systemctl stop nacsos-core.service
...@@ -91,16 +90,10 @@ deploy-to-production: ...@@ -91,16 +90,10 @@ deploy-to-production:
- echo "Installing requirements" - echo "Installing requirements"
- pip install -r requirements.txt - pip install -r requirements.txt
- echo "Handling migrations" - echo "Handling migrations"
- nacsos_migrate upgrade --revision head --root-path=/home/nacsos/nacsos-core/venv/lib/python3.10/site-packages/nacsos_data --ini-file=/home/nacsos/nacsos-core/config/alembic.ini - nacsos_migrate upgrade --revision head --root-path=/var/www/nacsos2/nacsos-core/venv/lib/python3.10/site-packages/nacsos_data --ini-file=/var/www/nacsos2/nacsos-core/config/alembic.ini
- sudo chown -R nacsos /home/nacsos/nacsos-core - sudo chown -R nacsos:nacsos /var/www/nacsos2/nacsos-core
- sudo chgrp -R nacsos /home/nacsos/nacsos-core
- echo "Starting NACSOS-core service" - echo "Starting NACSOS-core service"
- sudo systemctl start nacsos-core.service - sudo systemctl start nacsos-core.service
# DEPRECATED
# - echo "Run as nacsos user"
# - sudo -u nacsos bash ./deploy.sh $CI_JOB_TOKEN
# - echo "Becoming 'nacsos' user"
# - sudo -u nacsos -s
when: manual when: manual
only: only:
- production - production
flake8==6.0.0 flake8==6.0.0
tox==4.4.8 tox==4.4.12
pytest==7.2.2 pytest==7.3.1
pytest-cov==4.0.0 pytest-cov==4.0.0
mypy==1.1.1 mypy==1.2.0
types-toml==0.10.8.6 types-toml==0.10.8.6
types-PyYAML==6.0.12.9 types-PyYAML==6.0.12.9
\ No newline at end of file
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from nacsos_data.util.auth import UserPermissions
from sqlalchemy import select
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from sqlalchemy import select
from sqlalchemy import func as F
from nacsos_data.db.schemas.annotations import AssignmentScope from server.data import db_engine
from nacsos_data.db.schemas.highlight import Highlighter
from nacsos_data.models.highlight import HighlighterModel
from server.api.errors import \ from server.api.errors import \
NoDataForKeyError, \ NoDataForKeyError, \
DataNotFoundWarning DataNotFoundWarning
from server.util.security import UserPermissionChecker, InsufficientPermissions from server.util.security import \
from server.data import db_engine UserPermissionChecker, \
InsufficientPermissions
from nacsos_data.util.auth import UserPermissions
from nacsos_data.db.schemas.annotations import AssignmentScope
from nacsos_data.db.schemas.highlight import Highlighter
from nacsos_data.models.highlight import HighlighterModel
if TYPE_CHECKING: if TYPE_CHECKING:
from sqlalchemy.ext.asyncio import AsyncSession # noqa F401 from sqlalchemy.ext.asyncio import AsyncSession # noqa F401
...@@ -20,19 +23,21 @@ if TYPE_CHECKING: ...@@ -20,19 +23,21 @@ if TYPE_CHECKING:
router = APIRouter() router = APIRouter()
@router.get('/scope/{assignment_scope_id}', response_model=HighlighterModel | None) @router.get('/scope/{assignment_scope_id}', response_model=list[HighlighterModel] | None)
async def get_scope_highlighter(assignment_scope_id: str, async def get_scope_highlighters(assignment_scope_id: str,
permissions: UserPermissions = Depends(UserPermissionChecker('annotations_read'))) \ permissions: UserPermissions = Depends(UserPermissionChecker('annotations_read'))) \
-> HighlighterModel: -> list[HighlighterModel]:
async with db_engine.session() as session: # type: AsyncSession async with db_engine.session() as session: # type: AsyncSession
highlighter_ids = select(F.unnest(AssignmentScope.highlighter_ids).label('highlighter_id')) \
.where(AssignmentScope.assignment_scope_id == assignment_scope_id) \
.subquery()
stmt = select(Highlighter) \ stmt = select(Highlighter) \
.join(AssignmentScope, .join(highlighter_ids, highlighter_ids.c.highlighter_id == Highlighter.highlighter_id) \
AssignmentScope.highlighter_id == Highlighter.highlighter_id) \ .where(Highlighter.project_id == permissions.permissions.project_id)
.where(Highlighter.project_id == permissions.permissions.project_id,
AssignmentScope.assignment_scope_id == assignment_scope_id) result = (await session.scalars(stmt)).all()
result = (await session.scalars(stmt)).one_or_none() if result is not None and len(result) > 0:
if result is not None: return [HighlighterModel.parse_obj(r.__dict__) for r in result]
return HighlighterModel.parse_obj(result.__dict__)
raise DataNotFoundWarning(f'No highlighter in project {permissions.permissions.project_id} ' raise DataNotFoundWarning(f'No highlighter in project {permissions.permissions.project_id} '
f'for scope with id {assignment_scope_id}!') f'for scope with id {assignment_scope_id}!')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment