Carbonio CE: хранение пароля ящика аптеки (шифрованно)

Вариант А — пароль ящика хранится обратимо-зашифрованным, чтобы показать
заведующему для входа:

- Pharmacy.carbonio_password (EncryptedCharField) — шифруется в БД
- sync_service при создании ящика генерирует пароль, отдаёт его в Carbonio
  и сохраняет свою зашифрованную копию; на update-пути пароль не трогается
- Пароль виден в админке аптеки (readonly, расшифрованный) — вкладка Carbonio
- 2 теста (мок CarbonioService): пароль сохранён, совпадает с отданным в
  Carbonio, в БД лежит шифртекстом; update не перетирает пароль

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 10:29:40 +03:00
parent 3be444b05e
commit 01f0c6f002
5 changed files with 100 additions and 10 deletions
+4 -3
View File
@@ -267,7 +267,7 @@ class PharmacyAdmin(ModelAdmin, ImportExportModelAdmin):
'address', 'employees_count_display', 'license_status_display',
'is_active', 'created_at', 'updated_at',
'carbonio_account_id', 'carbonio_sync_status', 'carbonio_last_sync',
'carbonio_sync_error',
'carbonio_sync_error', 'carbonio_password',
]
fieldsets = (
@@ -309,8 +309,9 @@ class PharmacyAdmin(ModelAdmin, ImportExportModelAdmin):
(_('Почта Carbonio'), {
'classes': ('tab',),
'fields': (
'carbonio_sync_enabled', 'carbonio_email', 'carbonio_account_id',
'carbonio_sync_status', 'carbonio_last_sync', 'carbonio_sync_error',
'carbonio_sync_enabled', 'carbonio_email', 'carbonio_password',
'carbonio_account_id', 'carbonio_sync_status', 'carbonio_last_sync',
'carbonio_sync_error',
),
'description': _('Пусто в «Почта Carbonio» — адрес сгенерируется как '
'<префикс организации><номер>@домен. Можно задать вручную.'),