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:
@@ -0,0 +1,14 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class GroupLocationAccess(models.Model):
|
||||
group = models.OneToOneField('auth.Group', on_delete=models.CASCADE, related_name='location_access', verbose_name=_('Группа'))
|
||||
locations = models.ManyToManyField('locations.Location', blank=True, related_name='location_access_groups', verbose_name=_('Доступные локации'), help_text=_('Дополняют свою локацию и закреплённые аптеки. Доступ к разделам выдаётся отдельно.'))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Область доступа группы')
|
||||
verbose_name_plural = _('Области доступа групп')
|
||||
|
||||
def __str__(self):
|
||||
return str(self.group)
|
||||
Reference in New Issue
Block a user