Fuente a local; deshabilitación de toggle; habilitación de tooltip

This commit is contained in:
perro tuerto 2023-01-09 17:41:36 -08:00
parent 567f28122c
commit e1c2e209e8
6 changed files with 96 additions and 17 deletions

View File

@ -0,0 +1,33 @@
# Generated by Django 3.2.15 on 2023-01-09 18:10
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('main', '0004_auto_20210807_2207'),
]
operations = [
migrations.AlterField(
model_name='country',
name='id',
field=models.AutoField(primary_key=True, serialize=False),
),
migrations.AlterField(
model_name='gender',
name='id',
field=models.AutoField(primary_key=True, serialize=False),
),
migrations.AlterField(
model_name='movie',
name='id',
field=models.AutoField(primary_key=True, serialize=False),
),
migrations.AlterField(
model_name='person',
name='id',
field=models.AutoField(primary_key=True, serialize=False),
),
]

View File

@ -1,5 +1,3 @@
import requests
import shutil
import random import random
import time import time
import wikipediaapi import wikipediaapi
@ -131,7 +129,7 @@ class MovieQuerySet(models.QuerySet):
key = Gender.objects.get(pk=gender).name key = Gender.objects.get(pk=gender).name
picked = self.random_pick(genders=gender) picked = self.random_pick(genders=gender)
if picked: if picked:
sections["genders"][key] = self.fix_all_data(picked) sections["genders"][key] = self.fix_all(picked)
return sections return sections
def home_sections(self): def home_sections(self):
@ -141,14 +139,14 @@ class MovieQuerySet(models.QuerySet):
Las secciones son novedades, mejor valorados y más descargados. Las secciones son novedades, mejor valorados y más descargados.
""" """
sections = { sections = {
"Novedades": self.fix_all_data(self.top_pick("id")), "Novedades": self.fix_all(self.top_pick("id")),
"Mejor valorados": self.fix_all_data(self.top_random_pick("stars")), "Mejor valorados": self.fix_all(self.top_random_pick("stars")),
"Más descargados": self.fix_all_data(self.top_pick("count")), "Más descargados": self.fix_all(self.top_pick("count")),
} }
sections["genders"] = {} sections["genders"] = {}
return sections return sections
def fix_all_data(self, movies): def fix_all(self, movies):
""" """
Enmienda los datos de las películas. Enmienda los datos de las películas.
""" """
@ -167,7 +165,7 @@ class MovieQuerySet(models.QuerySet):
movie["count_formatted"] = self.format_count(movie["count"]) movie["count_formatted"] = self.format_count(movie["count"])
movie["stars_icons"] = self.format_stars(movie["stars"]) movie["stars_icons"] = self.format_stars(movie["stars"])
movie["file_name"] = self.fix_path(movie["file_name"]) movie["file_name"] = self.fix_path(movie["file_name"])
movie["cartel"] = settings.MEDIA_URL + movie["cartel"] movie["cartel"] = self.fix_path(movie["cartel"])
if wikipedia: if wikipedia:
movie["wiki"] = self.get_wiki(movie) movie["wiki"] = self.get_wiki(movie)
@ -176,10 +174,11 @@ class MovieQuerySet(models.QuerySet):
Enmienda ruta a medio. Enmienda ruta a medio.
La ruta es distinta según se esté en producción o en desarrollo La ruta es distinta según se esté en producción o en desarrollo
('DEBUG'). ('DEBUG'). La URL_DEBUB apunta a la dirección en nebula.
""" """
# ~ print('EL', el)
if settings.DEBUG: if settings.DEBUG:
if str(Path(el).parent) == '.':
el = f"{el[0]}/{el}"
return settings.URL_DEBUG.format(el) return settings.URL_DEBUG.format(el)
else: else:
return settings.MEDIA_ROOT / el return settings.MEDIA_ROOT / el
@ -189,8 +188,8 @@ class MovieQuerySet(models.QuerySet):
Enmienda sinopsis de Wikipedia. Enmienda sinopsis de Wikipedia.
Los sumarios de artículos a la Wikipedia vienen con notas al pie que no Los sumarios de artículos a la Wikipedia vienen con notas al pie que no
son necesarias. Para la sinopsis estas notas son eliminadas y se regresa son necesarias. Para la sinopsis estas notas son eliminadas y se
el código HTML como una cadena de caracteres. regresa el código HTML como una cadena de caracteres.
""" """
html = BeautifulSoup(raw, "lxml") html = BeautifulSoup(raw, "lxml")
for ref in html.find_all("sup", "reference"): for ref in html.find_all("sup", "reference"):
@ -259,7 +258,7 @@ class MovieQuerySet(models.QuerySet):
} }
else: else:
return None return None
except: except Exception:
return None return None
def get_movie_by_id(self, id): def get_movie_by_id(self, id):

File diff suppressed because one or more lines are too long

View File

@ -230,6 +230,39 @@
height: calc(100% - 3em); height: calc(100% - 3em);
} }
/* Tooltip de la ficha; Cfr:
* https://www.w3schools.com/howto/howto_css_tooltip.asp
*/
/* Tooltip container */
.tooltip {
position: relative;
}
/* Tooltip text */
.tooltip .tooltiptext {
visibility: hidden;
opacity: 0;
width: 100%;
background-color: var(--color-background);
color: #fff;
border-top: 3px solid var(--color-primary);
text-align: center;
font-size: 1.25rem;
padding: .5em;
position: absolute;
z-index: 1;
top: 0;
left: 0;
transition: opacity 0.3s;
}
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
/* Reproductor */ /* Reproductor */
button.plyr__control--overlaid { button.plyr__control--overlaid {

Binary file not shown.

View File

@ -14,13 +14,21 @@
{% endif %} {% endif %}
<div class="cartels"> <div class="cartels">
{% for movie in content %} {% for movie in content %}
<div class="cartel"> <div class="cartel tooltip">
<input type="checkbox" class="toggle"> <span class="tooltiptext">{{ movie.name }}</span>
<!--
Lo comentado activaría una ficha que se ve en lugar del cartel.
Una idea a futuro es que sirva para mostrar la ficha de la
pelicula como ventana flotante.
<input type="checkbox" class="toggle">
-->
<div class="info"> <div class="info">
{% include 'info.html' with movie=movie %} {% include 'info.html' with movie=movie %}
</div> </div>
<figure class="image is-2by3"> <figure class="image is-2by3">
<img src="{{ movie.cartel }}"> <a href="/movie/{{ movie.id }}">
<img src="{{ movie.cartel }}">
</a>
</figure> </figure>
</div> </div>
{% endfor %} {% endfor %}