Merge pull request 'line_id_code_full' (#32) from line_id_code_full into test

Reviewed-on: #32
Reviewed-by: Raykov-MS <RaykovMS@avt.rshb.ru>
This commit is contained in:
tsygankoviva 2026-07-14 15:10:31 +03:00
commit b07e02e643
2 changed files with 18 additions and 17 deletions

View File

@ -272,7 +272,7 @@ class ConnectionManager:
for lock_key in lock_keys:
self.cell_locks.pop(lock_key, None)
def is_locked_by_other(
def is_cell_available_for_edit(
self,
con_key: ConnectionKeyEnum,
user_id: int,
@ -280,10 +280,10 @@ class ConnectionManager:
form_key,
) -> bool:
if not cell_key:
return False
return True
cell_key = frozenset(cell_key.items())
lock_owner_id = self.cell_locks.get((con_key, frozenset(form_key.items()), cell_key))
return lock_owner_id is not None and lock_owner_id != user_id
return lock_owner_id is not None and lock_owner_id == user_id
def is_row_locked_by_other(
self,
@ -662,7 +662,7 @@ def resolve_cell_key(event_data: dict) -> dict | None:
if not data or "line_id" not in data or "column" not in data:
return None
return {
"line_id": data["line_id"],
"line_id": data.get("line_id_code", data["line_id"]),
"column": data["column"],
}
@ -750,19 +750,7 @@ async def process_websocket(
)
continue
case "cell_updated":
if manager.is_locked_by_other(
con_key=con_key,
user_id=user_id,
cell_key=cell_key,
form_key=kwargs_process,
):
data["error"] = "Ячейка уже редактируется другим пользователем"
await manager.send_back(
data,
websocket,
)
continue
if cell_key and not manager.acquire_cell_lock(
if not manager.is_cell_available_for_edit(
con_key=con_key,
user_id=user_id,
cell_key=cell_key,
@ -774,6 +762,18 @@ async def process_websocket(
websocket,
)
continue
# if cell_key and not manager.acquire_cell_lock(
# con_key=con_key,
# user_id=user_id,
# cell_key=cell_key,
# form_key=kwargs_process,
# ):
# data["error"] = "Ячейка уже редактируется другим пользователем"
# await manager.send_back(
# data,
# websocket,
# )
# continue
case "row_deleted":
if manager.is_row_locked_by_other(
con_key=con_key,

View File

@ -249,6 +249,7 @@ export const RealtimeProvider = ({
event: "cell_updated",
data: {
line_id: lineId,
line_id_code: row.id,
column: colId,
value: value,
},