diff --git a/db.sqlite3 b/db.sqlite3
index 7da257f..f2069f1 100644
Binary files a/db.sqlite3 and b/db.sqlite3 differ
diff --git a/filme/admin.py b/filme/admin.py
index b9a8676..23043cc 100644
--- a/filme/admin.py
+++ b/filme/admin.py
@@ -1,5 +1,6 @@
from django.contrib import admin
-from .models import Filme
+from .models import Filme, Episodio
# Register your models here.
-admin.site.register(Filme)
\ No newline at end of file
+admin.site.register(Filme)
+admin.site.register(Episodio)
diff --git a/filme/migrations/0002_alter_filme_categoria_episodio.py b/filme/migrations/0002_alter_filme_categoria_episodio.py
new file mode 100644
index 0000000..dbd39b2
--- /dev/null
+++ b/filme/migrations/0002_alter_filme_categoria_episodio.py
@@ -0,0 +1,28 @@
+# Generated by Django 4.2.5 on 2023-09-17 17:32
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('filme', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='filme',
+ name='categoria',
+ field=models.CharField(choices=[('ANALISES', 'Análises'), ('PROGRAMACAO', 'Programação'), ('APRESENTACAO', 'Apresentação'), ('OUTROS', 'Outros'), {'ANIMES', 'Animes'}], max_length=15),
+ ),
+ migrations.CreateModel(
+ name='Episodio',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('titulo', models.CharField(max_length=100)),
+ ('video', models.URLField()),
+ ('filme', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='episodios', to='filme.filme')),
+ ],
+ ),
+ ]
diff --git a/filme/models.py b/filme/models.py
index 62cbd3d..7324a69 100644
--- a/filme/models.py
+++ b/filme/models.py
@@ -6,21 +6,37 @@
('PROGRAMACAO', 'Programação'),
('APRESENTACAO', 'Apresentação'),
('OUTROS', 'Outros'),
+ {'ANIMES', 'Animes'}
)
-# Criar o filme
+# Create o film
+
+
class Filme(models.Model):
titulo = models.CharField(max_length=100)
thumb = models.ImageField(upload_to='thumb_filmes')
descricao = models.TextField(max_length=1000)
- categoria = models.CharField(max_length=15, choices=LISTA_CATEGORIAS) # Lista de Opções
+ categoria = models.CharField(
+ max_length=15, choices=LISTA_CATEGORIAS) # Lista de Opções
visualizacoes = models.IntegerField(default=0)
- data_criacao = models.DateTimeField(default=timezone.now) # Registrar data e hora que o filme for criado
+ # Registrar data e hora que o filme for criado
+ data_criacao = models.DateTimeField(default=timezone.now)
- #Formato de string de um objeto dessa classe Filme
+ # Formato de string de um objeto dessa classe Filme
def __str__(self):
return self.titulo
# Criar os episódios
+
+class Episodio(models.Model):
+ # parametos do ForeignKey, "nome_da_tabela", related_name relaciona os episodios ao filme, on_delete se deletar o filme os episodios também sao deletados
+ filme = models.ForeignKey(
+ "Filme", related_name="episodios", on_delete=models.CASCADE)
+ titulo = models.CharField(max_length=100)
+ video = models.URLField()
+
+ def __str__(self):
+ return self.filme.titulo + ' - ' + self.titulo
+
# Criar o usuário
diff --git a/filme/novos_context.py b/filme/novos_context.py
new file mode 100644
index 0000000..7c3a135
--- /dev/null
+++ b/filme/novos_context.py
@@ -0,0 +1,13 @@
+from .models import Filme
+
+
+def lista_filmes_recentes(request):
+ # Lista de todos os filmes ordenados em ordem de data_criacao decrescente colocando -data_criacao
+ lista_filmes = Filme.objects.all().order_by(
+ '-data_criacao')[0:10] # Pegando os 10 primeiros
+ return {"lista_filmes_recentes": lista_filmes}
+
+
+def lista_filmes_emalta(request):
+ lista_filmes = Filme.objects.all().order_by('-visualizacoes')[0:10]
+ return {"lista_filmes_emalta": lista_filmes}
diff --git a/filme/templates/detalhesfilme.html b/filme/templates/detalhesfilme.html
new file mode 100644
index 0000000..d8d87c8
--- /dev/null
+++ b/filme/templates/detalhesfilme.html
@@ -0,0 +1,39 @@
+{% extends 'base.html' %}
+
+{% block title %}
+ DetalhesFilme Hashflix
+{% endblock %}
+
+{% block head %}
+{% load static %}
+
+{% endblock %}
+
+{% block content %}
+
+
Detalhes do filme: {{ object.titulo }}
+
{{ object }}
+
{{ object.descricao }}
+
+
+
Episódios
+
+ {% for episodio in object.episodios.all %}
+
+ Episódio {{ forloop.counter }}: {{ episodio.titulo }}
+
+ {% endfor %}
+
+
Filmes Relacionados
+
+ {% for film_rel in filmes_relacionados %}
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
diff --git a/filme/templates/homefilmes.html b/filme/templates/homefilmes.html
new file mode 100644
index 0000000..8a664e9
--- /dev/null
+++ b/filme/templates/homefilmes.html
@@ -0,0 +1,39 @@
+{% extends 'base.html' %}
+
+{% block title %}
+ HomeFilmes Hashflix
+{% endblock %}
+
+{% block head %}
+{% load static %}
+
+{% endblock %}
+
+{% block content %}
+
+
Esta é a HomeFilmes
+
+ {% for filme in object_list %}
+
{{ filme.titulo }}
+
+
{{ filme.descricao }}
+
+ {% endfor %}
+
+
+
+
Novo
+ {% for filme in lista_filmes_recentes %}
+
{{ filme }}
+ {% endfor %}
+
+
+
+
Em Alta
+ {% for filme in lista_filmes_emalta %}
+
{{ filme }}
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/filme/urls.py b/filme/urls.py
index 5df1c05..3899fb7 100644
--- a/filme/urls.py
+++ b/filme/urls.py
@@ -1,6 +1,12 @@
from django.urls import path, include
-from .views import homepage
+from .views import Homepage, HomeFilmes, DetalhesFilme
+
+
+app_name = 'filme'
+
urlpatterns = [
- path('', homepage) # para ser o index
+ path('', Homepage.as_view(), name='homepage'),
+ path('filmes/', HomeFilmes.as_view(), name='homefilmes'),
+ path('filmes/', DetalhesFilme.as_view(), name='detalhesfilme'),
]
diff --git a/filme/views.py b/filme/views.py
index 6ac14be..af71cb3 100644
--- a/filme/views.py
+++ b/filme/views.py
@@ -1,7 +1,38 @@
from django.shortcuts import render
+from .models import Filme
+from django.views.generic import TemplateView, ListView, DetailView
# Create your views here.
-def homepage(request):
- return render(request, "homepage.html")
+class Homepage(TemplateView):
+ template_name = 'homepage.html'
+
+
+class HomeFilmes(ListView):
+ template_name = "homefilmes.html"
+ model = Filme
+
+
+class DetalhesFilme(DetailView):
+ template_name = "detalhesfilme.html"
+ model = Filme
+
+ def get_context_data(self, **kwargs):
+ # Executa primeiro a função da superClass
+ context = super(DetalhesFilme, self).get_context_data(**kwargs)
+ # Lista dos filmes relacionados de acordo com a categoria
+ filmes_relacionados = Filme.objects.filter(
+ categoria=self.get_object().categoria)
+ context['filmes_relacionados'] = filmes_relacionados
+ return context
+
+# def homepage(request):
+# return render(request, "homepage.html")
+
+#url - view - template
+# def homefilmes(request):
+# context = {}
+# lista_filmes = Filme.objects.all() # pega todos os objetos do banco de dados
+# context['lista_filmes'] = lista_filmes
+# return render(request, "homefilmes.html", context)
diff --git a/hashflix/settings.py b/hashflix/settings.py
index c54867d..1a83906 100644
--- a/hashflix/settings.py
+++ b/hashflix/settings.py
@@ -64,6 +64,8 @@
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
+ 'filme.novos_context.lista_filmes_recentes',
+ 'filme.novos_context.lista_filmes_emalta',
],
},
},
diff --git a/hashflix/urls.py b/hashflix/urls.py
index 2c4de49..3275983 100644
--- a/hashflix/urls.py
+++ b/hashflix/urls.py
@@ -22,7 +22,7 @@
urlpatterns = [
path('admin/', admin.site.urls),
- path('', include('filme.urls')) # para ser o index
+ path('', include('filme.urls', namespace='filme')), # para ser o index
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
-urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
\ No newline at end of file
+urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/media/thumb_filmes/deathnote.jpg b/media/thumb_filmes/deathnote.jpg
new file mode 100644
index 0000000..f54caa1
Binary files /dev/null and b/media/thumb_filmes/deathnote.jpg differ
diff --git a/media/thumb_filmes/fairytail.png b/media/thumb_filmes/fairytail.png
new file mode 100644
index 0000000..af31034
Binary files /dev/null and b/media/thumb_filmes/fairytail.png differ
diff --git a/planejamento.txt b/planejamento.txt
index 7f26eaa..b9202a2 100644
--- a/planejamento.txt
+++ b/planejamento.txt
@@ -14,7 +14,8 @@
- quantidade de views
- data de criação
- Episodios
- - videos
+ - Relação de qual filme o Episodio pertence
+ - videos (link do vídeo)
- titulo
- Barra de Pesquisa
\ No newline at end of file
diff --git a/static/css/style_detalhesfilmes.css b/static/css/style_detalhesfilmes.css
new file mode 100644
index 0000000..83138f6
--- /dev/null
+++ b/static/css/style_detalhesfilmes.css
@@ -0,0 +1,18 @@
+.content {
+ padding-top: 4.68rem; /*Ajuste isso de acordo com a altura da sua barra de navegação */
+}
+
+.films-list{
+ display: flex;
+ flex-direction: row;
+ gap: 1rem;
+}
+
+.text-list{
+ text-align: center;
+}
+
+.images-list{
+ height: 10rem;
+ width: auto;
+}
diff --git a/static/css/style_homefilmes.css b/static/css/style_homefilmes.css
new file mode 100644
index 0000000..532d463
--- /dev/null
+++ b/static/css/style_homefilmes.css
@@ -0,0 +1,3 @@
+.content {
+ padding-top: 4.68rem; /*Ajuste isso de acordo com a altura da sua barra de navegação */
+}
diff --git a/templates/navbar.html b/templates/navbar.html
index d832312..6f160e7 100644
--- a/templates/navbar.html
+++ b/templates/navbar.html
@@ -1,7 +1,7 @@
{% load static %}
\ No newline at end of file
+