Ah?
This commit is contained in:
parent
3567a78776
commit
d22e6ecda1
|
@ -1,9 +1,12 @@
|
|||
import requests
|
||||
import shutil
|
||||
import random
|
||||
<<<<<<< HEAD
|
||||
import time
|
||||
import wikipediaapi
|
||||
from bs4 import BeautifulSoup
|
||||
=======
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from pathlib import Path
|
||||
|
@ -73,6 +76,7 @@ class Person(models.Model):
|
|||
|
||||
|
||||
class MovieQuerySet(models.QuerySet):
|
||||
<<<<<<< HEAD
|
||||
def random_pick(self, random_max=6, min_items=20, **kwargs):
|
||||
all = list(Movie.objects.filter(**kwargs).values())
|
||||
if len(all) < min_items:
|
||||
|
@ -88,6 +92,48 @@ class MovieQuerySet(models.QuerySet):
|
|||
|
||||
def top_random_pick(self, key, top_max=6):
|
||||
all = list(Movie.objects.order_by(f"-{key}").values())
|
||||
=======
|
||||
def _to_str(self, q):
|
||||
return ",".join([r.name for r in q.all()])
|
||||
|
||||
def _to_link(self, file_name):
|
||||
# ~ folder = file_name[0].upper()
|
||||
# ~ if folder.isdigit():
|
||||
# ~ folder = '0'
|
||||
url = settings.URL_CDN.format(file_name)
|
||||
return url
|
||||
|
||||
def _to_image(self, img, director=""):
|
||||
if settings.DEBUG:
|
||||
path = Path(settings.BASE_DIR + img.url)
|
||||
remote = settings.URL_CDN.format(img.url)
|
||||
remote = remote.replace("/media/", "")
|
||||
if not path.exists():
|
||||
if not path.parent.exists():
|
||||
path.parent.mkdir()
|
||||
res = requests.get(remote, stream=True)
|
||||
if res.status_code == 200:
|
||||
with open(path, "wb") as f:
|
||||
shutil.copyfileobj(res.raw, f)
|
||||
url = ""
|
||||
if director:
|
||||
url = "../../"
|
||||
return url + img.url
|
||||
|
||||
def random_pick (self, random_max = 5, **kwargs):
|
||||
all = list(Movie.objects.filter(**kwargs).values())
|
||||
if len(all) > random_max:
|
||||
return random.sample(all, random_max)
|
||||
else:
|
||||
return all
|
||||
|
||||
def top_pick (self, key, top_max = 5):
|
||||
all = list(Movie.objects.order_by(f'-{key}').values())
|
||||
return all[:top_max]
|
||||
|
||||
def top_random_pick(self, key, top_max = 5):
|
||||
all = list(Movie.objects.order_by(f'-{key}').values())
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
top = []
|
||||
for movie in all:
|
||||
if movie[key] == all[0][key]:
|
||||
|
@ -98,6 +144,7 @@ class MovieQuerySet(models.QuerySet):
|
|||
return random.sample(top, top_max)
|
||||
else:
|
||||
return top
|
||||
<<<<<<< HEAD
|
||||
|
||||
def home_pick(self):
|
||||
genders = list(Gender.objects.values_list("id", flat=True))
|
||||
|
@ -187,6 +234,29 @@ class MovieQuerySet(models.QuerySet):
|
|||
movie.pop("_state")
|
||||
self.fix_data(movie)
|
||||
return movie
|
||||
=======
|
||||
|
||||
def home_pick(self):
|
||||
genders = list(Gender.objects.values_list('id', flat = True))
|
||||
sections = {
|
||||
'Novedades': self.top_pick('id'),
|
||||
'Mejor valorados': self.top_random_pick('stars'),
|
||||
'Más descargados': self.top_pick('count'),
|
||||
'genders': {},
|
||||
}
|
||||
for gender in genders:
|
||||
key = Gender.objects.get(pk=gender).name
|
||||
sections['genders'][key] = self.random_pick(genders=gender)
|
||||
return sections
|
||||
|
||||
def get_directors(self):
|
||||
data = (
|
||||
self.distinct()
|
||||
.values_list("directors__name", flat=True)
|
||||
.order_by("directors")
|
||||
)
|
||||
return data
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
|
||||
|
||||
def upload_cartel(instance, filename):
|
||||
|
@ -217,9 +287,13 @@ class Movie(models.Model):
|
|||
genders = models.ManyToManyField(
|
||||
Gender, related_name="genders", verbose_name="Género", blank=True
|
||||
)
|
||||
<<<<<<< HEAD
|
||||
cartel = models.ImageField(
|
||||
"Cartel", upload_to=upload_cartel, null=True, blank=True
|
||||
)
|
||||
=======
|
||||
cartel = models.ImageField("Cartel", upload_to=upload_cartel, null=True, blank=True)
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
count = models.PositiveIntegerField("Descargas", default=0)
|
||||
stars = models.PositiveSmallIntegerField("Estrellas", default=0)
|
||||
published = models.BooleanField("¿Publicar?", default=True)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<<<<<<< HEAD
|
||||
/* BASE */
|
||||
|
||||
:root {
|
||||
|
@ -319,3 +320,9 @@
|
|||
border-bottom-right-radius: 40px;
|
||||
right: -6px
|
||||
}
|
||||
=======
|
||||
.navbar.is-fixed-top {
|
||||
position: sticky;
|
||||
top: -1px;
|
||||
}
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<<<<<<< HEAD
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
modMenu();
|
||||
});
|
||||
|
@ -12,8 +13,25 @@ function modMenu() {
|
|||
el.addEventListener('click', () => {
|
||||
const target = el.dataset.target;
|
||||
const $target = document.getElementById(target);
|
||||
=======
|
||||
// Para menú en móviles; cfr: https://bulma.io/documentation/components/navbar/#navbar-burger
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Get all "navbar-burger" elements
|
||||
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||||
// Add a click event on each of them
|
||||
$navbarBurgers.forEach( el => {
|
||||
el.addEventListener('click', () => {
|
||||
// Get the target from the "data-target" attribute
|
||||
const target = el.dataset.target;
|
||||
const $target = document.getElementById(target);
|
||||
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
el.classList.toggle('is-active');
|
||||
$target.classList.toggle('is-active');
|
||||
});
|
||||
});
|
||||
<<<<<<< HEAD
|
||||
}
|
||||
=======
|
||||
});
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
|
|
|
@ -7,6 +7,7 @@ from .models import Movie, Person
|
|||
|
||||
|
||||
def home(request):
|
||||
<<<<<<< HEAD
|
||||
context = {"sections": Movie.objects.home_pick()}
|
||||
return render(request, "home.html", context)
|
||||
|
||||
|
@ -34,3 +35,11 @@ def movie(request, id):
|
|||
def movies(request, key):
|
||||
context = {"sections": {"Llave": "Valor"}}
|
||||
return render(request, "movies.html", context)
|
||||
=======
|
||||
context = {'sections': Movie.objects.home_pick()}
|
||||
return render(request, 'home.html', context)
|
||||
|
||||
def search (request):
|
||||
context = {}
|
||||
return render(request, 'search.html', context)
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
|
|
|
@ -16,6 +16,7 @@ v1_api.register(ResourceMovies())
|
|||
|
||||
|
||||
urlpatterns = [
|
||||
<<<<<<< HEAD
|
||||
path("", views.home, name="home"),
|
||||
path("search/", views.search, name="search"),
|
||||
path("about/", views.about, name="about"),
|
||||
|
@ -25,4 +26,12 @@ urlpatterns = [
|
|||
path("ultimas/rss/", LatestMoviesFeed()),
|
||||
path("admin/", admin.site.urls),
|
||||
# path('api/', include(v1_api.urls)),
|
||||
=======
|
||||
path('', views.home, name='home'),
|
||||
path('search/', views.search, name='search'),
|
||||
#path('movies/<str:args>', views.movies, name='movies'),
|
||||
path('ultimas/rss/', LatestMoviesFeed()),
|
||||
path('admin/', admin.site.urls),
|
||||
#path('api/', include(v1_api.urls)),
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
|
|
@ -6,8 +6,13 @@
|
|||
<title>MauFlix</title>
|
||||
{% load static %}
|
||||
<link rel="shortcut icon" href="{% static 'img/favicon.png' %}">
|
||||
<<<<<<< HEAD
|
||||
<link rel="stylesheet" href="{% static 'css/bulma.min.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'css/bulma.darkly.min.css' %}">
|
||||
=======
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="https://jenil.github.io/bulmaswatch/darkly/bulmaswatch.min.css">
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
<link rel="stylesheet" href="{% static 'css/main.css' %}">
|
||||
<script type="text/javascript" src="{% static 'js/main.js' %}"></script>
|
||||
</head>
|
||||
|
@ -15,6 +20,7 @@
|
|||
<section class="hero is-small is-info">
|
||||
<div class="hero-body has-text-centered">
|
||||
<p>Otras plataformas tienen todas las películas, excepto las que nos gustan :)</p>
|
||||
<<<<<<< HEAD
|
||||
</div>
|
||||
</section>
|
||||
{% include 'nav.html' %}
|
||||
|
@ -22,5 +28,67 @@
|
|||
{% block content %}{% endblock %}
|
||||
</section>
|
||||
{% include 'footer.html' %}
|
||||
=======
|
||||
</div>
|
||||
</section>
|
||||
<nav class="navbar is-fixed-top" role="navigation" aria-label="main navigation">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="{% url 'home' %}">
|
||||
<img src="{% static 'img/logo-mauflix.png' %}" width="112" height="28">
|
||||
</a>
|
||||
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="menu">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="menu" class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
{% if request.get_full_path == "/" %}
|
||||
<a class="navbar-item" href="{% url 'search' %}">Buscar</a>
|
||||
{% else %}
|
||||
<a class="navbar-item" href="{% url 'home' %}">Inicio</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>
|
||||
<hr class="navbar-divider">
|
||||
<a class="navbar-item">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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<section id="main">
|
||||
{% block content %}{% endblock %}
|
||||
</section>
|
||||
<footer class="footer">
|
||||
<div class="content">
|
||||
<p><b>BCH</b>: <code>qztd3l00xle5tffdqvh2snvadkuau2ml0uqm4n875d</code></p>
|
||||
<p><b>BTC</b>: <code>3FhiXcXmAesmQzrNEngjHFnvaJRhU1AGWV</code></p>
|
||||
<p><b>LTC</b>: <code>MBcgQ3LQJA4W2wsXknTdm2fxRSysLaBJHS</code></p>
|
||||
<p><b>ETH</b>: <code>0x61a4f614a30ff686445751ed8328b82b77ecfc69</code></p>
|
||||
</div>
|
||||
<div class="content has-text-centered">
|
||||
<p>Te recomendamos <a href="https://www.videolan.org/vlc/" target="_blank">VLC</a> para ver tus películas.</p>
|
||||
</div>
|
||||
<div class="content has-text-centered">
|
||||
<p>
|
||||
Sitio desarrollado con
|
||||
<a href="https://python.org" target='_blank'>Python</a>,
|
||||
<a href="https://djangoproject.com/" target='_blank'>Django</a> y
|
||||
<a href="https://bulma.io/" target='_blank'>Bulma</a>.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<section class="hero">
|
||||
<<<<<<< HEAD
|
||||
<div class="hero-body hero-cartels">
|
||||
{% if request.get_full_path == "/" %}
|
||||
<p class="title"><a href="movies/{{ section }}">{{ section }}<span class="arrows"/></a></p>
|
||||
|
@ -15,6 +16,17 @@
|
|||
<figure class="image is-2by3">
|
||||
<img src="{{ movie.cartel }}">
|
||||
</figure>
|
||||
=======
|
||||
<div class="hero-body">
|
||||
<p class="title">{{ section }}</p>
|
||||
<div class="columns is-desktop">
|
||||
{% for movie in content %}
|
||||
<div class="column">
|
||||
<figure class="image is-3by4">
|
||||
<img src="../media/{{ movie.cartel }}">
|
||||
</figure>
|
||||
{{ movie }}
|
||||
>>>>>>> fb23014 (Inicio de diseño)
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue