From 681f47f2aacc382aa3af9eb0541adb8903c72b40 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sat, 31 Jan 2026 23:33:06 +0000 Subject: [PATCH] Auto commit: 2026-01-31T23:33:06.773Z --- core/__pycache__/admin.cpython-311.pyc | Bin 212 -> 1056 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 2188 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 1503 bytes core/admin.py | 10 +- core/migrations/0001_initial.py | 37 ++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 2199 bytes core/models.py | 24 +- core/templates/base.html | 153 ++++++++- core/templates/core/index.html | 322 ++++++++++-------- core/views.py | 35 +- 10 files changed, 405 insertions(+), 176 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..9d4b1e06ba88d3c08c933c3ff15dcf2c84b690eb 100644 GIT binary patch literal 1056 zcma)4J5Ss|5T5np&Ud^nkb@KiXrjnPaDG4(DOD7OP~s)A}EBFD| z@ehb1enzC!AYFmBLP|w<2r8<~_%PyCWFMbrcV@qxZ@fRJrs{xgfAAv;8Ngp!l&x}Y zT>L>}A2@IpL&AK(rE;&aHOw56m76K%D& z(q8)}7c@#G7qht72LV3g;2WIzCO44P)QwvN?}!=qtWKB+ZRRr8wI~b1wu-)qb=T5P z5RfYfbUg@?l;<(olR@w`594dkWE^EG;8E6%!`)wSLFrt*^0v}Mc=<-&QMo6+i*~M3 z>Ge{%lXb(k@Y<;qUZHHYyDJ?$Q-Fm=Hiyu^>8EpEe~r3)Qbs*4c^=*OCHodPQMRRP zRI0IFTiYs9vC!65nkilF39-Y&U0u&qC{>^$tc4>wys%s*7m#<|wdEvTKSeN2FoU2c z3h`f}SP3Z`v|S`g)t668Aa&U@gxjJ%^w&;im--*6j}KA&x?9uJd^_xHrmO9=qhz!p z>E-DPR$s)Kq^B$CWok!?O{~0-y8elLg}8Agi<|FebLG4l|G&3#8BfzY$$le@Ovcy= ztQ_4PC-CCvv2n^~`pvzi!Nf6J9J0lc!Px5&JcL0$TzGj-j!S}b6O89K@f9!{1&eje ennTtc83tP(!9y6>!^X-vIW7r^W&UA&QN4d|?DKd4 delta 168 zcmZ3$afLBuIWI340}xFAk)LS~q#uJgFu(+5d=>&SrZc24q%h_%O)tHXA*B%d(+un zLaeItfkO^d$^nT3YK5vQ1(5^)Loe-ZE$zYDD<^J2;l!!$&DtR!E#uv{GxL7)=Dj!b zd;T+@&k|_AZ2oNhBNOr(2g8;cbasD$&J#ijm2A?I>XJkfCDXUP z&eg>x)4#oQOLvxZ54tvBb<+oXx+@IopR?+6bxNOWu!iY+wS}hRd)UKO706$v$?R3b zV-LK=io`K4n9P~J=NN5g%`ho#>;(@>?Bj{;7C}5AKamyq#tnjz=3#NNZMN78_`1wq za&dwFzFKQKEmrgI`fbmzu?MUH8}Qni!|%DPW`orrR91_Rvbwq+sfGdm8%F2&zT{K~ zlNm7SVt%`%UpW3~JxHJ2MHl8P`6z7|xV>RSS;GK(zK#8yVf^TucC6v(f0Vh_H2HOl z*_7vSoQ8aeVI=$9j&ff)j?K(=Je9Fr!)$nv+$cX|dTh~Zu~?IBz_EFZ8m7lFB`*js z!G{-6AR&an9o-Iy?%uDjo!+<?_rPQe%a#X}_ zp+^U(vd7s39Mu0)Wjk@`3dcm*N2VhPMbJQn4Mn5!cJh#ov_Rl#4iHqPscq#@RmcjI zHbiYf=jCt!B>Jc}FSN&o@MS{P-=!mTEC@Ol2XssVMbn`1x~wUXdiRwCuL)28NnCGiHC5UGnkbK|j4XTD>! zJ)992GridK`2d3Xjg;%$idW!aMd=08^LadhUPj7-FLsb3wb68}26GQE7LDS&dltk& z#y*822nQ?~0E-zNUvRwfog5}?$jy_8 z_!IOC$4J*Rxo3Dl(J0N@H16f*+8$eGG2LP1$Riral) z?PoYdfpx+C3&cLw=0-QJhq=+`a*&(q<)*^iRQKzBRMsYY+GMCr0*}jQHqVFUGtW;1 zo6G||1;FN|&64+~?x z!gyF1@6Ps*jc+W4$HsSvJgFQI1@$eF3+g)*-5WbuDRlwqe^|uvVN~;#RFt7BW_#JG z(z|gnOx?ym(YRiT@DHZsefmmVO0V)OU;*!oyAEPUmL#c9MuUUTPEwVi1|1cf=O0hK c#rbz1l;ykxz8)1DmmXbti}UaPLn)&97nPR;JOBUy literal 209 zcmZ3^%ge<81k-=yXIcX3#~=<2FhLogg@BCd3@HpLj5!Rsj8Tk?3@J>(44TX@K?*b( zZ?Wa(r=;c-`)M-W;!Md(%uCPLOGzqX21>4E_zY6>OHV%|KQ~psG^sSNq*On(A~m_R zB)>?%JijQrxF9h(RX;huC{-U~j9x+IFAf_ZyEG@&u80Guoe_wOWr4&8W=2NF8w@fR Ku%RM0pb7xLi8T)Z diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index 2a36fd69370b38a98d8b01bf8eb9817c42f16ed6..6faf416fe2e35cd0c2d6291cad1c5afdf0da7060 100644 GIT binary patch literal 1503 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 U?jm`S@TF_-nBn+etiitj0N(FW!vFvP literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 71a8362..578e3ec 100644 --- a/core/models.py +++ b/core/models.py @@ -1,3 +1,25 @@ from django.db import models -# Create your models here. +class RadioStream(models.Model): + name = models.CharField(max_length=200, default="Lili Records Live") + url = models.URLField(help_text="The URL of the live audio stream (e.g., Icecast/Shoutcast URL)") + is_active = models.BooleanField(default=True) + created_at = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return self.name + +class Show(models.Model): + title = models.CharField(max_length=200) + host = models.CharField(max_length=200) + description = models.TextField(blank=True) + image_url = models.URLField(blank=True, null=True, help_text="URL for the show image") + start_time = models.TimeField() + end_time = models.TimeField() + weekday = models.IntegerField(choices=[ + (0, 'Monday'), (1, 'Tuesday'), (2, 'Wednesday'), + (3, 'Thursday'), (4, 'Friday'), (5, 'Saturday'), (6, 'Sunday') + ]) + + def __str__(self): + return f"{self.title} with {self.host}" diff --git a/core/templates/base.html b/core/templates/base.html index 1e7e5fb..b91916b 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -1,25 +1,144 @@ - + - - {% block title %}Knowledge Base{% endblock %} - {% if project_description %} - - - - {% endif %} - {% if project_image_url %} - - - {% endif %} - {% load static %} - - {% block head %}{% endblock %} + + + {% block title %}{{ project_name }}{% endblock %} + + {% if project_description %} + + + + {% endif %} + {% if project_image_url %} + + + {% endif %} + + {% load static %} + + + + + + + + + + + {% block head %}{% endblock %} - {% block content %}{% endblock %} + + +
+ {% block content %}{% endblock %} +
+ +
+
+

© 2026 Lili Record's Radio. Todos los derechos reservados.

+ +
+
+ + + - + \ No newline at end of file diff --git a/core/templates/core/index.html b/core/templates/core/index.html index faec813..00da881 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,145 +1,185 @@ {% extends "base.html" %} - -{% block title %}{{ project_name }}{% endblock %} - -{% block head %} - - - - -{% endblock %} +{% load static %} {% block content %} -
-
-

Analyzing your requirements and generating your app…

-
- Loading… +
+
+ +
+

+ Siente el Ritmo de Lili Records +

+

+ La radio que te acompaña en cada momento. Música, entrevistas y el mejor contenido en vivo directamente en tus oídos. +

+ +
+ +
+ +
+
+ {% if current_show and current_show.image_url %} + {{ current_show.title }} + {% else %} +
+ +
+ {% endif %} +
LIVE
+
+
+

{% if current_show %}{{ current_show.title }}{% else %}Música Continua{% endif %}

+

{% if current_show %}Con {{ current_show.host }}{% else %}Lili Records Radio{% endif %}

+
+
+ + +
+ {% if active_stream %} + +
+ +
+
+
+
+
+
+ + +
+
+
+ Listo para transmitir + {{ active_stream.name }} +
+ {% else %} +
+ No hay transmisiones activas en este momento. +
+ {% endif %} +
+
+
+ + +
+
+
+
+
+ +
+
+
Optimizado para iOS
+

Disfruta de la mejor experiencia móvil con nuestra interfaz diseñada para tu iPhone.

+
+
+
+
+
+
+ +
+
+
Programación 24/7
+

Nunca te pierdas tus shows favoritos con nuestra grilla de programación actualizada.

+
+
+
+
+
+
+ +
+
+
Episodios On-Demand
+

¿Te perdiste un programa? Escúchalo cuando quieras en nuestra sección de podcasts.

+
+
+
+
+
-

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 + + + + + +{% endblock %} diff --git a/core/views.py b/core/views.py index c9aed12..92e451e 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,28 @@ 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 RadioStream, Show 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" + """Render the radio player landing page.""" now = timezone.now() + current_weekday = now.weekday() + current_time = now.time() + + active_stream = RadioStream.objects.filter(is_active=True).first() + + # Simple logic for current show: match weekday and time range + current_show = Show.objects.filter( + weekday=current_weekday, + start_time__lte=current_time, + end_time__gte=current_time + ).first() 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", ""), + "project_name": "Lili Records Radio", + "active_stream": active_stream, + "current_show": current_show, + "now": now, + "project_description": os.getenv("PROJECT_DESCRIPTION", "Lili Records Radio - La mejor música en vivo."), } - return render(request, "core/index.html", context) + return render(request, "core/index.html", context) \ No newline at end of file