Inicial
This commit is contained in:
+137
@@ -0,0 +1,137 @@
|
||||
# home/admin.py
|
||||
from django.contrib import admin
|
||||
from django import forms
|
||||
from .models import (
|
||||
Noticia, ClienteCategoria, SistemaOperativo, ServerSelection,
|
||||
RecruitAFriend, DownloadClientPage, ContentCreator, RecruitReward
|
||||
)
|
||||
from django.db import connections
|
||||
import logging
|
||||
from django.shortcuts import redirect
|
||||
from django_ckeditor_5.widgets import CKEditor5Widget
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Formulario para el modelo Noticia
|
||||
class NoticiaAdminForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Noticia
|
||||
fields = ['titulo', 'contenido', 'fecha_fin_evento', 'enlace']
|
||||
widgets = {
|
||||
'contenido': CKEditor5Widget(config_name='default'),
|
||||
}
|
||||
|
||||
@admin.register(Noticia)
|
||||
class NoticiaAdmin(admin.ModelAdmin):
|
||||
form = NoticiaAdminForm
|
||||
list_display = ['titulo', 'fecha_publicacion']
|
||||
readonly_fields = ['fecha_publicacion']
|
||||
fields = ['titulo', 'contenido', 'fecha_fin_evento', 'enlace']
|
||||
|
||||
|
||||
# Formulario para el modelo RecruitAFriend
|
||||
class RecruitAFriendAdminForm(forms.ModelForm):
|
||||
content = forms.CharField(widget=CKEditor5Widget(config_name='default'))
|
||||
|
||||
class Meta:
|
||||
model = RecruitAFriend
|
||||
fields = ['title', 'information', 'content']
|
||||
|
||||
@admin.register(RecruitAFriend)
|
||||
class RecruitAFriendAdmin(admin.ModelAdmin):
|
||||
form = RecruitAFriendAdminForm
|
||||
list_display = ['title', 'updated_at']
|
||||
fields = ['title', 'information', 'content']
|
||||
|
||||
|
||||
# Formulario para el modelo DownloadClientPage
|
||||
class DownloadClientPageAdminForm(forms.ModelForm):
|
||||
content = forms.CharField(widget=CKEditor5Widget(config_name='default'))
|
||||
mac_instructions = forms.CharField(widget=CKEditor5Widget(config_name='default'))
|
||||
|
||||
class Meta:
|
||||
model = DownloadClientPage
|
||||
fields = ['title', 'content', 'mac_instructions']
|
||||
|
||||
@admin.register(DownloadClientPage)
|
||||
class DownloadClientPageAdmin(admin.ModelAdmin):
|
||||
form = DownloadClientPageAdminForm
|
||||
list_display = ['title', 'updated_at']
|
||||
fields = ['title', 'content', 'mac_instructions']
|
||||
|
||||
|
||||
# Formulario para el modelo ContentCreator
|
||||
class ContentCreatorAdminForm(forms.ModelForm):
|
||||
description = forms.CharField(widget=CKEditor5Widget(config_name='default'))
|
||||
|
||||
class Meta:
|
||||
model = ContentCreator
|
||||
fields = [
|
||||
'title', 'description', 'content_type', 'subtitle',
|
||||
'youtube_video_url', 'avatar_image_url',
|
||||
'youtube_channel_url', 'facebook_page_url'
|
||||
]
|
||||
|
||||
@admin.register(ContentCreator)
|
||||
class ContentCreatorAdmin(admin.ModelAdmin):
|
||||
form = ContentCreatorAdminForm
|
||||
list_display = ['title', 'updated_at']
|
||||
fields = [
|
||||
'title', 'description', 'content_type', 'subtitle',
|
||||
'youtube_video_url', 'avatar_image_url',
|
||||
'youtube_channel_url', 'facebook_page_url'
|
||||
]
|
||||
|
||||
|
||||
# Administración para ServerSelection
|
||||
class ServerSelectionAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'address', 'port', 'gamebuild']
|
||||
change_list_template = "admin/server_selection.html"
|
||||
|
||||
def changelist_view(self, request, extra_context=None):
|
||||
servers = []
|
||||
try:
|
||||
with connections['acore_auth'].cursor() as cursor:
|
||||
cursor.execute("SELECT id, name, address, port, gamebuild FROM realmlist")
|
||||
servers = cursor.fetchall()
|
||||
except Exception as e:
|
||||
logger.error("Error al obtener servidores: %s", e)
|
||||
|
||||
if request.method == "POST" and "server_selection" in request.POST:
|
||||
selected_server_id = int(request.POST["server_selection"])
|
||||
selected_server = next((s for s in servers if s[0] == selected_server_id), None)
|
||||
if selected_server:
|
||||
ServerSelection.objects.all().delete()
|
||||
ServerSelection.objects.create(
|
||||
server_id=selected_server[0],
|
||||
name=selected_server[1],
|
||||
address=selected_server[2],
|
||||
port=selected_server[3],
|
||||
gamebuild=selected_server[4]
|
||||
)
|
||||
return redirect("admin:home_serverselection_changelist")
|
||||
|
||||
extra_context = extra_context or {}
|
||||
extra_context['servers'] = servers
|
||||
return super().changelist_view(request, extra_context=extra_context)
|
||||
|
||||
|
||||
# Inlines para ClienteCategoria
|
||||
class SistemaOperativoInline(admin.TabularInline):
|
||||
model = SistemaOperativo
|
||||
extra = 1
|
||||
|
||||
class ClienteCategoriaAdmin(admin.ModelAdmin):
|
||||
inlines = [SistemaOperativoInline]
|
||||
|
||||
|
||||
@admin.register(RecruitReward)
|
||||
class RecruitRewardAdmin(admin.ModelAdmin):
|
||||
list_display = ('required_friends', 'reward_name', 'item_id', 'item_quantity', 'icon_class')
|
||||
search_fields = ('reward_name',)
|
||||
|
||||
|
||||
# Registro de modelos en el admin
|
||||
admin.site.register(ClienteCategoria, ClienteCategoriaAdmin)
|
||||
admin.site.register(SistemaOperativo)
|
||||
admin.site.register(ServerSelection, ServerSelectionAdmin)
|
||||
Reference in New Issue
Block a user