Ahí viene el nuevo frontend (de nuevo) #2

Closed
perro wants to merge 13 commits from perro into develop
13 changed files with 134 additions and 106 deletions
Showing only changes of commit 0632c764fc - Show all commits

View File

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

View File

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

View File

@ -16,6 +16,21 @@ def search(request):
return render(request, "search.html", context) 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): def movie(request, id):
context = {"movie": Movie.objects.get_movie(id)} context = {"movie": Movie.objects.get_movie(id)}
return render(request, "movie.html", context) 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 = [ urlpatterns = [
path("", views.home, name="home"), path("", views.home, name="home"),
path("search/", views.search, name="search"), 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("movie/<int:id>", views.movie, name="movie"),
path("ultimas/rss/", LatestMoviesFeed()), path("ultimas/rss/", LatestMoviesFeed()),
path("admin/", admin.site.urls), 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%}"> <section class="hero {% if request.get_full_path == "/" %}is-primary full{% else %}is-large{% endif%}">
<div class="hero-head movie-head"> {% include 'info-head.html' with movie=movie %}
<p class="title">{{ movie.name }}</p> {% include 'info-body.html' with movie=movie %}
{% if request.get_full_path != "/" %} {% include 'info-foot.html' with movie=movie %}
<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>
</section> </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>
<div id="menu" class="navbar-menu force-display"> <div id="menu" class="navbar-menu force-display">
<div class="navbar-start"> <div class="navbar-start">
{% if request.get_full_path == "/" %} {% if request.get_full_path != "/" %}
<a class="navbar-item" href="{% url 'search' %}">Buscar</a>
{% else %}
<a class="navbar-item" href="{% url 'home' %}">Inicio</a> <a class="navbar-item" href="{% url 'home' %}">Inicio</a>
{% endif %} {% 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"> <div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Más</a> <a class="navbar-link">Más</a>
<div class="navbar-dropdown"> <div class="navbar-dropdown">
<a class="navbar-item">Acerca</a> <a class="navbar-item" href="{% url 'about' %}" >Acerca</a>
<hr class="navbar-divider"> <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>
</div> </div>
<div class="navbar-end"> <div class="navbar-end">
<div class="navbar-item"> <div class="navbar-item">
<div class="buttons"> <div class="buttons">
<a class="button is-primary">Ingresa</a> <a class="button is-primary" href="{% url 'admin:index' %}">Ingresa</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,6 +1,10 @@
<section class="hero"> <section class="hero">
<div class="hero-body hero-cartels"> <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"> <div class="cartels">
{% for movie in content %} {% for movie in content %}
<div class="cartel"> <div class="cartel">