• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

andgineer / api-db-prototype / 8766121206

20 Apr 2024 03:45PM UTC coverage: 83.956% (-2.9%) from 86.892%
8766121206

push

github

andgineer
upgrade reqs

2 of 2 new or added lines in 2 files covered. (100.0%)

89 existing lines in 23 files now uncovered.

1057 of 1259 relevant lines covered (83.96%)

0.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.67
/src/controllers/users/update.py
1
from typing import Any, Dict
1✔
2

3
import controllers.models
1✔
4
import db.conn
1✔
5
import db.models
1✔
6
from controllers.auth import AuthUser
1✔
7
from controllers.helper import api_result, token_to_auth_user, transaction
1✔
8
from journaling import log
1✔
9

10

11
# mypy: disallow_untyped_decorators=False
12
@api_result
1✔
13
@transaction
1✔
14
@token_to_auth_user
1✔
15
def update_user(auth_user: AuthUser, user_id: str, update_user: Dict[str, Any]) -> Dict[str, Any]:
1✔
16
    """Update user."""
17
    update_user_obj = controllers.models.UpdateUser(update_user)
1✔
18
    update_user_obj.validate()
1✔
19
    user = db.models.User.by_id(user_id)
1✔
20
    if user.email.lower() != auth_user.email.lower() and not auth_user.is_admin:
1✔
UNCOV
21
        return (  # type: ignore
×
22
            f"Only user himself or admin can update user <{user.email}> properties, not <{auth_user.email}>.",
23
            controllers.models.HttpCode.unauthorized,
24
        )
25
    if update_user_obj.email.lower() != user.email.lower():
1✔
UNCOV
26
        return (  # type: ignore
×
27
            f"You cannot change user email (current <{user.email}>, new <{update_user_obj.email}>)",
28
            controllers.models.HttpCode.logic_error,
29
        )
30
    update_user_db = update_user_obj.to_orm
1✔
31
    for field in update_user_db:
1✔
32
        setattr(user, field, update_user_db[field])
1✔
33
    db.conn.session.commit()
1✔
34
    log.info(f"Updated user [{user}]")
1✔
35
    return update_user_obj.as_dict
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc