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
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

@@ -0,0 +1,13 @@
<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>
<path d="M83.97 40.4423L77.9423 46.47L83.97 52.4976L89.9976 46.47L83.97 40.4423ZM65.49 44.16C65.065 44.16 64.72 44.5049 64.72 44.93V52.63C64.72 53.055 65.065 53.4 65.49 53.4H67.03C70.5828 53.4 70.88 56.3814 70.88 59.175C70.88 60.5833 70.7147 62.2651 70.4288 64.0536C68.4643 63.1596 66.6454 62.6517 65.117 62.64H65.0749C63.1823 62.64 62.0544 63.3671 61.4415 63.9785C61.0288 64.3912 60.7382 64.8759 60.5211 65.4042L60.5 65.3951L43.5901 108.302L87.9012 93.1272C87.9351 93.1148 87.9696 93.1034 88.0035 93.0911L88.0215 93.0851C88.599 92.8679 89.1165 92.5466 89.5615 92.1015C91.173 90.49 91.3043 87.7338 89.9856 84.2782C90.9902 84.229 92.0613 84.2 93.21 84.2C97.9285 84.2 101.68 85.3088 101.68 86.895V88.05C101.68 88.475 102.025 88.82 102.45 88.82H108.61C108.818 88.82 109.017 88.7362 109.16 88.5884C109.307 88.4375 109.386 88.2353 109.38 88.0289C109.38 88.0274 109.332 86.3509 109.335 86.0799V86.0768C109.352 84.041 108.532 82.1299 106.974 80.5575C104.528 78.092 100.321 76.5 96.2569 76.5C92.1861 76.5 89.0555 77.4092 86.7642 78.425C85.7495 76.9585 84.585 75.4932 83.2842 74.0456C85.4856 73.3722 87.6952 72.8845 88.7404 72.656C89.1392 72.5698 89.4136 72.507 89.6307 72.4454C92.2179 71.7201 97.0359 69.7388 97.0359 65.1034C97.0359 64.2133 96.6401 63.3346 96.2058 62.637H97.3367C100.483 62.637 103.217 60.9528 103.217 57.8004V55.2468C103.217 55.0558 103.287 53.3879 105.674 53.3879L107.07 53.3759C107.495 53.3759 107.84 53.031 107.84 52.6059V46.473C107.84 46.0479 107.495 45.703 107.07 45.703L104.453 45.7H104.444C101.065 45.7 98.556 46.8578 96.7742 49.2402C95.6038 50.8048 95.2178 53.4831 95.0869 54.94H94.1905C89.6676 54.94 87.826 58.1078 87.826 62.64V65.2989C85.3428 66.058 81.8998 67.427 79.0131 69.8046C77.378 68.3765 75.726 67.141 74.1074 66.099C75.6471 63.234 77.04 59.3742 77.04 54.7475C77.04 49.647 73.8719 44.16 66.9157 44.16H65.49ZM51.63 46.6023L45.6023 52.63L51.63 58.6576L57.6576 52.63L51.63 46.6023ZM105.53 64.18L101.68 68.03L105.53 71.88L109.377 68.03L105.53 64.18ZM45.47 65.72L41.62 69.57L45.47 73.42L49.317 69.57L45.47 65.72ZM65.0689 65.72H65.093C66.2293 65.7283 67.877 66.2225 69.8122 67.1818C69.5383 68.352 69.2291 69.5328 68.8527 70.7099L68.7986 70.8814C68.6954 71.214 68.8293 71.5749 69.1234 71.7597C69.2482 71.8413 69.3908 71.88 69.5325 71.88C69.7219 71.88 69.911 71.8095 70.0589 71.6724C70.0862 71.647 71.1792 70.5859 72.4892 68.7158C73.8603 69.5991 75.3149 70.676 76.8174 71.9762C76.4523 72.4167 76.0933 72.8672 75.7767 73.3598L72.5403 78.3949C72.3416 78.7044 72.3913 79.1093 72.6546 79.3634C72.804 79.5051 72.996 79.58 73.19 79.58C73.3425 79.58 73.4937 79.534 73.6261 79.4416L78.4777 76.0849C78.9337 75.7694 79.5222 75.477 80.1531 75.1946C81.617 76.7389 82.9312 78.314 84.0392 79.8808C82.9772 80.5812 82.368 81.1434 82.3037 81.2072L78.8086 84.6632C78.5499 84.9188 78.5062 85.3192 78.7033 85.6257C78.8989 85.9321 79.291 86.0574 79.6267 85.9265C79.6589 85.9143 82.0849 85.0314 86.7642 84.5338C87.887 87.0608 88.1407 89.17 87.3869 89.9238C85.8484 91.4592 78.9771 89.0742 71.7222 81.8208C64.4657 74.5659 62.0731 67.6961 63.6131 66.1561C63.9057 65.8666 64.3959 65.72 65.0689 65.72ZM94.75 95.8823L88.7223 101.91L94.75 107.938L100.778 101.91L94.75 95.8823Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear" x1="0" y1="0" x2="150" y2="150" gradientUnits="userSpaceOnUse">
<stop offset="0.104167" stop-color="#BF1F66"/>
<stop offset="0.901042" stop-color="#C080F5"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

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