Formateos

This commit is contained in:
perro tuerto 2022-11-16 20:22:39 -08:00
parent 2dabc4a09a
commit 0632c764fc
13 changed files with 134 additions and 106 deletions

View File

@ -6,3 +6,4 @@ httpx
django-tastypie
django-admin-list-filter-dropdown
wikipedia-api
bs4

View File

@ -3,6 +3,7 @@ import shutil
import random
import time
import wikipediaapi
from bs4 import BeautifulSoup
from django.conf import settings
from django.db import models
from pathlib import Path
@ -114,7 +115,7 @@ class MovieQuerySet(models.QuerySet):
"Mejor valorados": self.fix_all_data(self.top_random_pick("stars")),
"Más descargados": self.fix_all_data(self.top_pick("count")),
}
sections['genders'] = {}
sections["genders"] = {}
return sections
def fix_all_data(self, movies):
@ -129,7 +130,7 @@ class MovieQuerySet(models.QuerySet):
movie["file_name"] = self.fix_path(movie["file_name"])
movie["cartel"] = self.fix_path(movie["cartel"])
if wikipedia:
movie['wiki'] = self.get_wiki(movie)
movie["wiki"] = self.get_wiki(movie)
def fix_path(self, el):
if settings.DEBUG:
@ -138,8 +139,11 @@ class MovieQuerySet(models.QuerySet):
return settings.MEDIA_ROOT / el
def fix_summ(self, raw):
# TODO: quitar .reference
return raw
html = BeautifulSoup(raw, "lxml")
for ref in html.find_all("sup", "reference"):
ref.decompose()
clean = list(map(lambda x: str(x), html.body.children))
return " ".join(clean)
def format_stars(self, num):
stars = "" * num
@ -155,17 +159,17 @@ class MovieQuerySet(models.QuerySet):
return time.strftime("%H:%M", time.gmtime(secs))
def get_wiki(self, movie, again=True):
wiki = self.get_wiki_page(movie['original_name'])
wiki = self.get_wiki_page(movie["original_name"])
if not wiki:
wiki = self.get_wiki_page(movie['name'])
wiki = self.get_wiki_page(movie["name"])
return wiki
def get_wiki_page(self, title):
try:
lang = settings.LANGUAGE_CODE.split('-')[0]
wiki = wikipediaapi.Wikipedia(lang,
extract_format=wikipediaapi.ExtractFormat.HTML)
lang = settings.LANGUAGE_CODE.split("-")[0]
wiki = wikipediaapi.Wikipedia(
lang, extract_format=wikipediaapi.ExtractFormat.HTML
)
page = wiki.page(title)
if page.exists():
return {
@ -175,7 +179,7 @@ class MovieQuerySet(models.QuerySet):
}
else:
return None
except NameError:
except:
return None
def get_movie(self, id):
@ -185,7 +189,6 @@ class MovieQuerySet(models.QuerySet):
return movie
def upload_cartel(instance, filename):
first = filename[0].upper()
if first.isdigit():

View File

@ -16,6 +16,21 @@ def search(request):
return render(request, "search.html", context)
def about(request):
context = {}
return render(request, "about.html", context)
def bugs(request):
context = {}
return render(request, "bugs.html", context)
def movie(request, id):
context = {"movie": Movie.objects.get_movie(id)}
return render(request, "movie.html", context)
def movies(request, key):
context = {"sections": {"Llave": "Valor"}}
return render(request, "movies.html", context)

View File

@ -18,7 +18,9 @@ v1_api.register(ResourceMovies())
urlpatterns = [
path("", views.home, name="home"),
path("search/", views.search, name="search"),
# path('movies/<str:args>', views.movies, name='movies'),
path("about/", views.about, name="about"),
path("bugs/", views.bugs, name="bugs"),
path("movies/<str:key>", views.movies, name="movies"),
path("movie/<int:id>", views.movie, name="movie"),
path("ultimas/rss/", LatestMoviesFeed()),
path("admin/", admin.site.urls),

View File

@ -0,0 +1,7 @@
{% extends "base.html" %}
{% block content %}
<b>TODO: Acerca</b>
{% endblock %}

View File

@ -0,0 +1,7 @@
{% extends "base.html" %}
{% block content %}
<b>TODO: Reporta un problema</b>
{% endblock %}

View File

@ -0,0 +1,43 @@
<div class="hero-body movie-body">
{% if request.get_full_path == "/" %}
<div class="stats">
<p class="stars">{{ movie.stars_icons }}</p>
<p><i class="gg-time"></i>{{ movie.duration_formatted }}</p>
<p><i class="gg-software-download"></i>{{ movie.count_formatted }}</p>
</div>
{% else %}
<div class="about">
<div class="columns is-desktop">
<div class="column">
<h2 class="subtitle">Cartel</h2>
<figure>
<img src="{{ movie.cartel }}">
</figure>
</div>
<div class="column">
<h2 class="subtitle">Ficha técnica</h2>
<table class="table infobox">
<tbody>
<tr><td>Título original</td><td>{{ movie.original_name }}<td></tr>
<tr><td>Año</td><td>{{ movie.year }}<td></tr>
<tr><td>País</td><td>{{ movie.countries }}<td></tr>
<tr><td>Duración</td><td>{{ movie.duration }} min<td></tr>
<tr><td>Dirección</td><td>{{ movie.directors }}<td></tr>
<tr><td>Reparto</td><td>{{ movie.actors }}<td></tr>
<tr><td>Género</td><td>{{ movie.genders }}<td></tr>
</tbody>
</table>
</div>
</div>
{% if movie.wiki.summary %}
<h2 class="subtitle">Sinopsis de <a href="{{ movie.wiki.url }}" target="_blank">Wikipedia</a></h2>
{{ movie.wiki.summary | safe }}
{% endif %}
</div>
{% if user.is_superuser %}
<video controls>
<source src="{{ movie.file_name }}" type="video/mp4">
</video>
{% endif %}
{% endif %}
</div>

View File

@ -0,0 +1,12 @@
<div class="hero-foot">
<nav class="tabs is-boxed is-fullwidth">
<div class="container">
<ul>
<li><a href="{{ movie.file_name }}" target="_blank" download>Descargar</a></li>
{% if request.get_full_path == "/" %}
<li><a href="/movie/{{ movie.id }}">Detalles</a></li>
{% endif %}
</ul>
</div>
</nav>
</div>

View File

@ -0,0 +1,10 @@
<div class="hero-head movie-head">
<p class="title">{{ movie.name }}</p>
{% if request.get_full_path != "/" %}
<p class="stats">
<span class="stars">{{ movie.stars_icons }}</span>
<span><i class="gg-time"></i>{{ movie.duration_formatted }}</span>
<span><i class="gg-software-download"></i>{{ movie.count_formatted }}</span>
</p>
{% endif %}
</div>

View File

@ -1,88 +1,5 @@
<section class="hero {% if request.get_full_path == "/" %}is-primary full{% else %}is-large{% endif%}">
<div class="hero-head movie-head">
<p class="title">{{ movie.name }}</p>
{% if request.get_full_path != "/" %}
<p class="stats">
<span class="stars">{{ movie.stars_icons }}</span>
<span><i class="gg-time"></i>{{ movie.duration_formatted }}</span>
<span><i class="gg-software-download"></i>{{ movie.count_formatted }}</span>
</p>
{% endif %}
</div>
<div class="hero-body movie-body">
{% if request.get_full_path == "/" %}
<div class="stats">
<p class="stars">{{ movie.stars_icons }}</p>
<p><i class="gg-time"></i>{{ movie.duration_formatted }}</p>
<p><i class="gg-software-download"></i>{{ movie.count_formatted }}</p>
</div>
{% else %}
<div class="about">
<div class="columns is-desktop">
<div class="column">
<h2 class="subtitle">Cartel</h2>
<figure>
<img src="{{ movie.cartel }}">
</figure>
</div>
<div class="column">
<h2 class="subtitle">Ficha técnica</h2>
<table class="table is-fullwidth infobox">
<tbody>
<tr>
<td>Título original</td>
<td>{{ movie.original_name }}<td>
</tr>
<tr>
<td>Año</td>
<td>{{ movie.year }}<td>
</tr>
<tr>
<td>País</td>
<td>{{ movie.countries }}<td>
</tr>
<tr>
<td>Duración</td>
<td>{{ movie.duration }} min<td>
</tr>
<tr>
<td>Dirección</td>
<td>{{ movie.directors }}<td>
</tr>
<tr>
<td>Reparto</td>
<td>{{ movie.actors }}<td>
</tr>
<tr>
<td>Género</td>
<td>{{ movie.genders }}<td>
</tr>
</tbody>
</table>
</div>
</div>
{% if movie.wiki.summary %}
<h2 class="subtitle">Sinopsis de <a href="{{ movie.wiki.url }}" target="_blank">Wikipedia</a></h2>
{{ movie.wiki.summary | safe }}
{% endif %}
</div>
{% if user.is_superuser %}
<video controls>
<source src="{{ movie.file_name }}" type="video/mp4">
</video>
{% endif %}
{% endif %}
</div>
<div class="hero-foot">
<nav class="tabs is-boxed is-fullwidth">
<div class="container">
<ul>
<li><a href="{{ movie.file_name }}" target="_blank" download>Descargar</a></li>
{% if request.get_full_path == "/" %}
<li><a href="/movie/{{ movie.id }}">Detalles</a></li>
{% endif %}
</ul>
</div>
</nav>
</div>
{% include 'info-head.html' with movie=movie %}
{% include 'info-body.html' with movie=movie %}
{% include 'info-foot.html' with movie=movie %}
</section>

View File

@ -0,0 +1,6 @@
{% extends "base.html" %}
{% block content %}
{% for section, content in sections.items %}
{% include 'section.html' with section=section content=content %}
{% endfor %}
{% endblock %}

View File

@ -12,24 +12,25 @@
</div>
<div id="menu" class="navbar-menu force-display">
<div class="navbar-start">
{% if request.get_full_path == "/" %}
<a class="navbar-item" href="{% url 'search' %}">Buscar</a>
{% else %}
{% if request.get_full_path != "/" %}
<a class="navbar-item" href="{% url 'home' %}">Inicio</a>
{% endif %}
{% if request.get_full_path != "/search/" %}
<a class="navbar-item" href="{% url 'search' %}">Buscar</a>
{% endif %}
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Más</a>
<div class="navbar-dropdown">
<a class="navbar-item">Acerca</a>
<a class="navbar-item" href="{% url 'about' %}" >Acerca</a>
<hr class="navbar-divider">
<a class="navbar-item">Reporta un problema</a>
<a class="navbar-item" href="{% url 'bugs' %}">Reporta un problema</a>
</div>
</div>
</div>
<div class="navbar-end">
<div class="navbar-item">
<div class="buttons">
<a class="button is-primary">Ingresa</a>
<a class="button is-primary" href="{% url 'admin:index' %}">Ingresa</a>
</div>
</div>
</div>

View File

@ -1,6 +1,10 @@
<section class="hero">
<div class="hero-body hero-cartels">
<p class="title"><a href="movies/{{ section }}">{{ section }}<span class="arrows"/></a></p>
{% if request.get_full_path == "/" %}
<p class="title"><a href="movies/{{ section }}">{{ section }}<span class="arrows"/></a></p>
{% else %}
<p class="title">{{ section }}</p>
{% endif %}
<div class="cartels">
{% for movie in content %}
<div class="cartel">