fastfort buyrug‘i

To‘rtta buyruq — imzolash kaliti, birinchi hisob, deployni to‘xtatib turishi mumkin bo‘lgan konfiguratsiya hisoboti va admin nimalarni boshqarishi haqidagi ro‘yxat.

Mavjud v0.1.0

uv add "fastfort[cli]"

Loyihaga admin umuman ishlashi uchun to‘rtta narsa kerak: maxfiy kalit, tizimga kirish uchun birinchi hisob, konfiguratsiya to‘g‘riligini tekshirish usuli va nimalar ro‘yxatga olinganini ko‘rish usuli. Dastlabki ikkitasisiz yangi o‘rnatilgan tizimdan alohida skript yozmasdan foydalanib bo‘lmaydi.

--app

Loyihangizga murojaat qiladigan har bir buyruq shu parametrni qabul qiladi:

uv run fastfort check --app main:fort

module:attribute — FastFort obyekti qayerda joylashganini bildiradi. U import qilinishi mumkin, chunki main.py faylingiz uni modul darajasida yaratadi.

generate-secret

uv run fastfort generate-secret
uv run fastfort generate-secret --export     # FASTFORT_SECRET_KEY=…
uv run fastfort generate-secret --length 64

Faqat ekranga chiqariladi — boshqa hech narsa. Hech qachon faylga yozilmaydi. Vosita diskka yozib qo‘ygan sir — bu ertami-kechmi commitga tushib qoladigan sirdir.

FastFortSettingsda standart secret_key yo‘q, chunki uni o‘zi bilan birga taqdim etadigan freymvork qandaydir deployning aynan shu kalit bilan ishlashini kafolatlaydi. Validator, bundan tashqari, to‘ldirilgan andozani, 32 belgidan qisqa har qanday qiymatni va 8 tadan kam noyob belgidan iborat qiymatlarni rad etadi.

createsuperuser

# Interactive
uv run fastfort createsuperuser --app main:fort

# CI
FF_PASSWORD='…' uv run fastfort createsuperuser \
    --app main:fort \
    --identity you@example.com \
    --password-env FF_PASSWORD \
    --no-input

--password emas, --password-env: argument sifatida uzatilgan parol shell tarixida va ps buyrug‘i chiqishida ko‘rinib turadi. --passwordni interaktiv tarzda uzatganda shu haqda ogohlantirish chiqariladi.

Buyruq parolni auth.password_min_length va keng tarqalgan parollar ro‘yxatiga solishtirib tekshiradi, takrorlangan identifikatorni rad etadi va faqat spesifikatsiya tahrirlanadigan deb belgilagan maydonlarga yozadi — shuning uchun foydalanuvchi modelida besh odatiy ustundan birining yo‘qligi xatolikka olib kelmaydi, ortiqcha kalit shunchaki e’tiborsiz qoldiriladi.

check

uv run fastfort check --app main:fort
uv run fastfort check --app main:fort --deploy

Birinchi muammoda to‘xtab qolish o‘rniga barcha muammolarni yig‘adi va nolga teng bo‘lmagan kod bilan yakunlanadi — shu tufayli u deployni to‘xtatib turishi mumkin:

Fastfort Freight · 17 model(s)
warn  debug=True exposes tracebacks and internal state. Set FASTFORT_DEBUG=false.
warn  security.cookie_secure=False sends the session cookie over plain HTTP.
      Set FASTFORT_SECURITY__COOKIE_SECURE=true and serve over HTTPS.
warn  auth.access_token_ttl is 7200s. A leaked access token stays valid that
      long; 900s is the recommended ceiling.

3 problem(s) found.

--deploy bo‘lmasa, faqat ulanishlar tekshiriladi: yetishmayotgan backend, yetishmayotgan foydalanuvchi modeli, backend ishlay olmaydigan model, bo‘sh reestr. Bu flag bilan esa — production uchun tekshiruvlar ham qo‘shiladi.

- name: Configuration check
  run: uv run fastfort check --app main:fort --deploy
  env:
    FASTFORT_SECRET_KEY: ${{ secrets.FASTFORT_SECRET_KEY }}
    FASTFORT_DEBUG: "false"

registered-models

uv run fastfort registered-models --app main:fort
Accounts
  accounts.user                app.models.accounts.User
                               /admin/accounts.user/
  accounts.role                app.models.accounts.Role
                               /admin/accounts.role/

Catalog
  catalog.product              app.models.catalog.Product
                               /admin/catalog.product/

Admin nimalarni boshqarayotgani, har bir model qayerda joylashgani va har bir sahifaning URL manzilini ko‘rsatadi. autodiscover kutganingizni topdimi yoki yo‘qmi — buni bilish uchun foydali.

version

uv run fastfort version

Ro‘yxatga olish — aniq yoki avtomatik aniqlash orqali

fort.include_admin("app.admin")           # named; an import error names the module
fort.autodiscover("app")                  # walks for every app/**/admin.py

autodiscover nimani import qilgan bo‘lsa, o‘shani qaytaradi, registered-models esa shu natijani chiqaradi — shunday qilib nima sodir bo‘lgani doim ko‘rinib turadi, sehr emas. Import paytida istisno tashlaydigan modullar yashirilmaydi.