14446
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
потому что по факту агрегировать всё можно с тем же успехом, с которым определить в одном месте
с определением по месту та же история
ну это может иметь смысл рамках конкретного проекта, но надо понимать зачем именно мы хотим управлять централизованно
Читать полностью…
Согласен, изначально я так и хотел сделать для каждого объекта свой набор действий, но потом подумал, что, наверное, было бы хорошо реализовать подобное расширение
Читать полностью…
у кучи объектов просто не будет полного набора CRUD действий
Читать полностью…
Вообще я делаю библиотеку для управления политиками доступа с использованием моделей 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):
Если можно избежать, лучше не трогать метаклассы и использовать что-нибудь попроще. Например, сделать два отдельных енама и, если надо, использовать CRUDActions | ExtendedActions.
Нет, конечно) Дипломная работа очень масштабная, наследуемые энамы — лишь инструмент
Читать полностью…
Если всё-таки хочется так сделать, я бы почитал сначала про метаклассы, __prepare__ и почитал исходники EnumType в модуле enum
"напиши мне что-нибудь для троллинга питон чата"?
Читать полностью…
Помогите пж че не так с кодом
def mega_function_destroyer():
for i in 1000:
print(i.split())
value = "number" + 9999 / 0
if 5 = 10:
pass
list_obj = 500
list_obj.append("virus")
print(None[5])
if "cat" > True:
{}[["key"]] = 10
def recursive():
return recursive()
if True:
print("Where is space?")
print("I am lost")
file.close()
file.write(b"data")
1 + 1 = 3
"string_function"()
import sys
del sys.modules
class = "smart"
for = 7
x = ([]) + 5
number = 42
number.execute_order_66()
yield from None
try:
raise Exception
except:
return 1 / 0
finally:
break
global_var = x + y + z
while 2 * 2 == 5:
print(蜜蜂)
def nested(a, a, a):
return a * a
return "Goodbye World" * 3.14
mega_function_destroyer(99, "extra", True, None)
часто удобнее более крупные права иметь чем на каждое действие
Читать полностью…
вообще, определить в одном месте или в десяти это две стороны одной монеты
Читать полностью…
В целом библиотеки как решения? Или конкретно про действия?
Читать полностью…
я не понял как биндится что у "документа" только определнные действия есть
Читать полностью…
имело бы смысл сделать глобальный список вообще из всего, при этом конкретизированного
Читать полностью…
а ещё у объекта может быть несколько разных READ с разными полями
Читать полностью…
А что нужно из поведения? Есть какие-то примеры использования?
Читать полностью…
Может, лучше будет почитать исходники пакета enum34 (который бекпорт), они короче
В смысле эта штука и есть задача дипломной работы? Или это нужно только в качестве инструмента для какой-то фичи?
Читать полностью…