From 570f7d228d2af7742da3c2ea31c70d265dfaae52 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Mon, 2 Feb 2026 00:29:30 +0000 Subject: [PATCH] LA MORENITA RADIO --- core/__pycache__/admin.cpython-311.pyc | Bin 212 -> 1079 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 1493 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 1138 bytes core/admin.py | 9 +- core/migrations/0001_initial.py | 29 +++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1535 bytes core/models.py | 14 +- core/templates/core/index.html | 209 ++++++------------ core/views.py | 32 ++- static/css/custom.css | 151 ++++++++++++- staticfiles/css/custom.css | 156 +++++++++++-- 11 files changed, 427 insertions(+), 173 deletions(-) create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index a5ed392d6714413db63120e4233d2e96cbadb5de..0abf306f79a46a1aa038ecf51542f499cf9a3a92 100644 GIT binary patch literal 1079 zcma)4K}#D!6n?XtO;WdM)V8#TXax~jp$064QlzvL+EYE$TPO_c&ZrxAvvDR%Y!T`~ zs0ArridRq8;-85UP!Kd1EVT~IKrbWN z-PO?tS4Vd7v!57HO0)DVSea9`W0AEQwmqBITU2wWFsAv~Pdl;2Z z$d^NjFeqsoFi#j+&zAHJSRthp=GLPAOKD!H{7w?D(kNzXwZ9;ICEKtHWz;%S?$)+* zIVL%V-f9?GimMhH(`KQT>AGF<+v#@jp9jDy>Fp+R*Jp%sePtPu;RlR+Q6`uxbEhUF z!wJGlEizpLUksQJX=air7C!2WbOQ6 zaWU|DF`UC(VUe$JC#(gcSP#UKtlADQI)UKDcqo(A_acX3A4adXbMpGn)pe572!Gb# z#LRC#ZJI+z=IEh0dSH$<&9S|KLvx~GP8{F9zxDV>{?6z6X8kB{9p_S2WZJpNj!Rp(YZ8 z>Z*K#fc%oDl}Z_pTJV1$29s1XRwlZ|%64TTm~?_lO}KMHwKqz~6O%$+i6|@hf-7q{ zs=haBknuf?seFe{E=BM>JKd@8nJA#Cn9DjsODBXJ!$_m|J%$I3-uHy$*Y2(lZa_Yw delta 158 zcmdnaafMNEIWI340}xFAk)LS~q#sY*FX}1;5@1MSNMX!j$YqRTWMoKT3TDt`ehE^k z$#{!3F(o%M&rg%-7GFwMVqSW_UUGh3Nl|7}5i?N1N`}uMb(4je^sRnz*yQG?l;)(` e6>$K?7=gH07D#+xW@Kc%!Ju#f8!BQ0ssI38eJ4Z! diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc index e061640edbdcec3e5c1744466c916e7acdd2763b..61a215b30bd0c2e3eea53132803bde177609bc55 100644 GIT binary patch literal 1493 zcmZuxF>l*e5Pp7A3Ne zkCiJFsD=z4I(RVPf8e%=htB;K6re#Mx^?nUK!GxOY44FzVoN!a$Gdm;?%jQNK1Wl=zHCV$LHGfUyK%$TK-E;p9tHmGLcr zVcB1*XxOlxS?z{#aQPo3*-hLq!&erXx2L5cjuvOaJDik(1AAekYoE50V1Fm1+ z&Wt9TZ2r8i8%@L3Y=iOwZ}fNCjd2Ddyz4I(U^s+o3`YQ&=+(+KWO8M~v~D_BQ9`g> zsxiZA?`1__Qq{KBBC6^qR2AmQHMuOS>JP4FPAu||gw`yF1fG8Sx~AGD1T+6YV@L;G z{Sa7v3IoW9%lsP|uK+tkKcho28q2UN%XSuuQoFUFM7@;K!fo8hvgM z6Vp3fm%gv;2CAP3r%H9H=`VM5jX9cat8KScBh;6tqZ61D;UsW5sFmL3@o#e$)X&qV z{7(`vey;Nuuxq%t*))nf*a#zxT~By>_yF`qbN~duiNH<3SqtcBc`t`(CQjPgMq~ zO7F!e77>dhG|yi1wKwk!k|5q2p?MaT#Vgv&#{4)w)Y=DD4%b3V#WMfNg$3UP;Y#{6 s9M~sx4L0+pI%Qy^s2~VKwCdfwM=@D|^XJ*g`su^heErRPj6rh$14kcocK`qY delta 143 zcmcc0eUUL?IWI340}xFAk)LS^q#uJgFu(+5d=>&SrZc24q%h_%Y}Tbaw4sr*>Cq6SajF$%BwWEYjUNaU4@YsYnYH=!epra*5VEWA7yEon>aW zPOVhrz=0#TUUJ}oLaY3PUikwKiiEWi5)$Ij6DvhrdgARij#}l-=*|27nweiMtBe55 zf4^tT1%&?2m@(+b#L*lOPZ2>x3(#72>VekN*K`e$0x1TCUU97mwDAL4Gl=#O)y$Wf z>%E$mn1Y6cikBMjz*bgV!uT=|JFM$vvN4!IKz?-e3!tY+jpcA|oY?(5uILRdLVLjN zpGcl)+nSsp8qu@bh(XL$j%iXN6MGPK|0FUwv#USRRb^~}&^99FZG8`_ z+s`V@0eY+quC3&~VdYaCxFKO-7fVl28sZKY_*)m><&V95vk6Vofp0BrXt5t6dnq&Wdzi)S3kG47A zv_0N)BEdT>pmyX(pE2@jv%c6`Sgh9<7M4D4EDdJf^iyn89edsMe74CVH)0~Ys+y4) zim8Am<<|wS$0A53`@XBB8%673+-p;joE>M*)#cama(eo~%KfizFR!lOy8Uo@<<5iE zJNNI!7>0Oi6!``Zi2JQvS5oTZwcm|p%+l4)pVgL-P6P?#@^6yxDw(u3hT3|`lk z?Wcxr+r_aTvj9|h}p7{}@eQ8IJlVWBqE`oEGUkX4w=pXByLks_5 z&HQf799Xl5*6hv~sfo@`rKn_-|GF?cy8P9sS|7c)I=cLMS}~`}DFXDPnNFeUcmJ%u zzx#MtyD_}kKB#(!RWCIPlV*wl?R@#)1cdqN!{L>=XWfHJ^RUt!7Mn+q75<$#4@Yv2 zY`9^U+tTMkLGdzgJTZHm&_L#6%IkfO#3is77XZDQ_yp8(KyQdEz-E6=egh~iXqq-c cXLj;6LLUs@-Xl~UzP;1pl(v+j(I&SM!uH%hUh$T{~CE!96oTjQ1oHkCdQ$lozPf-Q6#oM~=1-7}AYwoe=&3h>36z}rW~~)fO5P4{-h1=r&HMPV zzfVm~BA|nRhVUX&zZ=1NEJDd#(kRMro?7~GlVKiARAFbK7y={g8`rq_)Wa;XDEltUWCmB zkq~sth&3ZeP{;A878u54V{Oaty2i>_vx<&kIwj51DaMXgGg(=)ND+pj!HI^Q9g`Br z#tzdA%!;PvWg3a1>()Z2BR!#4DWHiJ1dw>FOuS)~xge&2p-9tZ06jh%7)=`o)~k%rY>m)oo?Fy$ z*3WOp#5FJD)_FvD(?z&0py>SutcBjF^RHFyMAbU#a#vk`t*)G?D;+i6Rnx7Fo|by~ z_(Z$b)~@ZR_tUQyT0itB&pp5LYvy^Tl^e+D)6aYJ%l+g^CzEdC%omzVp>MZ5DOS%5y(&3}_= 1: + return False + return super().has_add_permission(request) \ No newline at end of file diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..0c23bce --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# Generated by Django 5.2.7 on 2026-02-02 00:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='RadioConfig', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(default='La Morenita Radio', max_length=255)), + ('stream_url', models.URLField(help_text='Direct link to the audio stream')), + ('whatsapp_number', models.CharField(default='+52 844 218 8814', max_length=20)), + ('facebook_url', models.URLField(default='https://www.facebook.com/profile.php?id=61583511337947')), + ('tiktok_url', models.URLField(default='https://www.tiktok.com/@chikipapiradio')), + ], + options={ + 'verbose_name': 'Radio Configuration', + 'verbose_name_plural': 'Radio Configuration', + }, + ), + ] diff --git a/core/migrations/__pycache__/0001_initial.cpython-311.pyc b/core/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..95086766ee4290f1b4e6bde25f408a8c4666fbc5 GIT binary patch literal 1535 zcmZux%}*Og6rWvx8$;H7#HppmOJ$LmN;VGWt0GBTBBE4~N=X|k6LncUV|(y=cQd=@ z>jH-!dd#gHa^O%=RqzM&Pv~(h?ZKK;q@Flb+K5P%a%pGRn52*y&-0sk@BQBR_vZPx z{{A@NBmegvz83`GFK^Qup>ySIo-4lq2%w;Wrcf4|Vp$Y`2p$3`{sdqE2^)c4&=J>; zFLvbs3_b<9(5Yw6i7ej4HKN+s&@C2j8W3q#r5EXaC(bu#V}h3wfwBNWS%gA4Py^+l z2vBGv+zWsr4Dgf4M)cxDfC3D{&`J1+|CnRGx}z$>i0>KeoxmuJoy3ns?#0)ISD)|Y zQ{tV$#7X}VzsWIQ-NBItE+Jim(npYzmyiZehOQtDU-B8b>Qf8D>wKnOi6=MyPi;*o z_rXs%xoH+#?y>qE>wBU?Y%Cah71x-E;UW_sJ;()FLT%ZGQXxpS5oCQP!A+IyC=Im3 zViqD;)$lH2iA_Y-4GSr{+C(g5V_QSJ$t6`@HVD$Ot;#<9>A#!}Ud{+aRkfwrysqlD zq9MIz*IC@Md6uTqBHC`|0Vb$o%No`jvTewA9m#5oUr_EkEhJv|n#l=7^1$LYZrJBgV;@3w&wZdTD|Ot! zrfOp1vAa9uvmkd_Zgn4YP9*&v-q42>DyGKGS}wqXKBM6(MjEtO#4!CPc$`bHsN%D& zC@iihyeC>3;(9_+UbIxri{iTo=H&Alu>?dW(jn3-7+J*YGuF4@7j@a|CgMGLmiQXi zzT)Lx^pdgILR}?YHTwONrLGn?OmyCezk@R#1m4{*)Qu)8wANd?-727MRN)Y$uw{^j zWpcs`75)Ya?;E%k8&M%fXcZk=RzVH<5A1?MU=IepM{fBN)7!L0*xls_y{2X_p zH#^CjuahG*HU4tbNsa#z{4-0-3e^csS?!eNq%11go#YLg9zPg!(&Kb;kv@G!(<|-t zij!WU(hr^Frw4lno3HlhT$yH8+nH4-vr47so#baUTRL2HvL$-=Tl)M*npN6a#mOpE zTI(b;hnd6czh>y%3pz^Lqr@2{RI=WK%_uap*3PUsnKde@ZhvHWz#Rmm)16!MZYVG^ z-~vyK48-DZ02gmP;Rd9^@cuX6B)57@Jm#GjgBz+|GxBiVua{q~loo9}y@Ywx1- x-Rj>X<9zG= - - - + + {% endblock %} {% block content %} -
-
-

Analyzing your requirements and generating your app…

-
- Loading… +
+
+

{{ config.title }}

+

MÚSICA 24/7

+
+ +
+
-

AppWizzy AI is collecting your requirements and applying the first changes.

-

This page will refresh automatically as the plan is implemented.

-

- Runtime: Django {{ django_version }} · Python {{ python_version }} - — UTC {{ current_time|date:"Y-m-d H:i:s" }} -

-
-
-
- Page updated: {{ current_time|date:"Y-m-d H:i:s" }} (UTC) -
-{% endblock %} \ No newline at end of file + +
+ +

Presiona Play para escuchar

+
+ + + + + + +Admin Panel + + +{% endblock %} diff --git a/core/views.py b/core/views.py index c9aed12..51fce99 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,23 @@ import os -import platform - -from django import get_version as django_version from django.shortcuts import render -from django.utils import timezone - +from .models import RadioConfig def home(request): - """Render the landing screen with loader and environment details.""" - host_name = request.get_host().lower() - agent_brand = "AppWizzy" if host_name == "appwizzy.com" else "Flatlogic" - now = timezone.now() + """Render the landing screen for La Morenita Radio.""" + config = RadioConfig.objects.first() + + # Provide default data if not configured in admin yet + if not config: + config = { + "title": "La Morenita Radio", + "stream_url": "https://streaming.hostpannel.lat:8054/stream", + "whatsapp_number": "+52 844 218 8814", + "facebook_url": "https://www.facebook.com/profile.php?id=61583511337947", + "tiktok_url": "https://www.tiktok.com/@chikipapiradio", + } context = { - "project_name": "New Style", - "agent_brand": agent_brand, - "django_version": django_version(), - "python_version": platform.python_version(), - "current_time": now, - "host_name": host_name, - "project_description": os.getenv("PROJECT_DESCRIPTION", ""), - "project_image_url": os.getenv("PROJECT_IMAGE_URL", ""), + "config": config, + "project_description": os.getenv("PROJECT_DESCRIPTION", "La Morenita Radio - Música 24/7"), } return render(request, "core/index.html", context) diff --git a/static/css/custom.css b/static/css/custom.css index 925f6ed..b76baee 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,4 +1,149 @@ -/* Custom styles for the application */ -body { - font-family: system-ui, -apple-system, sans-serif; +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Open+Sans:wght@400;600&display=swap'); + +:root { + --primary-black: #0a0a0a; + --primary-red: #ff0000; + --primary-yellow: #ffcc00; + --text-white: #ffffff; + --bg-gradient: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%); } + +body { + margin: 0; + padding: 0; + font-family: 'Open Sans', sans-serif; + background: var(--bg-gradient); + color: var(--text-white); + min-height: 100vh; + overflow-x: hidden; +} + +h1, h2, h3, .brand-font { + font-family: 'Montserrat', sans-serif; + text-transform: uppercase; + font-weight: 700; +} + +/* Radio Hub Layout */ +.radio-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 2rem; + text-align: center; + max-width: 600px; + margin: 0 auto; +} + +/* Rotating Disc Animation */ +.disc-container { + position: relative; + width: 250px; + height: 250px; + margin: 2rem 0; +} + +.disc { + width: 100%; + height: 100%; + border-radius: 50%; + background: radial-gradient(circle, #333 10%, #111 20%, #000 70%); + border: 5px solid #222; + box-shadow: 0 0 30px rgba(0,0,0,0.5); + position: relative; + animation: rotate 10s linear infinite; + animation-play-state: paused; +} + +.disc.playing { + animation-play-state: running; +} + +.disc::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 80px; + height: 80px; + background: var(--primary-red); + border-radius: 50%; + border: 4px solid var(--primary-yellow); + background-image: url('https://via.placeholder.com/80?text=La+Morenita'); /* Placeholder for Logo */ + background-size: cover; +} + +@keyframes rotate { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +/* Player Controls */ +.controls { + margin: 2rem 0; +} + +.btn-play { + background: var(--primary-red); + border: none; + color: white; + width: 80px; + height: 80px; + border-radius: 50%; + font-size: 2rem; + cursor: pointer; + transition: transform 0.2s, background 0.3s; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 4px 15px rgba(255, 0, 0, 0.3); +} + +.btn-play:hover { + transform: scale(1.1); + background: #cc0000; +} + +/* Social Icons */ +.social-links { + display: flex; + gap: 1.5rem; + margin-top: 2rem; +} + +.social-icon { + width: 50px; + height: 50px; + border-radius: 50%; + background: rgba(255,255,255,0.1); + display: flex; + align-items: center; + justify-content: center; + color: var(--primary-yellow); + font-size: 1.5rem; + text-decoration: none; + transition: background 0.3s, color 0.3s, transform 0.2s; + border: 1px solid rgba(255, 204, 0, 0.3); +} + +.social-icon:hover { + background: var(--primary-yellow); + color: var(--primary-black); + transform: translateY(-5px); +} + +.whatsapp:hover { background: #25D366; border-color: #25D366; color: white; } +.facebook:hover { background: #1877F2; border-color: #1877F2; color: white; } +.tiktok:hover { background: #010101; border-color: #010101; color: white; } + +/* Admin Link */ +.admin-link { + position: fixed; + bottom: 1rem; + right: 1rem; + font-size: 0.8rem; + color: rgba(255,255,255,0.3); + text-decoration: none; +} \ No newline at end of file diff --git a/staticfiles/css/custom.css b/staticfiles/css/custom.css index 108056f..b76baee 100644 --- a/staticfiles/css/custom.css +++ b/staticfiles/css/custom.css @@ -1,21 +1,149 @@ +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Open+Sans:wght@400;600&display=swap'); :root { - --bg-color-start: #6a11cb; - --bg-color-end: #2575fc; - --text-color: #ffffff; - --card-bg-color: rgba(255, 255, 255, 0.01); - --card-border-color: rgba(255, 255, 255, 0.1); + --primary-black: #0a0a0a; + --primary-red: #ff0000; + --primary-yellow: #ffcc00; + --text-white: #ffffff; + --bg-gradient: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%); } + body { margin: 0; - font-family: 'Inter', sans-serif; - background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end)); - color: var(--text-color); - display: flex; - justify-content: center; - align-items: center; + padding: 0; + font-family: 'Open Sans', sans-serif; + background: var(--bg-gradient); + color: var(--text-white); min-height: 100vh; - text-align: center; - overflow: hidden; - position: relative; + overflow-x: hidden; } + +h1, h2, h3, .brand-font { + font-family: 'Montserrat', sans-serif; + text-transform: uppercase; + font-weight: 700; +} + +/* Radio Hub Layout */ +.radio-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 2rem; + text-align: center; + max-width: 600px; + margin: 0 auto; +} + +/* Rotating Disc Animation */ +.disc-container { + position: relative; + width: 250px; + height: 250px; + margin: 2rem 0; +} + +.disc { + width: 100%; + height: 100%; + border-radius: 50%; + background: radial-gradient(circle, #333 10%, #111 20%, #000 70%); + border: 5px solid #222; + box-shadow: 0 0 30px rgba(0,0,0,0.5); + position: relative; + animation: rotate 10s linear infinite; + animation-play-state: paused; +} + +.disc.playing { + animation-play-state: running; +} + +.disc::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 80px; + height: 80px; + background: var(--primary-red); + border-radius: 50%; + border: 4px solid var(--primary-yellow); + background-image: url('https://via.placeholder.com/80?text=La+Morenita'); /* Placeholder for Logo */ + background-size: cover; +} + +@keyframes rotate { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +/* Player Controls */ +.controls { + margin: 2rem 0; +} + +.btn-play { + background: var(--primary-red); + border: none; + color: white; + width: 80px; + height: 80px; + border-radius: 50%; + font-size: 2rem; + cursor: pointer; + transition: transform 0.2s, background 0.3s; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 4px 15px rgba(255, 0, 0, 0.3); +} + +.btn-play:hover { + transform: scale(1.1); + background: #cc0000; +} + +/* Social Icons */ +.social-links { + display: flex; + gap: 1.5rem; + margin-top: 2rem; +} + +.social-icon { + width: 50px; + height: 50px; + border-radius: 50%; + background: rgba(255,255,255,0.1); + display: flex; + align-items: center; + justify-content: center; + color: var(--primary-yellow); + font-size: 1.5rem; + text-decoration: none; + transition: background 0.3s, color 0.3s, transform 0.2s; + border: 1px solid rgba(255, 204, 0, 0.3); +} + +.social-icon:hover { + background: var(--primary-yellow); + color: var(--primary-black); + transform: translateY(-5px); +} + +.whatsapp:hover { background: #25D366; border-color: #25D366; color: white; } +.facebook:hover { background: #1877F2; border-color: #1877F2; color: white; } +.tiktok:hover { background: #010101; border-color: #010101; color: white; } + +/* Admin Link */ +.admin-link { + position: fixed; + bottom: 1rem; + right: 1rem; + font-size: 0.8rem; + color: rgba(255,255,255,0.3); + text-decoration: none; +} \ No newline at end of file