ru_python_beginners | Unsorted

Telegram-канал ru_python_beginners - Python beginners

14446

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981

Subscribe to a channel

Python beginners

ну это может иметь смысл рамках конкретного проекта, но надо понимать зачем именно мы хотим управлять централизованно

Читать полностью…

Python beginners

но в остальном, идея не имеет особого смысла

Читать полностью…

Python beginners

и потом задавать сабсеты локально

Читать полностью…

Python beginners

Согласен, изначально я так и хотел сделать для каждого объекта свой набор действий, но потом подумал, что, наверное, было бы хорошо реализовать подобное расширение

Читать полностью…

Python beginners

у кучи объектов просто не будет полного набора CRUD действий

Читать полностью…

Python beginners

Вообще я делаю библиотеку для управления политиками доступа с использованием моделей RBAC, ReBAC, ABAC на основе графовой БД

Если не вдаваться во все подробности задумки и архитектуры, то использование будет выглядеть примерно так

from enum import Flag, auto
from typing import Protocol


class ActionSet(Flag):
pass


# Общие действия над ресурсами
class CRUDActions(ActionSet):
READ = auto()
CREATE = auto()
UPDATE = auto()
DELETE = auto()


# Действия над конкретным ресурсом
class DocumentActions(CRUDActions):
SHARE = auto()
EXPORT = auto()


# Декларация политик
class DocumentPolicy(Policy):
roles = RolePermissions({
UserRole.VIEWER: CRUDActions.READ,
UserRole.EDITOR: CRUDActions.CREATE | CRUDActions.UPDATE | CRUDActions.DELETE,
UserRole.ADMIN: DocumentActions.SHARE | DocumentActions.EXPORT,
}, inherits=True)

@allow(DocumentActions.READ | DocumentActions.SHARE)
def can_view_or_share(self, subject): ...

@deny(DocumentActions.DELETE)
def protect_from_deletion(self, subject): ...


# Вызов где-то в интеракторе
if session.can(user, DocumentActions.READ, doc):

Если максимально кратко, то эти акшены будут использоваться для:
- Привязки ролей к наборам действий
- Фильтры на методах политик
- Проверка прав доступа в session.can(...)
- В качестве ключа для кеша скомпилированных запросов к графовой БД

Читать полностью…

Python beginners

Если можно избежать, лучше не трогать метаклассы и использовать что-нибудь попроще. Например, сделать два отдельных енама и, если надо, использовать CRUDActions | ExtendedActions.

Читать полностью…

Python beginners

Нет, конечно) Дипломная работа очень масштабная, наследуемые энамы — лишь инструмент

Читать полностью…

Python beginners

Если всё-таки хочется так сделать, я бы почитал сначала про метаклассы, __prepare__ и почитал исходники EnumType в модуле enum

Читать полностью…

Python beginners

Является ли ExtendedActions.SHARE экземпляром CRUDActions? В твоей концепции?

Читать полностью…

Python beginners

Именно задание сделать Flag, чтобы он таким образом работал?

Читать полностью…

Python beginners

а зачем, если не секрет?

Читать полностью…

Python beginners

Весь смысл енама в том, что у него ограниченный набор элементов. Поэтому от енама с элементами нельзя наследоваться.
Можно сделать какую-то свою штуку, чтобы можно было, но чтобы тайпчекер не ругался не получится.

Читать полностью…

Python beginners

Может кто-нибудь изобретал уже наследуемый енам через метаклассы, например? Если делали что-то такое, скиньте пример, пожалуйста
Возможно ли это сделать, чтобы тайпчекер не ругался?

Читать полностью…

Python beginners

с ними сами разберетесь

Читать полностью…

Python beginners

В целом библиотеки как решения? Или конкретно про действия?

Читать полностью…

Python beginners

я не понял как биндится что у "документа" только определнные действия есть

Читать полностью…

Python beginners

имело бы смысл сделать глобальный список вообще из всего, при этом конкретизированного

Читать полностью…

Python beginners

а ещё у объекта может быть несколько разных READ с разными полями

Читать полностью…

Python beginners

зачем тут вообще общие действия

Читать полностью…

Python beginners

Тогда наследование не подходит

Читать полностью…

Python beginners

А что нужно из поведения? Есть какие-то примеры использования?

Читать полностью…

Python beginners

Может, лучше будет почитать исходники пакета enum34 (который бекпорт), они короче

Читать полностью…

Python beginners

В смысле эта штука и есть задача дипломной работы? Или это нужно только в качестве инструмента для какой-то фичи?

Читать полностью…

Python beginners

Да, нужен скорее только Flag

Читать полностью…

Python beginners

Я взялся библиотеку писать в рамках дипломной работы в ВУЗе
Мне нужно сделать что-то такое

class ActionSet(Flag):
pass


class CRUDActions(AxtionSet):
READ = auto()
CREATE = auto()
UPDATE = auto()
DELETE = auto()


class ExtendedActions(CRUDActions):
SHARE = auto()
EXPORT = auto()

Читать полностью…

Python beginners

Ну вот в этом и был вопрос
Окей, спасибо

Читать полностью…

Python beginners

Подкласс enum.Enum можно наследовать, если в нём нет элементов

Читать полностью…

Python beginners

Ну лет за 5 можно сделать

Читать полностью…

Python beginners

Shhh... quiet now.
Muted xd for 1 day.
Reason:
такое рандомным людям не говорят

Читать полностью…
Subscribe to a channel