41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from django.contrib.auth import get_user_model
|
||
from rest_framework import serializers
|
||
|
||
from tasks.access import user_can_access_task_board
|
||
from tasks.models import TaskColumn
|
||
|
||
|
||
User = get_user_model()
|
||
|
||
DEFAULT_COLUMNS = [
|
||
("Новые", "#38bdf8", False),
|
||
("В работе", "#f59e0b", False),
|
||
("На проверке", "#8b5cf6", False),
|
||
("Готово", "#22c55e", True),
|
||
]
|
||
|
||
|
||
def create_default_columns(board):
|
||
if board.columns.exists():
|
||
return
|
||
TaskColumn.objects.bulk_create(
|
||
[
|
||
TaskColumn(
|
||
board=board,
|
||
name=name,
|
||
color=color,
|
||
is_done=is_done,
|
||
position=index * 1000,
|
||
)
|
||
for index, (name, color, is_done) in enumerate(DEFAULT_COLUMNS)
|
||
]
|
||
)
|
||
|
||
|
||
def validate_board_access(serializer, board):
|
||
request = serializer.context.get("request")
|
||
user = getattr(request, "user", None)
|
||
if not user_can_access_task_board(user, board):
|
||
raise serializers.ValidationError("У вас нет доступа к этой доске.")
|
||
return board
|