1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/computes
catborise 8c0fbff8f7 feat(logs): admin changes and logins are recorded on the Logs page
The Logs page shows who added, changed or deleted a compute, from web
or API, and every login, failed login, lockout and logout, with the
client address and a Result column (Done, Failed, Unknown for older
rows). A failed change is recorded with its reason and the error still
reaches the user; a refused one is recorded too.

- logs.audit.write saves each row in its own savepoint and never
  raises, so a log write cannot break or undo the action it records.
  The audit() context manager writes one row when the change ends.
- Logs gains success and ip; user, host and instance are wider and
  date is indexed. The page orders by date then id.
- A compute edit names the changed fields; an edit that changes
  nothing writes no row, and an empty password field is no change.
- A compute's VMs leaving the panel get a system row each: owners
  kept on the Removed VMs page, moved to another compute, restored,
  left without owners, or the removed record expired.
- Job rows carry the result. A job's log entry that cannot be
  computed is logged and skipped instead of rolling back the finish
  (test_service.py changes this on purpose).
- Logins are recorded by signal receivers; CustomLoginView is removed
  and the plain LoginView is used. A wrong OTP code is a failed login,
  counted by django-axes toward the lockout.

Panel records and host-side objects follow in the next layers.
2026-10-23 10:30:48 +03:00
..
api feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
migrations fix(computes): a compute's hostname and login cannot inject a connection URI or ssh option 2026-10-06 22:10:19 +03:00
templates fix(templates): forms and detail lists fit a phone screen 2026-10-21 13:19:14 +03:00
tests feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
__init__.py Initial commit 2015-02-27 10:53:51 +02:00
apps.py fix: track migrations; installs apply them instead of generating them 2026-10-04 01:08:11 +03:00
forms.py feat(computes): a compute names the address migrations reach it on 2026-10-06 15:05:40 +03:00
models.py fix(computes): a deleted compute's VMs keep their owners 2026-10-22 13:24:22 +03:00
urls.py refactor(computes): drop the unused domain capabilities endpoint 2026-10-21 09:01:25 +03:00
utils.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
validators.py fix(computes): a compute's hostname and login cannot inject a connection URI or ssh option 2026-10-06 22:10:19 +03:00
views.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00