Implement exchange imports and frontend reporting APIs
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m50s
CI/CD Pipeline / Run Tests (push) Successful in 3m57s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped

This commit is contained in:
2026-04-07 16:31:04 +02:00
parent 76a86d0b20
commit 697ecb7d1c
155 changed files with 5604 additions and 346 deletions

View File

@@ -0,0 +1,9 @@
{% extends "admin/change_list.html" %}
{% load admin_urls %}
{% block object-tools-items %}
<a href="{{ upload_package_url }}" class="btn btn-primary mr-2">
Обмен реестров и данных организаций
</a>
{{ block.super }}
{% endblock %}

View File

@@ -0,0 +1,54 @@
{% extends "admin/base_site.html" %}
{% block breadcrumbs %}
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{% url 'admin:index' %}">Главная</a></li>
<li class="breadcrumb-item"><a href="{{ changelist_url }}">Импорты обменных пакетов</a></li>
<li class="breadcrumb-item active">Обмен данными</li>
</ol>
{% endblock %}
{% block content_title %}Обмен реестров и данных организаций{% endblock %}
{% block content %}
<div class="row">
<div class="col-12 col-lg-8">
<div class="card">
<div class="card-body">
<p class="text-muted">
Загрузите единый exchange-пакет с реестрами и данными организаций.
Импорт выполняется синхронно и использует тот же pipeline, что API и CLI.
</p>
<p class="text-muted">
Всего импортов: {{ imports_count }}, успешных: {{ successful_imports_count }}.
Организаций в справочнике: {{ organizations_count }}.
</p>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<label for="id_file">Пакет обмена</label>
<input
type="file"
name="file"
id="id_file"
class="form-control"
accept=".zip,.bin"
required
/>
<small class="form-text text-muted">
Поддерживаются архивы <code>.zip</code> и контейнеры <code>.bin</code>.
Для расшифровки используется <code>EXCHANGE_SHARED_TOKEN</code>.
</small>
</div>
<div class="d-flex align-items-center">
<input type="submit" value="Импортировать" class="btn btn-primary mr-2" />
<a href="{{ changelist_url }}" class="btn btn-outline-secondary">Отмена</a>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}