locations: недостающие модули области доступа + гейт reports
Делает HEAD целостным: коммит 5366799 уже импортировал эти файлы, но они
не были добавлены в git (свежий checkout падал с ImportError, а migrate не
создавал таблицу GroupLocationAccess).
- core/location_access.py: область данных (accessible_pharmacies/locations,
scoped_queryset/employees, has_all_locations) — fail-closed
- apps/locations/models/access.py + миграция 0014: GroupLocationAccess,
право locations.view_all_locations
- core/tests_location_access.py: 15 сценариев scoping
- apps/reports/*: снятие лишнего гейта has_all_locations с IT-отчёта отдела
(руководитель не обязан иметь доступ ко всей сети) + тест
- apps/rro/tests: чужая аптека теперь 404 (единая область доступа), а не
«200 с урезанными панелями» — под новую модель
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+5
-11
@@ -183,18 +183,12 @@ class CashRegisterPortalTests(TestCase):
|
||||
session = self.client.session
|
||||
session['2fa_verified'] = True
|
||||
session.save()
|
||||
# Чужая аптека вне области доступа: карточка недоступна целиком (404),
|
||||
# операционные данные (РРО и т.п.) не утекают.
|
||||
resp = self.client.get(f'/pharmacies/{self.pharmacy.pk}/', HTTP_HX_REQUEST='true')
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertNotContains(resp, 'FN-PORTAL-1')
|
||||
self.assertNotContains(resp, 'ph-panel-rro')
|
||||
self.assertFalse(resp.context['can_view_ops'])
|
||||
self.assertEqual(resp.context['staff'], [])
|
||||
self.assertEqual(resp.context['equipment'], [])
|
||||
self.assertEqual(resp.context['internet_contracts'], [])
|
||||
self.assertEqual(resp.context['utility_readings'], [])
|
||||
self.assertNotContains(resp, 'ph-panel-equipment')
|
||||
self.assertNotContains(resp, 'ph-panel-internet')
|
||||
self.assertNotContains(resp, 'ph-panel-utilities')
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
self.assertNotContains(resp, 'FN-PORTAL-1', status_code=404)
|
||||
self.assertNotContains(resp, 'ph-panel-rro', status_code=404)
|
||||
|
||||
|
||||
class ManagerRroScopeTests(TestCase):
|
||||
|
||||
Reference in New Issue
Block a user