This commit is contained in:
adevopg
2024-11-12 09:17:08 +01:00
parent fe43f30207
commit 6b976046cb
211 changed files with 18030 additions and 0 deletions
View File
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+51
View File
@@ -0,0 +1,51 @@
# ac_soap.py
import requests
import base64
from django.conf import settings
def execute_soap_command(command):
"""
Ejecuta un comando en el servidor AzerothCore usando SOAP.
Parameters:
- command (str): El comando a ejecutar, por ejemplo, ".additem 3200"
Returns:
- str: La respuesta del servidor si el comando se ejecuta correctamente.
- None: Si ocurre algún error durante la ejecución.
"""
try:
# Crear la carga SOAP
soap_command = f'''<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="{settings.AC_SOAP_URN}">
<SOAP-ENV:Body>
<ns1:executeCommand>
<command>{command}</command>
</ns1:executeCommand>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>'''
# Autenticación básica usando las credenciales en settings.py
auth_header = f"Basic {base64.b64encode(f'{settings.AC_SOAP_USER}:{settings.AC_SOAP_PASSWORD}'.encode()).decode()}"
headers = {
'Authorization': auth_header,
'Content-Type': 'application/xml'
}
# Realizar la solicitud SOAP al servidor de AzerothCore
response = requests.post(settings.AC_SOAP_URL, data=soap_command, headers=headers, timeout=5)
# Verificar si la respuesta fue exitosa
if response.status_code == 200:
return response.text
else:
print(f"[ERROR] Comando SOAP fallido: {response.status_code} - {response.text}")
return None
except requests.exceptions.RequestException as e:
print(f"[EXCEPCIÓN] Error de conexión con el servidor SOAP: {str(e)}")
return None
except Exception as e:
print(f"[EXCEPCIÓN] Error inesperado al ejecutar el comando SOAP: {str(e)}")
return None
+137
View File
@@ -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)
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class HomeConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'home'
+39
View File
@@ -0,0 +1,39 @@
from django.conf import settings
from .models import ServerSelection
from django.db import connections
import socket
def url_principal(request):
"""Devuelve la URL principal del sitio."""
current_domain = f"{request.scheme}://{request.get_host()}"
return {'URL_PRINCIPAL': current_domain}
def configuracion_global(request):
"""Devuelve configuraciones globales como el nombre del servidor y el año actual."""
return {
'NOMBRE_SERVIDOR': settings.NOMBRE_SERVIDOR,
'ANIO_ACTUAL': settings.ANIO_ACTUAL,
}
def get_server_info(request):
"""Devuelve información del servidor para que esté disponible en todas las plantillas."""
server_selection = ServerSelection.objects.first()
online_count = 0
if server_selection:
# Obtener la cantidad de personajes en línea
try:
with connections['acore_characters'].cursor() as cursor:
cursor.execute("SELECT COUNT(*) FROM characters WHERE online = 1")
result = cursor.fetchone()
if result is not None:
online_count = result[0]
except Exception as e:
# Manejar errores de conexión o consulta
print(f"Error al obtener personajes en línea: {e}")
return {
'server': server_selection,
'online_characters': online_count,
'expansion': 'WotLK' if server_selection and server_selection.gamebuild == 12340 else 'Cataclysm',
}
+114
View File
@@ -0,0 +1,114 @@
# Generated by Django 5.1.2 on 2024-11-11 16:11
import django.db.models.deletion
import django_ckeditor_5.fields
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='ClienteCategoria',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nombre', models.CharField(max_length=100)),
('descripcion', models.CharField(blank=True, max_length=200, null=True)),
],
),
migrations.CreateModel(
name='ContentCreator',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200)),
('description', django_ckeditor_5.fields.CKEditor5Field(verbose_name='Descripción')),
('content_type', models.CharField(default='Contenido general', max_length=60)),
('subtitle', models.CharField(default='Nova WoW', max_length=60)),
('youtube_video_url', models.URLField(blank=True, max_length=300, null=True)),
('avatar_image_url', models.URLField(blank=True, max_length=300, null=True)),
('youtube_channel_url', models.URLField(blank=True, max_length=300, null=True)),
('facebook_page_url', models.URLField(blank=True, max_length=300, null=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
),
migrations.CreateModel(
name='DownloadClientPage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='Descarga del cliente', max_length=255)),
('content', django_ckeditor_5.fields.CKEditor5Field(verbose_name='Contenido')),
('mac_instructions', django_ckeditor_5.fields.CKEditor5Field(blank=True, null=True, verbose_name='Instrucciones para macOS')),
('updated_at', models.DateTimeField(auto_now=True)),
],
),
migrations.CreateModel(
name='Noticia',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('titulo', models.CharField(max_length=200)),
('contenido', django_ckeditor_5.fields.CKEditor5Field(verbose_name='Contenido')),
('fecha_publicacion', models.DateTimeField(auto_now=True)),
('fecha_fin_evento', models.DateField(blank=True, null=True)),
('enlace', models.URLField(blank=True, null=True)),
],
),
migrations.CreateModel(
name='RecruitAFriend',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='Recluta a un amigo', max_length=255)),
('information', models.CharField(default='Información', max_length=255)),
('content', django_ckeditor_5.fields.CKEditor5Field(verbose_name='Contenido')),
('updated_at', models.DateTimeField(auto_now=True)),
],
),
migrations.CreateModel(
name='RecruitReward',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('required_friends', models.IntegerField()),
('reward_name', models.CharField(max_length=100)),
('item_id', models.IntegerField()),
('item_quantity', models.IntegerField(default=1)),
('item_link', models.URLField()),
('icon_class', models.CharField(help_text="Clase CSS para el icono (ej. 'icontinyl q3')", max_length=50)),
('claimed_by', models.CharField(blank=True, max_length=100, null=True)),
],
),
migrations.CreateModel(
name='ServerSelection',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('server_id', models.IntegerField()),
('name', models.CharField(max_length=100)),
('address', models.CharField(max_length=100)),
('port', models.IntegerField()),
('gamebuild', models.IntegerField()),
],
),
migrations.CreateModel(
name='ClaimedReward',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('account_id', models.IntegerField()),
('character_name', models.CharField(max_length=100)),
('username', models.CharField(max_length=100)),
('claimed_at', models.DateTimeField(auto_now_add=True)),
('recruit_reward', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='claimed_rewards', to='home.recruitreward')),
],
),
migrations.CreateModel(
name='SistemaOperativo',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nombre', models.CharField(max_length=100)),
('url_descarga', models.URLField()),
('categoria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sistemas_operativos', to='home.clientecategoria')),
],
),
]
View File
Binary file not shown.
+101
View File
@@ -0,0 +1,101 @@
# home/models.py
from django.db import models
from django_ckeditor_5.fields import CKEditor5Field
from django.core.exceptions import ValidationError
from django.utils import timezone
class Noticia(models.Model):
titulo = models.CharField(max_length=200)
contenido = CKEditor5Field('Contenido', config_name='default')
fecha_publicacion = models.DateTimeField(auto_now=True) # Cambiado a DateTimeField
fecha_fin_evento = models.DateField(null=True, blank=True)
enlace = models.URLField(max_length=200, blank=True, null=True)
def __str__(self):
return self.titulo
class ClienteCategoria(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.CharField(max_length=200, blank=True, null=True)
def __str__(self):
return self.nombre
class SistemaOperativo(models.Model):
categoria = models.ForeignKey(ClienteCategoria, related_name='sistemas_operativos', on_delete=models.CASCADE)
nombre = models.CharField(max_length=100)
url_descarga = models.URLField()
def __str__(self):
return f"{self.nombre} - {self.categoria.nombre}"
class ServerSelection(models.Model):
server_id = models.IntegerField()
name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
port = models.IntegerField()
gamebuild = models.IntegerField()
def __str__(self):
expansion = 'WotLK' if self.gamebuild == 12340 else 'Cataclysm' if self.gamebuild == 15595 else 'Unknown'
return f"{self.name} ({expansion})"
class RecruitAFriend(models.Model):
title = models.CharField(max_length=255, default="Recluta a un amigo")
information = models.CharField(max_length=255, default="Información")
content = CKEditor5Field('Contenido', config_name='default')
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class DownloadClientPage(models.Model):
title = models.CharField(max_length=255, default="Descarga del cliente")
content = CKEditor5Field('Contenido', config_name='default')
mac_instructions = CKEditor5Field('Instrucciones para macOS', blank=True, null=True, config_name='default')
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class ContentCreator(models.Model):
title = models.CharField(max_length=200)
description = CKEditor5Field('Descripción', config_name='default')
content_type = models.CharField(max_length=60, default="Contenido general")
subtitle = models.CharField(max_length=60, default="Nova WoW")
youtube_video_url = models.URLField(max_length=300, blank=True, null=True)
avatar_image_url = models.URLField(max_length=300, blank=True, null=True)
youtube_channel_url = models.URLField(max_length=300, blank=True, null=True)
facebook_page_url = models.URLField(max_length=300, blank=True, null=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.titles
class RecruitReward(models.Model):
required_friends = models.IntegerField()
reward_name = models.CharField(max_length=100)
item_id = models.IntegerField()
item_quantity = models.IntegerField(default=1)
item_link = models.URLField()
icon_class = models.CharField(max_length=50, help_text="Clase CSS para el icono (ej. 'icontinyl q3')")
def __str__(self):
return f"{self.required_friends} amigos - {self.reward_name}"
class ClaimedReward(models.Model):
recruit_reward = models.ForeignKey(RecruitReward, on_delete=models.CASCADE, related_name='claimed_rewards')
account_id = models.IntegerField()
character_name = models.CharField(max_length=100)
username = models.CharField(max_length=100)
claimed_at = models.DateTimeField(auto_now_add=True)
ip_address = models.GenericIPAddressField()
def __str__(self):
return f"{self.username} - {self.recruit_reward.reward_name} - {self.claimed_at}"
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="/mstile-70x70.png?v=4"/>
<square150x150logo src="/mstile-150x150.png?v=4"/>
<square310x310logo src="/mstile-310x310.png?v=4"/>
<wide310x150logo src="/mstile-310x150.png?v=4"/>
<TileColor>#211917</TileColor>
</tile>
</msapplication>
</browserconfig>
Binary file not shown.

After

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

@@ -0,0 +1,18 @@
<svg width="150" height="150" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M68.5094 2.25529C72.3363 -0.751762 77.6637 -0.751762 81.4906 2.25529L101.148 17.7017C102.315 18.6189 103.656 19.2787 105.086 19.6395L129.159 25.7157C133.845 26.8986 137.167 31.1554 137.252 36.088L137.692 61.4255C137.718 62.9301 138.049 64.4127 138.664 65.7798L149.025 88.8031C151.042 93.2852 149.857 98.5933 146.137 101.737L127.027 117.886C125.893 118.845 124.965 120.034 124.303 121.378L113.149 144.011C110.978 148.418 106.178 150.78 101.454 149.768L77.1851 144.567C75.744 144.259 74.256 144.259 72.8149 144.567L48.5462 149.768C43.8217 150.78 39.0219 148.418 36.8506 144.011L25.6975 121.378C25.0352 120.034 24.1074 118.845 22.9727 117.886L3.86332 101.737C0.143187 98.5933 -1.04228 93.2852 0.974742 88.8031L11.3357 65.7798C11.9509 64.4127 12.282 62.9301 12.3081 61.4255L12.7478 36.088C12.8334 31.1554 16.155 26.8986 20.8414 25.7157L44.9144 19.6395C46.3438 19.2787 47.6845 18.6189 48.8518 17.7017L68.5094 2.25529Z" fill="url(#paint0_linear)"/>
<g opacity="0.2">
<path d="M79.3281 5.00732L98.9857 20.4538C100.536 21.6717 102.321 22.5515 104.229 23.0331L128.302 29.1093C131.412 29.8942 133.694 32.7501 133.753 36.1487L134.192 61.4863C134.227 63.4636 134.662 65.4145 135.473 67.2161L145.834 90.2394C147.218 93.3153 146.389 96.9412 143.878 99.0638L124.768 115.213C123.262 116.485 122.036 118.059 121.163 119.831L110.01 142.464C108.531 145.466 105.306 147.014 102.187 146.345L77.9184 141.145C75.9939 140.733 74.006 140.733 72.0816 141.145L47.8129 146.345C44.6935 147.014 41.4694 145.466 39.9901 142.464L28.837 119.831C27.9637 118.059 26.7376 116.485 25.2318 115.213L6.12245 99.0638C3.61065 96.9412 2.78225 93.3153 4.16644 90.2394L14.5274 67.2161C15.3382 65.4145 15.7733 63.4636 15.8076 61.4863L16.2472 36.1487C16.3062 32.7501 18.5883 29.8942 21.698 29.1093L45.771 23.0331C47.6792 22.5515 49.4642 21.6717 51.0143 20.4538L70.6719 5.00732C73.2296 2.99756 76.7704 2.99756 79.3281 5.00732Z" stroke="black" stroke-width="7"/>
</g>
<g clip-path="url(#clip0)">
<path d="M52.708 112.844C52.4 112.844 52.092 112.69 51.784 112.536C51.322 112.228 51.014 111.458 51.168 110.842L57.944 85.586L37.616 69.108C37 68.8 36.846 68.03 37 67.414C37.154 66.798 37.77 66.336 38.386 66.336L64.566 64.95L73.96 40.464C74.268 40.002 74.884 39.54 75.5 39.54C76.116 39.54 76.732 40.002 76.886 40.464L86.28 64.95L112.46 66.336C113.076 66.336 113.692 66.798 113.846 67.414C114 68.03 113.846 68.646 113.384 69.108L93.056 85.586L99.832 110.842C99.986 111.458 99.832 112.074 99.216 112.536C98.754 112.844 97.984 112.998 97.522 112.536L75.5 98.368L53.478 112.536C53.17 112.844 53.016 112.844 52.708 112.844Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="0" y1="0" x2="150" y2="150" gradientUnits="userSpaceOnUse">
<stop offset="0.104167" stop-color="#1A9480"/>
<stop offset="0.901042" stop-color="#DFB311"/>
</linearGradient>
<clipPath id="clip0">
<rect width="77" height="77" fill="white" transform="translate(37 38)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

Some files were not shown because too many files have changed in this diff Show More