diff --git a/home/__pycache__/views.cpython-313.pyc b/home/__pycache__/views.cpython-313.pyc index 681483b..f7ac9fb 100644 Binary files a/home/__pycache__/views.cpython-313.pyc and b/home/__pycache__/views.cpython-313.pyc differ diff --git a/home/templates/partials/novawow_players.html b/home/templates/partials/novawow_players.html index 3bdc8c2..5dbd7b7 100644 --- a/home/templates/partials/novawow_players.html +++ b/home/templates/partials/novawow_players.html @@ -4,551 +4,156 @@

Personajes - {{ server.name }}

-

La información de esta página se actualiza 1 vez al día automáticamente

+

La información de esta página se actualiza cada 5 minutos automáticamente

-

Personajes creados por clase

-
-
-
- - - - - - - - - - - - - - - - -
Total: 81330

Alianzas: 38864
Hordas: 42466
-
-
- - - - - - - - - - - - - - - - -
Total: 96653

Alianzas: 48027
Hordas: 48626
-
-
- - - - - - - - - - - - - - - - -
Total: 78977

Alianzas: 30116
Hordas: 48861
-
-
- - - - - - - - - - - - - - - - -
Total: 62207

Alianzas: 27424
Hordas: 34783
-
-
- - - - - - - - - - - - - - - - -
Total: 52155

Alianzas: 23715
Hordas: 28440
-
-
- - - - - - - - - - - - - - - - -
Total: 61145

Alianzas: 25117
Hordas: 36028
-
-
- - - - - - - - - - - - - - - - -
Total: 44359

Alianzas: 15615
Hordas: 28744
-
-
- - - - - - - - - - - - - - - - -
Total: 64815

Alianzas: 28326
Hordas: 36489
-
-
- - - - - - - - - - - - - - - - -
Total: 52705

Alianzas: 18121
Hordas: 34584
-
-
- - - - - - - - - - - - - - - - -
Total: 58315

Alianzas: 28540
Hordas: 29775
-
- - - - - - -
Personajes totales: 652661Personajes alianzas: 283865Personajes hordas: 368796
-
-
-
+

Personajes creados por clase

+
+ {% for data in classes_data %} +
+ + + + + + + + + + + + + + +
Total: {{ data.total }}

+ + Alianzas: {{ data.alliance }} +
+ + Hordas: {{ data.horde }} +
+
+ {% endfor %} +
+ +


-

Primeros del Reino - Nivel 80

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LogroPersonajeFecha
¡Primero del reino! Nivel 80Vitom21:06:20 11-08-2018
¡Primero del reino! Pícaro nivel 80Froxphil23:15:33 12-08-2018
¡Primero del reino! Guerrero nivel 80Tomyh18:02:27 12-08-2018
¡Primero del reino! Mago nivel 80Danndy14:08:35 14-08-2018
¡Primero del reino! C. de la M. nivel 80Shermine11:34:37 12-08-2018
¡Primero del reino! Cazador nivel 80Vitom21:06:20 11-08-2018
¡Primero del reino! Brujo nivel 80Dean22:47:57 12-08-2018
¡Primero del reino! Sacerdote nivel 80Nespheros05:05:37 13-08-2018
¡Primero del reino! Paladín nivel 80Renzo22:12:50 11-08-2018
¡Primero del reino! Druida nivel 80Dreikas04:45:27 13-08-2018
¡Primero del reino! Chamán nivel 80Jalh01:18:45 15-08-2018
¡Primero del reino! Gnomo nivel 80Shermine11:34:37 12-08-2018
¡Primero del reino! Elfo de sangre nivel 80Renzo22:12:50 11-08-2018
¡Primero del reino! Draenei nivel 80Hyrtael17:56:16 12-08-2018
¡Primero del reino! Enano nivel 80Hunkx12:53:40 19-08-2018
¡Primero del reino! Humano nivel 80Tomyh18:02:27 12-08-2018
¡Primero del reino! Elfo de la noche nivel 80Dreikas04:45:27 13-08-2018
¡Primero del reino! Orco nivel 80Vitom21:06:20 11-08-2018
¡Primero del reino! Tauren nivel 80Kael21:36:31 13-08-2018
¡Primero del reino! Trol nivel 80Capa00:28:26 15-08-2018
¡Primero del reino! No-muerto nivel 80Retaliated02:43:12 13-08-2018
-
-
+

Primeros del Reino - Nivel 80

+
+ + + + + + + + {% for achievement in first_realm_data %} + + + + + + {% endfor %} + +
LogroPersonajeFecha
+ + {{ achievement.achievement_name }} + {{ achievement.name }}{{ achievement.date }}
+
+ +


-

Top de logros

-
-

Los 10 jugadores con más logros

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NombreRazaClasePuntos de logros
Zeroz11500
Carlangas11350
Juanmaverick11220
Acolchado11170
Suku11045
Chamsky11030
Leyenda11020
Farandilqt10945
Diablo10925
Hermosito10760
-
-
+

Top de logros

+
+

Los 10 jugadores con más logros

+ + + + + + + + {% for player in players_with_achievements %} + + + + + + + {% endfor %} +
NombreRazaClasePuntos de logros
{{ player.name }}{{ player.achievement_points }}
+
+ +


-

Top de muertes con honor

-
-

Los 10 jugadores con más muertes con honor

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NombreRazaClaseTotal de muertesTotal de muertes hoy
Shimo391004261
Pesterson362495278
Gannikuss3164400
Blutengel273296358
Kheysi267510121
Keillath263755612
Makipala256404524
Descarga251601163
Shakary24802216
Criminal247483244
-
-
+

Top de muertes con honor

+
+

Los 10 jugadores con más muertes con honor

+ + + + + + + + + {% for player in players_with_kills %} + + + + + + + + {% endfor %} +
NombreRazaClaseTotal de muertesTotal de muertes hoy
{{ player.name }} + {{ player.total_kills }}{{ player.today_kills }}
+
+


-
-

Top de hermandades

-
-

Las 5 hermandades con más miembros

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NombreLíderFacciónMiembrosFecha de creación
<Guild Not Found>Maxshami420523-08-2023
<Honor y Gloria>Ravenschwert193026-07-2022
<Fearsome legion>Directora152606-01-2024
<Dragons>Dragonsaky130402-08-2024
<Casablanca Baby Gang>Fumapedrolos117615-07-2024
-
-
+
+

Top de hermandades

+
+

Las 5 hermandades con más miembros

+ + + + + + + + + + + + {% for guild in guilds %} + + + + + + + + {% endfor %} + +
NombreLíderFacciónMiembrosFecha de creación
<{{ guild.0 }}>{{ guild.1 }} + + {{ guild.3 }}{{ guild.4 }}
+
+
\ No newline at end of file diff --git a/home/views.py b/home/views.py index 30c353e..f6564f4 100644 --- a/home/views.py +++ b/home/views.py @@ -853,6 +853,95 @@ def help_view(request): # Si está logueado, renderizar la página de ayuda return render(request, 'community/help.html') +def get_race_icon(race): + race_icons = { + 1: "human-male", + 2: "orc-male", + 3: "dwarf-male", + 4: "night-elf-male", + 5: "undead-male", + 6: "tauren-male", + 7: "gnome-male", + 8: "troll-male", + 9: "goblin-male", + 10: "blood-elf-male", + 11: "draenei-male" + } + return race_icons.get(race, "unknown") + + +def get_race_iconss(race): + race_iconss = { + 1: "human", + 2: "orc", + 3: "dwarf", + 4: "night-elf", + 5: "undead", + 6: "tauren", + 7: "gnome", + 8: "troll", + 9: "goblin", + 10: "blood-elf", + 11: "draenei" + } + return race_iconss.get(race, "unknown") + +def get_class_icon(char_class): + class_icons = { + 1: "warrior", + 2: "paladin", + 3: "hunter", + 4: "rogue", + 5: "priest", + 6: "death-knight", + 7: "shaman", + 8: "mage", + 9: "warlock", + 11: "druid" + } + return class_icons.get(char_class, "unknown") + + +def get_class_name(char_class): + names = { + 1: "Guerrero", + 2: "Paladín", + 3: "Cazador", + 4: "Pícaro", + 5: "Sacerdote", + 6: "Caballero de la Muerte", + 7: "Chamán", + 8: "Mago", + 9: "Brujo", + 11: "Druida" + } + return names.get(char_class, "Desconocido") + +def get_achievement_name(achievement_id): + achievement_names = { + 457: "¡Primero del reino! Nivel 80", + 458: "¡Primero del reino! Pícaro nivel 80", + 463: "¡Primero del reino! Brujo nivel 80", + 461: "¡Primero del reino! Caballero de la Muerte nivel 80", + 462: "¡Primero del reino! Cazador nivel 80", + 467: "¡Primero del reino! Chamán nivel 80", + 466: "¡Primero del reino! Druida nivel 80", + 459: "¡Primero del reino! Guerrero nivel 80", + 460: "¡Primero del reino! Mago nivel 80", + 465: "¡Primero del reino! Paladín nivel 80", + 464: "¡Primero del reino! Sacerdote nivel 80", + 1408: "¡Primero del reino! Humano nivel 80", + 1407: "¡Primero del reino! Enano nivel 80", + 1409: "¡Primero del reino! Elfo de la noche nivel 80", + 1404: "¡Primero del reino! Gnomo nivel 80", + 1406: "¡Primero del reino! Draenei nivel 80", + 1410: "¡Primero del reino! Orco nivel 80", + 1413: "¡Primero del reino! Renegado nivel 80", + 1411: "¡Primero del reino! Tauren nivel 80", + 1412: "¡Primero del reino! Trol nivel 80", + 1405: "¡Primero del reino! Elfo de sangre nivel 80" + } + return achievement_names.get(achievement_id, "Logro Desconocido") def novawow_players_view(request): @@ -860,5 +949,140 @@ def novawow_players_view(request): if 'username' not in request.session: return redirect('/login') - # Si está logueado, renderizar la plantilla - return render(request, 'realms/novawow_players.html') \ No newline at end of file + # Obtener las 5 hermandades con más miembros + with connections['acore_characters'].cursor() as cursor: + guild_query = """ + SELECT g.name, c.name AS leader, + CASE WHEN c.race IN (1, 3, 4, 7, 11) THEN 'alliance' ELSE 'horde' END AS faction, + COUNT(gm.guid) AS members, + g.createdate + FROM guild g + JOIN characters c ON c.guid = g.leaderguid + LEFT JOIN guild_member gm ON gm.guildid = g.guildid + GROUP BY g.guildid + ORDER BY members DESC + LIMIT 5 + """ + cursor.execute(guild_query) + guilds = cursor.fetchall() + + formatted_guilds = [ + (name, leader, faction, members, datetime.fromtimestamp(createdate).strftime('%d-%m-%Y')) + for name, leader, faction, members, createdate in guilds + ] + + # Obtener el top 10 de jugadores con más muertes con honor + with connections['acore_characters'].cursor() as cursor: + kills_query = """ + SELECT name, race, class, totalKills, todayKills + FROM characters + ORDER BY totalKills DESC + LIMIT 10 + """ + cursor.execute(kills_query) + top_kills = cursor.fetchall() + + players_with_kills = [ + { + 'name': name, + 'race_icon': f"big-{get_race_icon(race)}", + 'class_icon': f"{get_class_icon(char_class)}-medium", + 'total_kills': total_kills, + 'today_kills': today_kills + } + for name, race, char_class, total_kills, today_kills in top_kills + ] + + # Obtener personajes por clase y facción + with connections['acore_characters'].cursor() as cursor: + class_faction_query = """ + SELECT class, + SUM(CASE WHEN race IN (1, 3, 4, 7, 11) THEN 1 ELSE 0 END) AS alliance_count, + SUM(CASE WHEN race IN (2, 5, 6, 8, 10) THEN 1 ELSE 0 END) AS horde_count, + COUNT(*) AS total_count + FROM characters + GROUP BY class + """ + cursor.execute(class_faction_query) + class_faction_data = cursor.fetchall() + + classes_data = [ + { + 'class_icon': f"{get_class_icon(char_class)}-chest", + 'class_name': get_class_name(char_class), + 'total': total_count, + 'alliance': alliance_count, + 'horde': horde_count + } + for char_class, alliance_count, horde_count, total_count in class_faction_data + ] + + # Obtener el top 10 de jugadores con más logros + with connections['acore_characters'].cursor() as cursor: + achievements_query = """ + SELECT c.name, c.race, c.class, MAX(cap.counter) AS achievement_points + FROM character_achievement_progress cap + JOIN characters c ON cap.guid = c.guid + GROUP BY c.guid + ORDER BY achievement_points DESC + LIMIT 10 + """ + cursor.execute(achievements_query) + top_achievements = cursor.fetchall() + + players_with_achievements = [ + { + 'name': name, + 'race_icon': f"big-{get_race_icon(race)}", + 'class_icon': f"{get_class_icon(char_class)}-medium", + 'achievement_points': achievement_points + } + for name, race, char_class, achievement_points in top_achievements + ] + + # Obtener logros "Primeros del Reino" + with connections['acore_characters'].cursor() as cursor: + first_realm_query = """ + SELECT ca.achievement, c.name, c.race, c.class, c.gender, ca.date + FROM character_achievement ca + JOIN characters c ON ca.guid = c.guid + WHERE ca.achievement IN ( + 457, 458, 463, 461, 462, 467, 466, 459, 460, 465, 464, + 1408, 1407, 1409, 1404, 1406, 1410, 1413, 1411, 1412, 1405 + ) + ORDER BY ca.date ASC + """ + cursor.execute(first_realm_query) + first_realm_achievements = cursor.fetchall() + + first_realm_data = [] + for achievement in first_realm_achievements: + achievement_id, name, race, char_class, gender, date = achievement + formatted_date = datetime.fromtimestamp(date).strftime('%H:%M:%S %d-%m-%Y') + + # Determinar el ícono correcto basado en el logro + if achievement_id == 457: + icon_url = f"{settings.URL_PRINCIPAL}/static/nw-themes/nw-ryu/nw-images/nw-icons/achievement-level-80.jpg" + elif achievement_id in [1408, 1407, 1409, 1404, 1406, 1410, 1413, 1411, 1412, 1405]: + race_iconss = get_race_iconss(race) + gender_suffix = "male" if gender == 0 else "female" + icon_url = f"{settings.URL_PRINCIPAL}/static/nw-themes/nw-ryu/nw-images/nw-races/big-{race_iconss}-{gender_suffix}.webp" + else: + icon_url = f"{settings.URL_PRINCIPAL}/static/nw-themes/nw-ryu/nw-images/nw-classes/{get_class_icon(char_class)}-medium.jpg" + + first_realm_data.append({ + 'achievement_name': get_achievement_name(achievement_id), + 'name': name, + 'race_iconss': f"big-{get_race_iconss(race)}", + 'icon_url': icon_url, + 'date': formatted_date + }) + + # Renderizar la plantilla con los datos obtenidos + return render(request, 'realms/novawow_players.html', { + 'guilds': formatted_guilds, + 'players_with_kills': players_with_kills, + 'players_with_achievements': players_with_achievements, + 'classes_data': classes_data, + 'first_realm_data': first_realm_data + })