1
Fork 0

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_COUNTRY = "GeoIP.dat"
#GEOIP_CITY = "GeoIPCity.dat"
GEOIP_PATH = environ["GEOIP_PATH"]

View File

@ -7,7 +7,7 @@ class SignupAdmin(admin.ModelAdmin):
_all_fields = ["email", "created_at", "anonymized_ip", "user_agent"]
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"]
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):
email = models.EmailField()
@ -16,6 +17,14 @@ class Signup(models.Model):
def __str__(self):
return self.email
#def country(self):
# g = GeoIP2()
# return g.country(self.anonymized_ip)
def _country(self):
try:
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
];
geoip = pkgs.stdenv.mkDerivation {
name = geoip;
name = "geoip";
srcs = [geoip2-asn geoip2-city geoip2-country];
dontUnpack = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp ${geoip2-asn} $out/
cp ${geoip2-city} $out/
cp ${geoip2-country} $out/
cp ${geoip2-asn} $out/GeoLite2-ASN.mmdb
cp ${geoip2-city} $out/GeoLite2-City.mmdb
cp ${geoip2-country} $out/GeoLite2-Country.mmdb
'';
};
in {
devShells.default = pkgs.mkShell {
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
#GEOIP_PATH = "${geoip}";
GEOIP_PATH = "${geoip}";
packages = devDeps ++ [geoip];
};