synclog finshed

RealtyCalendar import finished (bugfixing remains)
This commit is contained in:
2024-12-24 21:34:56 +09:00
parent 12e99ca5c2
commit 4a82b39146
4 changed files with 124 additions and 183 deletions

View File

@@ -112,7 +112,7 @@ class ExternalDBSettingsAdmin(admin.ModelAdmin):
@admin.register(UserActivityLog)
class UserActivityLogAdmin(admin.ModelAdmin):
list_display = ("id", 'get_location',"formatted_timestamp", "date_time", "page_id", "url_parameters", "page_url" ,"created", "page_title", "type", "hits")
search_fields = ("page_title", "url_parameters")
search_fields = ("page_title", "url_parameters", "page_title")
list_filter = ("page_title", "created")
readonly_fields = ("created", "timestamp")
@@ -204,16 +204,30 @@ class UserActivityLogAdmin(admin.ModelAdmin):
@admin.register(SyncLog)
class SyncLogAdmin(admin.ModelAdmin):
change_list_template = "antifroud/admin/sync_log.html"
list_display =['id', 'hotel', 'created', 'recieved_records', 'processed_records']
search_fields = ['id', 'hotel', 'created', 'recieved_records', 'processed_records']
list_filter = ['id', 'hotel', 'created', 'recieved_records', 'processed_records']
change_list_template = "antifroud/admin/sync_log.html" # Путь к вашему кастомному шаблону
list_display = ['id', 'hotel', 'created', 'recieved_records', 'processed_records']
search_fields = ['id', 'hotel__name', 'recieved_records', 'processed_records']
list_filter = ['hotel', 'created']
class Meta:
model = SyncLog
fields = ['hotel', 'recieved_records', 'processed_records']
def changelist_view(self, request, extra_context=None):
"""
Добавляет фильтрацию по отелям в шаблон.
"""
extra_context = extra_context or {}
# Получаем выбранный фильтр отеля из GET-параметров
hotel_id = request.GET.get('hotel')
hotels = Hotel.objects.all()
sync_logs = SyncLog.objects.all()
if hotel_id:
sync_logs = sync_logs.filter(hotel_id=hotel_id)
extra_context['sync_logs'] = sync_logs
extra_context['hotels'] = hotels
extra_context['selected_hotel'] = hotel_id # Чтобы отобразить выбранный отель
return super().changelist_view(request, extra_context=extra_context)
@admin.register(ViolationLog)
class ViolationLogAdmin(admin.ModelAdmin):
list_display = ['id', 'hotel', 'room_number' , 'hits', 'created_at', 'violation_type', 'violation_details', 'detected_at']

View File

@@ -1,7 +1,6 @@
{% extends "admin/change_list.html" %}
{% block content %}
<div class="container-fluid">
<div class="row mt-4">
<div class="col">
<div class="card shadow-sm mb-2 db-graph">
@@ -9,53 +8,22 @@
<h6 class="text-white m-0 font-md">Журнал синхронизации</h6>
</div>
<div class="card-body">
<form method="post" action="{% url 'antifroud:sync_log_create' %}">
{% csrf_token %}
<div class="form-row">
<div class="col-md-9 col-xl-9">
<div class="box-bg">
<div class="form-row">
<div class="col-md-2 col-xl-2 align-self-center font-md text-dark-blue">
<label class="col-form-label p-0" for="hotel-id"><strong>Отель:</strong></label>
</div>
<div class="col-md-4 col-xl-3">
<div class="form-group mb-0">
<select class="custom-select custom-select-sm font-sm" name="hotel" id="hotel-id">
<option value="">--Выберите Отель --</option>
{% for hotel in hotels %}
<option value="{{ hotel.id }}">{{ hotel.name }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-xl-3">
<div class="box-bg">
<div class="text-dark form-row">
<div class="col-xl-5 offset-xl-0 align-self-center">
<h6 class="mb-0 font-sm">Полученные записи:</h6>
</div>
<div class="col-xl-7 offset-xl-0 text-right align-self-center">
<div class="form-group mb-1">
<input class="form-control form-control-sm form-control font-sm" type="number" name="received_records" required />
</div>
</div>
<div class="col-xl-5 offset-xl-0 align-self-center">
<h6 class="mb-0 font-sm">Обработанные записи:</h6>
</div>
<div class="col-xl-7 offset-xl-0 text-right align-self-center">
<div class="form-group mb-1">
<input class="form-control form-control-sm form-control font-sm" type="number" name="processed_records" required />
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Форма фильтрации по отелям -->
<form method="get" class="form-inline mb-3">
<label for="hotel-filter" class="mr-2">Фильтр по отелям:</label>
<select name="hotel" id="hotel-filter" class="form-control mr-2">
<option value="">-- Все отели --</option>
{% for hotel in hotels %}
<option value="{{ hotel.id }}" {% if hotel.id|stringformat:"s" == selected_hotel %}selected{% endif %}>
{{ hotel.name }}
</option>
{% endfor %}
</select>
<button type="submit" class="btn btn-primary">Применить</button>
</form>
<!-- Список существующих журналов синхронизации -->
<div class="table-responsive tbl-wfx mt-1 kot-table">
<table class="table table-sm">
@@ -63,10 +31,8 @@
<tr class="text-dark-blue">
<th>#</th>
<th>Отель</th>
<th>ID бронирования</th>
<th> Дата синхронизации</th>
<th>Обработанные записи</th>
<th>Полученные записи</th>
<th>Создан</th>
</tr>
</thead>
<tbody>
@@ -74,14 +40,12 @@
<tr>
<td>{{ log.id }}</td>
<td>{{ log.hotel.name }}</td>
<td>{{ log.reservation_id }}</td>
<td>{{ log.processed_records }}</td>
<td>{{ log.recieved_records }}</td>
<td>{{ log.created }}</td>
<td>{{ log.processed_records }}</td>
</tr>
{% empty %}
<tr>
<td colspan="6" class="text-center">Нет журналов.</td>
<td colspan="5" class="text-center">Нет записей.</td>
</tr>
{% endfor %}
</tbody>
@@ -93,4 +57,4 @@
</div>
</div>
{% endblock %}
{% endblock %}