Ahí viene el nuevo frontend (de nuevo) #2
|
@ -6,3 +6,4 @@ httpx
|
|||
django-tastypie
|
||||
django-admin-list-filter-dropdown
|
||||
wikipedia-api
|
||||
bs4
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<b>TODO: Acerca</b>
|
||||
|
||||
{% endblock %}
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<b>TODO: Reporta un problema</b>
|
||||
|
||||
{% endblock %}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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 %}
|
|
@ -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>
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
<section class="hero">
|
||||
<div class="hero-body hero-cartels">
|
||||
{% 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">
|
||||
|
|
Loading…
Reference in New Issue