This commit is contained in:
perro tuerto 2022-11-17 15:41:49 -08:00
parent 3567a78776
commit d22e6ecda1
7 changed files with 197 additions and 0 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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>:&nbsp;<code>qztd3l00xle5tffdqvh2snvadkuau2ml0uqm4n875d</code></p>
<p><b>BTC</b>:&nbsp;<code>3FhiXcXmAesmQzrNEngjHFnvaJRhU1AGWV</code></p>
<p><b>LTC</b>:&nbsp;<code>MBcgQ3LQJA4W2wsXknTdm2fxRSysLaBJHS</code></p>
<p><b>ETH</b>:&nbsp;<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>

View File

@ -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>