GeoIP is functional
This commit is contained in:
@@ -111,7 +111,7 @@ class ExternalDBSettingsAdmin(admin.ModelAdmin):
|
|||||||
|
|
||||||
@admin.register(UserActivityLog)
|
@admin.register(UserActivityLog)
|
||||||
class UserActivityLogAdmin(admin.ModelAdmin):
|
class UserActivityLogAdmin(admin.ModelAdmin):
|
||||||
list_display = ("id", "ip", 'get_location',"formatted_timestamp", "date_time", "page_id", "url_parameters", "page_url" ,"created", "page_title", "type", "hits")
|
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")
|
||||||
list_filter = ("page_title", "created")
|
list_filter = ("page_title", "created")
|
||||||
readonly_fields = ("created", "timestamp")
|
readonly_fields = ("created", "timestamp")
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ from django.db import models
|
|||||||
from hotels.models import Hotel
|
from hotels.models import Hotel
|
||||||
from hotels.models import Reservation
|
from hotels.models import Reservation
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
from geoip2.errors import AddressNotFoundError
|
||||||
|
from geoip2.database import Reader
|
||||||
|
from django.conf import settings
|
||||||
|
import logging
|
||||||
|
|
||||||
class UserActivityLog(models.Model):
|
class UserActivityLog(models.Model):
|
||||||
external_id = models.CharField(max_length=255, unique=True, verbose_name="Внешний ID", db_index=True)
|
external_id = models.CharField(max_length=255, unique=True, verbose_name="Внешний ID", db_index=True)
|
||||||
@@ -61,10 +65,23 @@ class UserActivityLog(models.Model):
|
|||||||
return "IP-адрес отсутствует"
|
return "IP-адрес отсутствует"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
geoip_reader = Reader(settings.GEOIP_PATH + '/GeoLite2-City.mmdb')
|
db_path = f"{settings.GEOIP_PATH}/GeoLite2-City.mmdb"
|
||||||
|
geoip_reader = Reader(db_path)
|
||||||
response = geoip_reader.city(self.ip)
|
response = geoip_reader.city(self.ip)
|
||||||
return f"{response.city.name}, {response.country.name}"
|
|
||||||
|
# Извлекаем город и страну на русском языке
|
||||||
|
city = response.city.names.get('ru', "Город неизвестен")
|
||||||
|
country = response.country.names.get('ru', "Страна неизвестна")
|
||||||
|
|
||||||
|
return f"{city}, {country}"
|
||||||
|
|
||||||
|
except AddressNotFoundError:
|
||||||
|
return "IP-адрес не найден в базе"
|
||||||
|
except FileNotFoundError:
|
||||||
|
logger.error(f"Файл базы данных GeoIP не найден по пути: {db_path}")
|
||||||
|
return "Файл базы данных GeoIP не найден"
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
logger.error(f"Ошибка при определении местоположения: {e}")
|
||||||
return "Местоположение недоступно"
|
return "Местоположение недоступно"
|
||||||
class ExternalDBSettings(models.Model):
|
class ExternalDBSettings(models.Model):
|
||||||
name = models.CharField(max_length=255, unique=True, help_text="Имя подключения для идентификации.")
|
name = models.CharField(max_length=255, unique=True, help_text="Имя подключения для идентификации.")
|
||||||
|
|||||||
7
var_clean.sh
Executable file
7
var_clean.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Получаем список всех снапов с ревизиями, фильтруем по статусу "disabled"
|
||||||
|
snap list --all | awk '/disabled/{print $1,$3}' | while read SNAP_NAME REVISION; do
|
||||||
|
echo "Удаляю $SNAP_NAME ревизию $REVISION..."
|
||||||
|
sudo snap remove "$SNAP_NAME" --revision="$REVISION"
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user