Compare commits
No commits in common. "b07e02e643b6a26067bce3e6d6d7edbef398ff9b" and "569138530ddfd7a6e8adcb0308e9779a9e7a4af4" have entirely different histories.
b07e02e643
...
569138530d
@ -272,7 +272,7 @@ class ConnectionManager:
|
|||||||
for lock_key in lock_keys:
|
for lock_key in lock_keys:
|
||||||
self.cell_locks.pop(lock_key, None)
|
self.cell_locks.pop(lock_key, None)
|
||||||
|
|
||||||
def is_cell_available_for_edit(
|
def is_locked_by_other(
|
||||||
self,
|
self,
|
||||||
con_key: ConnectionKeyEnum,
|
con_key: ConnectionKeyEnum,
|
||||||
user_id: int,
|
user_id: int,
|
||||||
@ -280,10 +280,10 @@ class ConnectionManager:
|
|||||||
form_key,
|
form_key,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
if not cell_key:
|
if not cell_key:
|
||||||
return True
|
return False
|
||||||
cell_key = frozenset(cell_key.items())
|
cell_key = frozenset(cell_key.items())
|
||||||
lock_owner_id = self.cell_locks.get((con_key, frozenset(form_key.items()), cell_key))
|
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(
|
def is_row_locked_by_other(
|
||||||
self,
|
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:
|
if not data or "line_id" not in data or "column" not in data:
|
||||||
return None
|
return None
|
||||||
return {
|
return {
|
||||||
"line_id": data.get("line_id_code", data["line_id"]),
|
"line_id": data["line_id"],
|
||||||
"column": data["column"],
|
"column": data["column"],
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -750,7 +750,7 @@ async def process_websocket(
|
|||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
case "cell_updated":
|
case "cell_updated":
|
||||||
if not manager.is_cell_available_for_edit(
|
if manager.is_locked_by_other(
|
||||||
con_key=con_key,
|
con_key=con_key,
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
cell_key=cell_key,
|
cell_key=cell_key,
|
||||||
@ -762,18 +762,18 @@ async def process_websocket(
|
|||||||
websocket,
|
websocket,
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
# if cell_key and not manager.acquire_cell_lock(
|
if cell_key and not manager.acquire_cell_lock(
|
||||||
# con_key=con_key,
|
con_key=con_key,
|
||||||
# user_id=user_id,
|
user_id=user_id,
|
||||||
# cell_key=cell_key,
|
cell_key=cell_key,
|
||||||
# form_key=kwargs_process,
|
form_key=kwargs_process,
|
||||||
# ):
|
):
|
||||||
# data["error"] = "Ячейка уже редактируется другим пользователем"
|
data["error"] = "Ячейка уже редактируется другим пользователем"
|
||||||
# await manager.send_back(
|
await manager.send_back(
|
||||||
# data,
|
data,
|
||||||
# websocket,
|
websocket,
|
||||||
# )
|
)
|
||||||
# continue
|
continue
|
||||||
case "row_deleted":
|
case "row_deleted":
|
||||||
if manager.is_row_locked_by_other(
|
if manager.is_row_locked_by_other(
|
||||||
con_key=con_key,
|
con_key=con_key,
|
||||||
|
|||||||
@ -249,7 +249,6 @@ export const RealtimeProvider = ({
|
|||||||
event: "cell_updated",
|
event: "cell_updated",
|
||||||
data: {
|
data: {
|
||||||
line_id: lineId,
|
line_id: lineId,
|
||||||
line_id_code: row.id,
|
|
||||||
column: colId,
|
column: colId,
|
||||||
value: value,
|
value: value,
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user