Colin Powell 3 лет назад
Родитель
Сommit
3fd6da9808
3 измененных файлов с 11 добавлено и 12 удалено
  1. 1 1
      games/models.py
  2. 1 1
      games/urls.py
  3. 9 10
      games/utils.py

+ 1 - 1
games/models.py

@@ -224,7 +224,7 @@ class Game(BaseModel):
         return f"{self.name} for {self.game_system}"
 
     def get_absolute_url(self):
-        return reverse("games:game_detail", args=[self.slug])
+        return reverse("games:game_detail", args=[self.slug, self.region])
 
     @property
     def rating_by_100(self) -> float:

+ 1 - 1
games/urls.py

@@ -51,7 +51,7 @@ urlpatterns = [
         name="gamecollection_list",
     ),
     path(
-        "<str:slug>/",
+        "<str:slug>-<str:region>/",
         views.GameDetail.as_view(),
         name="game_detail",
     ),

+ 9 - 10
games/utils.py

@@ -54,9 +54,17 @@ def import_gamelist_file_to_db_for_system(
     for game in games:
         name = game.find("name").text
         game_path = game.find("path").text.lower()
+        region = Game.Region.X.name
+
+        if any(us in game_path for us in REGION_KEYWORDS["US"]):
+            region = Game.Region.US.name
+        if any(jp in game_path for jp in REGION_KEYWORDS["JP"]):
+            region = Game.Region.JP.name
+        if any(eu in game_path for eu in REGION_KEYWORDS["EU"]):
+            region = Game.Region.EU.name
         try:
             obj, created = Game.objects.get_or_create(
-                name=name, game_system=game_system
+                name=name, game_system=game_system, region=region
             )
         except Game.MultipleObjectsReturned:
             logger.warning(
@@ -74,15 +82,6 @@ def import_gamelist_file_to_db_for_system(
         undub = game_path.lower() in UNDUB_KEYWORDS
         hack = game_path.lower() in HACK_KEYWORDS
 
-        region = Game.Region.X.name
-
-        if any(us in game_path for us in REGION_KEYWORDS["US"]):
-            region = Game.Region.US.name
-        if any(jp in game_path for jp in REGION_KEYWORDS["JP"]):
-            region = Game.Region.JP.name
-        if any(eu in game_path for eu in REGION_KEYWORDS["EU"]):
-            region = Game.Region.EU.name
-
         release_date_str = game.find("releasedate").text
         developer_str = game.find("developer").text
         publisher_str = game.find("publisher").text