1

fix geoip

This commit is contained in:
Motiejus Jakštys 2024-01-12 01:31:38 +02:00
parent 56fa177dd4
commit 959c3de520
4 changed files with 22 additions and 15 deletions

View File

@ -126,6 +126,4 @@ LOGGING = {
}, },
} }
#GEOIP_PATH = environ["GEOIP_PATH"] GEOIP_PATH = environ["GEOIP_PATH"]
#GEOIP_COUNTRY = "GeoIP.dat"
#GEOIP_CITY = "GeoIPCity.dat"

View File

@ -7,7 +7,7 @@ class SignupAdmin(admin.ModelAdmin):
_all_fields = ["email", "created_at", "anonymized_ip", "user_agent"] _all_fields = ["email", "created_at", "anonymized_ip", "user_agent"]
date_hierarchy = "created_at" date_hierarchy = "created_at"
list_display = ["email", "created_at", "anonymized_ip", "user_agent"]# + ["country"] list_display = ["email", "created_at", "anonymized_ip", "user_agent"] + ["country_code"]
list_filter = ["email", "user_agent"] list_filter = ["email", "user_agent"]
ordering = ["created_at"] ordering = ["created_at"]
readonly_fields = _all_fields readonly_fields = _all_fields + ["country_name"]

View File

@ -1,6 +1,7 @@
from django.db import models import geoip2
#from django.contrib.gis.geoip2 import GeoIP2 from django.db import models
from django.contrib.gis.geoip2 import GeoIP2
class Signup(models.Model): class Signup(models.Model):
email = models.EmailField() email = models.EmailField()
@ -16,6 +17,14 @@ class Signup(models.Model):
def __str__(self): def __str__(self):
return self.email return self.email
#def country(self): def _country(self):
# g = GeoIP2() try:
# return g.country(self.anonymized_ip) return GeoIP2().country(self.anonymized_ip)
except geoip2.errors.AddressNotFoundError:
return {}
def country_name(self):
return self._country().get("country_name", "??")
def country_code(self):
return self._country().get("country_code", "??")

View File

@ -41,21 +41,21 @@
libmaxminddb libmaxminddb
]; ];
geoip = pkgs.stdenv.mkDerivation { geoip = pkgs.stdenv.mkDerivation {
name = geoip; name = "geoip";
srcs = [geoip2-asn geoip2-city geoip2-country]; srcs = [geoip2-asn geoip2-city geoip2-country];
dontUnpack = true; dontUnpack = true;
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p $out mkdir -p $out
cp ${geoip2-asn} $out/ cp ${geoip2-asn} $out/GeoLite2-ASN.mmdb
cp ${geoip2-city} $out/ cp ${geoip2-city} $out/GeoLite2-City.mmdb
cp ${geoip2-country} $out/ cp ${geoip2-country} $out/GeoLite2-Country.mmdb
''; '';
}; };
in { in {
devShells.default = pkgs.mkShell { devShells.default = pkgs.mkShell {
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive"; LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
#GEOIP_PATH = "${geoip}"; GEOIP_PATH = "${geoip}";
packages = devDeps ++ [geoip]; packages = devDeps ++ [geoip];
}; };