Skip to content

Commit

Permalink
feat: WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
keithmanville committed May 17, 2024
1 parent d9948b9 commit d4d9ab8
Show file tree
Hide file tree
Showing 7 changed files with 220 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/dioptra/restapi/v1/groups/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def create_group(

group: models.Group | None = GroupService.get_group_by_name(name)
if group is None:
group: models.Group = models.Group(name=name, creator=current_user)
group: models.Group = models.Group(name=name, creator=user)
else:
if error_if_exists:
log.info("Group name already exists", name=name)
Expand Down
9 changes: 6 additions & 3 deletions src/dioptra/restapi/v1/users/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import structlog
from flask import request
from flask_accepts import accepts, responds
from flask_login import current_user, login_required
from flask_login import login_required
from flask_restx import Namespace, Resource
from injector import inject
from structlog.stdlib import BoundLogger
Expand Down Expand Up @@ -132,7 +132,9 @@ def get(self, id: int) -> dict[str, Any]:
log = LOGGER.new(
request_id=str(uuid.uuid4()), resource="User", request_type="GET", id=id
)
user = cast(models.User, self._user_id_service.get(id, log=log))
user = cast(
models.User, self._user_id_service.get(id, error_if_not_found=True, log=log)
)
return utils.build_user(user)


Expand Down Expand Up @@ -205,7 +207,8 @@ def delete(self):
resource="User",
request_type="DELETE",
)
return self._current_user_service.delete(current_user.id, log=log)
parsed_obj = request.parsed_obj # type: ignore # noqa: F841
return self._user_current_service.delete(parsed_obj["password"], log=log)

@login_required
@accepts(schema=UserMutableFieldsSchema, api=api)
Expand Down
2 changes: 1 addition & 1 deletion src/dioptra/restapi/v1/users/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ class UserPasswordSchema(Schema):
class UserDeleteSchema(Schema):
"""The schema for deleting a User."""

pssword = fields.String(
password = fields.String(
attribute="password",
metadata=dict(description="The users current password."),
)
Expand Down
6 changes: 2 additions & 4 deletions src/dioptra/restapi/v1/users/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
from structlog.stdlib import BoundLogger

from dioptra.restapi.db import db, models
from dioptra.restapi.v0.shared.password.service import PasswordService
from dioptra.restapi.v1.groups.service import GroupService

from .errors import (
Expand All @@ -41,9 +42,6 @@
UserRegistrationError,
)

from dioptra.restapi.v0.shared.password.service import PasswordService


LOGGER: BoundLogger = structlog.stdlib.get_logger()

DEFAULT_GROUP_NAME: Final[str] = "public"
Expand Down Expand Up @@ -118,7 +116,7 @@ def create(
default_group = GroupService.create_group(
DEFAULT_GROUP_NAME,
new_user,
group_member_permissions={"read": True, "write": True},
member_permissions={"read": True, "write": True},
log=log,
)

Expand Down
7 changes: 5 additions & 2 deletions src/dioptra/restapi/v1/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,26 @@

from dioptra.restapi.db import models


# -- Ref Types -----------------------------------------------------------------


def build_user_ref(user: models.User) -> dict[str, Any]:
return {
"id": user.user_id,
"username": user.username,
"url": f"/users/{user.user_id}",
}


def build_group_ref(group: models.Group) -> dict[str, Any]:
return {
"id": group.group_id,
"name": group.name,
"url": f"/groups/{group.group_id}",
}

def build_tag_ref(tag: models.Group) -> dict[str, Any]:

def build_tag_ref(tag: models.Tag) -> dict[str, Any]:
return {
"id": tag.tag_id,
"name": tag.name,
Expand Down Expand Up @@ -113,6 +115,7 @@ def build_group(group: models.Group) -> dict[str, Any]:

# -- Paging --------------------------------------------------------------------


def build_paging_envelope(
resource_type: str,
build_fn: Callable[[Any], dict[str, Any]],
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/restapi/v1/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def registered_queues(
client,
name="tensorflow_gpu",
description="The second queue.",
group_id=auth_account["groups"][0]["id"]
group_id=auth_account["groups"][0]["id"],
).get_json()
queue3_response = actions.register_queue(
client,
Expand Down

0 comments on commit d4d9ab8

Please sign in to comment.