Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ jobs:

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "latest"

- name: Set up Python
uses: actions/setup-python@v6
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ jairocloud-groups-manager = "server.app:cli"
"lint" = "uvx ruff check"
"lint:fix" = "uvx ruff check --fix"
"format" = "uvx ruff format"
"typecheck" = "pyright"
"generate-stubs" = "python src/contrib/messages.py"
"typecheck" = "task generate-stubs && pyright"
"check-updates" = "uvx --from=pip-check-updates pcu pyproject.toml"


Expand Down
6 changes: 4 additions & 2 deletions src/contrib/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,16 @@

# ruff: noqa: RUF067

from flask import current_app
from flask import current_app, has_app_context

from server.messages import E

from .dump import dump
from .messages import generate_type_stub


if current_app.config["ENV"] != "development" or not current_app.debug:
if has_app_context() and (
current_app.config["ENV"] != "development" or not current_app.debug
):
error = E.UNNECESSARY_CONTRIB
raise RuntimeError(error)
8 changes: 6 additions & 2 deletions src/contrib/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

from datetime import UTC, datetime

from server import messages
from server.messages.base import LogMessage
from src.server import messages
from src.server.messages.base import LogMessage


def generate_type_stub() -> None:
Expand Down Expand Up @@ -77,3 +77,7 @@ def _read_last_hash(stub_path: pathlib.Path) -> str:
if second_line.startswith("# source hash:"):
return second_line.split(":")[-1].strip()
return ""


if __name__ == "__main__":
generate_type_stub()
7 changes: 4 additions & 3 deletions tests/unit/services/test_bulk.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ def test_get_repository_member(app, mocker: MockerFixture):


def test_build_user_from_file(app, mocker: MockerFixture):
repo = ["id", "name", "ver"]
metadata = ["created:", "2026-01-01", "version:", "1.0"]
header = [
"id",
"user_name",
Expand Down Expand Up @@ -237,7 +237,7 @@ def test_build_user_from_file(app, mocker: MockerFixture):
data4 = ["", "User 3", "jc_repo1_gr_test_group1", "Group 1", "general_user", "test@eppn", "user3@example.com", "ja"]
data5 = []
data6 = ["", "", "jc_repo1_gr_test_group1", "Group 1", "repository_admin", "test@eppn", "user4@example.com", "ja"]
rows = [iter([repo, header, meta, data1, data2, data3, data4, data5, data6])]
rows = [metadata, header, meta, data1, data2, data3, data4, data5, data6]
mock_read_file = mocker.patch("server.services.bulks._read_file", return_value=iter(rows))
expected_data = {
"user1": {
Expand Down Expand Up @@ -294,7 +294,8 @@ def test__read_file(app, mocker: MockerFixture, file_path, expected):
mock_wb.active = mock_ws
mocker.patch("openpyxl.load_workbook", return_value=mock_wb)
result = bulks._read_file(file_path) # noqa: SLF001
assert list(next(result)) == expected
assert list(next(result)) == expected[0]
assert list(next(result)) == expected[1]


def test__read_file_not_ws(app, mocker: MockerFixture):
Expand Down