پرش به محتویات

پرسش‌ها

جای مجوزهای Django را می‌گیرد؟

نه - آن‌ها را به کار می‌برد. مجوزها ردیف‌های خود Django‌اند، بسته‌ها گروه‌های Django، و user.has_perm()، {{ perms }} و پنل ادمین کار می‌کنند. کتابخانه چیزی را اضافه می‌کند که مجوزهای Django نمی‌توانند بگویند: کدام ردیف‌ها، کدام فیلدها، کدام مقدارها.

با django-guardian یا django-rules چه فرقی دارد؟

django-guardian مجوز را روی یک شیء می‌دهد، ردیف به ردیف ذخیره‌شده: برای «Ana می‌تواند این سند را ویرایش کند» خوب است، برای «مدیرها سفارش‌های شعبه‌شان را ویرایش می‌کنند» پرهزینه، چون این یک قانون است، نه فهرستی از ردیف‌ها. django-rules با predicateها در کد تصمیم می‌گیرد. این کتابخانه با دامنه تصمیم می‌گیرد - قانونی درباره‌ی ردیف‌ها، در کد یا ساخته‌شده در پنل ادمین - پس یک مجوز به هزاران ردیف می‌رسد بی آنکه برای هر شخص ردیفی ذخیره شود، و مدیر سیستم بدون استقرار دوباره تغییر می‌دهد چه کسی به چه می‌رسد.

Django REST framework لازم است؟

نه. pip install django-clearance با viewها، قالب‌ها و پنل ادمین Django کار می‌کند. [drf] برای پروژه‌ای که API دارد DRF را کنارش اضافه می‌کند.

پنل ادمین لازم است؟

نه. بدون ClearanceAdminConfig صفحه‌های دسترسی وجود ندارند؛ دسترسی در کد، با AccessService، یا در فایل ACCESS داده می‌شود. بقیه‌ی چیزها کار می‌کنند.

چرا مجوزی که تازه داده‌ام به هیچ ردیفی نمی‌رسد؟

چون queryset مدل یک ScopedQuerySet است و مجوز بدون دامنه داده شده: یک مجوز تا وقتی دامنه‌ای نگوید به کدام ردیف‌ها، به هیچ ردیفی نمی‌رسد. کنار مجوز دامنه‌ای انتخاب کنید - all برای همه‌ی ردیف‌ها - یا به مدل یک default_scope بدهید. clearance_check همه‌ی این مجوزها را فهرست می‌کند.

چرا کسی که همین حالا بسته‌ای به او دادم رد می‌شود؟

آنچه یک شخص دارد یک بار خوانده و روی شیء کاربر نگه داشته می‌شود، همان‌طور که Django مجوزها را نگه می‌دارد. شیء کاربری که پیش از تغییر خوانده شده هنوز همان چیزی را دارد که داشت. در درخواست بعد دوباره خوانده می‌شود؛ در یک تست، یک shell یا یک worker، کاربر را دوباره بخوانید، یا forget_grants(user) را صدا بزنید.

چرا نمی‌توانم دسترسی خودم را تغییر دهم؟

هیچ کس نمی‌تواند - ابرکاربر هم نه. وگرنه کسی که دسترسی را مدیریت می‌کند می‌توانست هر چیزی را به خودش بدهد. کس دیگری که دسترسی را مدیریت می‌کند تغییر را می‌دهد.

چرا ابرکاربر نمی‌تواند یک بسته را در پنل ادمین تغییر دهد؟

فایل ACCESS آن را تعریف می‌کند: در فایل تغییر داده می‌شود، و sync بعدی آن را برقرار می‌کند. اگر در پنل ادمین تغییر می‌کرد، sync آن را برمی‌گرداند.

می‌شود فیلدی را از بعضی پنهان کرد و به بعضی نشان داد؟

بله - یک فیلد محافظت‌شده، که در همه‌ی درها با یک مجوز خوانده و با مجوز دیگری نوشته می‌شود.

با مدل کاربر سفارشی کار می‌کند؟

بله. هر کلید خارجی به یک شخص settings.AUTH_USER_MODEL است، و کتابخانه از یک شخص فقط چیزی را می‌پرسد که کاربر Django جواب می‌دهد.

کدام پایگاه‌های داده؟

هر کدام که Django پشتیبانی می‌کند. تست‌ها روی PostgreSQL و SQLite اجرا می‌شوند.

پنل ادمین فارسی است؟

بله - صفحه‌ها، پیام‌ها و اسم مجوزهای کتابخانه به انگلیسی و فارسی‌اند، و به فارسی راست به چپ. برچسب‌های خود پروژه را catalogue خود پروژه ترجمه می‌کند، و اسم‌هایی را که موقع اجرا داده می‌شوند - یک بسته، یک نقش - clearance.translations.