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

دستورهای مدیریتی

clearance_sync

پایگاه داده را وادار می‌کند همان چیزی را داشته باشد که فایل ACCESS اعلام می‌کند.

python manage.py clearance_sync --dry-run    # what would change, writing nothing
python manage.py clearance_sync --check      # in CI: fail when the database differs
python manage.py clearance_sync              # apply it, and say what changed
گزینه چه می‌کند
بدون گزینه همه‌ی تغییرها را فهرست می‌کند، و بعد در یک تراکنش اعمالشان می‌کند
--dry-run همه‌ی تغییرها را فهرست می‌کند و چیزی نمی‌نویسد
--check همه‌ی تغییرها را فهرست می‌کند و اگر یکی باشد خطا می‌دهد - برای CI

--dry-run و --check با هم داده نمی‌شوند. هر تغییر یک خط است: + ساخته‌شده، ~ تغییرکرده، - حذف‌شده، با اینکه درباره‌ی چیست.

بدون تغییر دادن چیزی خطا می‌دهد:

  • وقتی CLEARANCE['ACCESS'] فایلی را نام نمی‌برد، یا فایل خوانده نمی‌شود؛
  • وقتی فایل نمی‌تواند اعمال شود - مجوز، دامنه یا بسته‌ای که وجود ندارد؛
  • وقتی قانون‌های ایمنی ردش می‌کنند - syncی که کسی را برای مدیریت دسترسی باقی نگذارد.

با SYNC_ON_MIGRATE، در پایان هر migrate رو به جلو یک بار اجرا می‌شود.

clearance_check

می‌گوید پایگاه داده چه چیزی دارد که دسترسی‌ای نمی‌دهد، یا شاید منظور نبوده - چیزی که هیچ بررسی سیستمی‌ای نمی‌بیند، چون در ردیف‌هاست، نه در کد.

python manage.py clearance_check

خطاها دستور را ناموفق می‌کنند - هر کدام چیزی است که برای دادن دسترسی ساخته شده و حالا، بی‌صدا، هیچ دسترسی‌ای نمی‌دهد:

یافته چیست
broken_rule دامنه‌ی قانونی‌ای که دیگر درست درنمی‌آید - فیلدش رفته، یا از آن به بعد محافظت شده. به هیچ ردیفی نمی‌رسد
broken_status_action اکشن وضعیتی که فیلدش رفته، یا دیگر آن مقدارها را ندارد
lost_scope مجوزی که دامنه‌اش را مدلش دیگر ندارد. به هیچ ردیفی نمی‌رسد

هشدارها بدون ناموفق کردن دستور فهرست می‌شوند - هر کدام چیزی است که شاید منظور نبوده:

یافته چیست
scope_needed مجوزی بدون دامنه، روی مدلی که پیش‌فرضش به هیچ ردیفی نمی‌رسد
unaccounted_permission مجوزی که هیچ مدل، فیلد، اکشن وضعیت یا کدی توضیحش نمی‌دهد - اکشنی که از کد رفته، یا مجوزی که با دست ساخته شده. کاری نمی‌کند

با --verbosity 2، می‌گوید چند مجوز را هیچ کس ندارد. وقتی چیزی پیدا نشود، می‌گوید Nothing is wrong. صفحه‌ی نمای کلی پنل ادمین همین یافته‌ها را نشان می‌دهد.

می‌تواند در CI کنار check بایستد:

python manage.py check && python manage.py clearance_check