Files
NightSpire/home/views/pages.py
T
Inna d1becaaf14 Corrige a 3.4.3 (WotLK Classic + bnet) textos y lógica de expansión
- Plantillas: los textos hardcodeados "WotLK 3.3.5a" pasan a "3.4.3" (title,
  description, keywords, og:* en head.html; encabezado de la portada).
- Expansión: se centraliza en ServerSelection (helper expansion_from_gamebuild
  + propiedad .expansion) y se reconoce WoW Classic: WotLK Classic 3.4.x
  (~44832–51536, p.ej. 3.4.3=51505) además de 3.3.5a (12340), y Cataclysm
  Classic 4.4.x además de 4.3.4 (15595). Se elimina la lógica duplicada de los
  4 sitios (api, context_processor, pages x2) que solo mapeaban 12340->WotLK.

El ServerSelection de Nova WoW queda en build 51505 (3.4.3) -> etiqueta WotLK,
puerto 1119 (bnetserver).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 20:31:40 +00:00

93 lines
3.7 KiB
Python

from ._base import *
def get_online_characters_count():
# Si la BD de personajes (AzerothCore) aún no está disponible/poblada,
# no rompemos la portada: devolvemos 0 como hace el context_processor.
try:
with connections['acore_characters'].cursor() as cursor:
cursor.execute("SELECT COUNT(*) FROM characters WHERE online = 1")
result = cursor.fetchone()
return result[0] if result else 0
except Exception as e:
logger.warning("No se pudo contar personajes en línea: %s", e)
return 0
def check_server_status(host, port):
if not host or host == "N/A":
return False
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
try:
s.connect((host, port))
s.close()
return True
except (socket.timeout, ConnectionRefusedError, socket.gaierror):
return False
def home_view(request):
noticias = Noticia.objects.order_by('-fecha_publicacion')[:50]
online_characters = get_online_characters_count()
server_selection = ServerSelection.objects.first()
status = check_server_status(server_selection.address, server_selection.port) if server_selection else None
game_version = server_selection.expansion if server_selection else 'Unknown'
context = {
'noticias': noticias,
'server': server_selection,
'status': 'Online' if status else 'Offline',
'expansion': game_version,
'online_characters': online_characters,
}
return render(request, 'home/home.html', context)
def download_client_view(request):
download_content = DownloadClientPage.objects.first()
categorias = ClienteCategoria.objects.all()
return render(request, 'download/download_client.html', {
'download_content': download_content,
'categorias': categorias,
})
def download_addons_view(request):
return redirect("https://foro.novawow.com/files/")
def content_creators_view(request):
content_creator = ContentCreator.objects.first()
return render(request, 'community/content_creators.html', {'content_creator': content_creator})
def server_status_view(request):
server_selection = ServerSelection.objects.first()
if server_selection:
status = check_server_status(server_selection.address, server_selection.port)
game_version = server_selection.expansion
else:
status = None
game_version = None
return render(request, 'server_status/server_status.html', {
'server': server_selection,
'status': 'Online' if status else 'Offline',
'game_version': game_version,
})
def novawow_realm_view(request):
return render(request, 'realms/novawow_realm.html')
def contact_us_view(request):
return render(request, 'contact/contact_us.html')
def legal_notice_view(request):
return render(request, 'legal/legal_notice.html')
def maintenance_view(request):
return render(request, 'maintenance/maintenance.html')
def not_found(request, exception=None):
return render(request, '404.html', status=404)
def terms_and_conditions_view(request):
return render(request, 'legal/terms_and_conditions.html')
def privacy_policy_view(request):
return render(request, 'legal/privacy_policy.html')
def refund_policy_view(request):
return render(request, 'legal/refund_policy.html')
def cookies_view(request):
return render(request, 'legal/cookies.html')
def help_view(request):
# Verificar si el usuario está logueado
if 'username' not in request.session:
# Si no está logueado, redirigir al inicio de sesión
return redirect('index')
# Si está logueado, renderizar la página de ayuda
return render(request, 'community/help.html')