From d22e6ecda125f6c46363c057692be0aed01e7190 Mon Sep 17 00:00:00 2001 From: Nika Zhenya Date: Thu, 17 Nov 2022 15:41:49 -0800 Subject: [PATCH] Ah? --- source/main/models.py | 74 +++++++++++++++++++++++++++++++++ source/main/static/css/main.css | 7 ++++ source/main/static/js/main.js | 18 ++++++++ source/main/views.py | 9 ++++ source/mauflix/urls.py | 9 ++++ source/templates/base.html | 68 ++++++++++++++++++++++++++++++ source/templates/section.html | 12 ++++++ 7 files changed, 197 insertions(+) diff --git a/source/main/models.py b/source/main/models.py index 40ee484..5652844 100644 --- a/source/main/models.py +++ b/source/main/models.py @@ -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) diff --git a/source/main/static/css/main.css b/source/main/static/css/main.css index 20f9499..534b1b8 100644 --- a/source/main/static/css/main.css +++ b/source/main/static/css/main.css @@ -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) diff --git a/source/main/static/js/main.js b/source/main/static/js/main.js index 8417919..5595ae4 100644 --- a/source/main/static/js/main.js +++ b/source/main/static/js/main.js @@ -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) diff --git a/source/main/views.py b/source/main/views.py index 774907e..b534a1b 100644 --- a/source/main/views.py +++ b/source/main/views.py @@ -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) diff --git a/source/mauflix/urls.py b/source/mauflix/urls.py index 89597c2..dd9be15 100644 --- a/source/mauflix/urls.py +++ b/source/mauflix/urls.py @@ -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/', 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) diff --git a/source/templates/base.html b/source/templates/base.html index 9e77e1d..c0cf8bb 100644 --- a/source/templates/base.html +++ b/source/templates/base.html @@ -6,8 +6,13 @@ MauFlix {% load static %} +<<<<<<< HEAD +======= + + +>>>>>>> fb23014 (Inicio de diseño) @@ -15,6 +20,7 @@

Otras plataformas tienen todas las películas, excepto las que nos gustan :)

+<<<<<<< HEAD
{% include 'nav.html' %} @@ -22,5 +28,67 @@ {% block content %}{% endblock %} {% include 'footer.html' %} +======= + + + +
+ {% block content %}{% endblock %} +
+
+
+

BCHqztd3l00xle5tffdqvh2snvadkuau2ml0uqm4n875d

+

BTC3FhiXcXmAesmQzrNEngjHFnvaJRhU1AGWV

+

LTCMBcgQ3LQJA4W2wsXknTdm2fxRSysLaBJHS

+

ETH0x61a4f614a30ff686445751ed8328b82b77ecfc69

+
+
+

Te recomendamos VLC para ver tus películas.

+
+
+

+ Sitio desarrollado con + Python, + Django y + Bulma. +

+
+
+>>>>>>> fb23014 (Inicio de diseño) diff --git a/source/templates/section.html b/source/templates/section.html index 2e5a62f..b3cfa57 100644 --- a/source/templates/section.html +++ b/source/templates/section.html @@ -1,4 +1,5 @@
+<<<<<<< HEAD
{% if request.get_full_path == "/" %}

{{ section }}

@@ -15,6 +16,17 @@
+======= +
+

{{ section }}

+
+ {% for movie in content %} +
+
+ +
+ {{ movie }} +>>>>>>> fb23014 (Inicio de diseño)
{% endfor %}