Files
ACORE/core/utils/permissions.py
T
lokses 78475b58e9 Инфраструктура: Celery, общие утилиты, виджеты, шелл портала
- acore: Celery-приложение (брокер из env, eager без брокера), настройки
  CELERY_*, регистрация всех новых приложений в INSTALLED_APPS, маршруты
- core/utils: render_page (HTMX-фрагмент/полный layout), is_owner/
  is_owner_or_staff; templatetags common_tags (initials, clean_excerpt,
  is_it_staff); UpdateLastSeenMiddleware
- static: people-picker (дерево отделов с аватарками), searchable-select
  (одиночный выбор с поиском), directory-quick-add, it-manager, pagination;
  тема Tailwind v4 пересобрана, лого
- templates: новый шелл index.html (мобильный сайдбар, темы, фон,
  user-dropdown) и login с брендингом

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 17:31:01 +03:00

9 lines
501 B
Python

def is_owner_or_staff(user, obj, owner_field: str = 'author_id') -> bool:
"""Редактировать может администратор (is_staff) или владелец объекта"""
return user.is_staff or getattr(obj, owner_field) == user.pk
def is_owner(user, obj, owner_field: str = 'author_id') -> bool:
"""Удалять с портала может только владелец (staff — через админку)"""
return getattr(obj, owner_field) == user.pk