Skip to content

Commit

Permalink
gerenc context
Browse files Browse the repository at this point in the history
  • Loading branch information
michelebswm committed Sep 19, 2023
1 parent 17ac92f commit 955374d
Show file tree
Hide file tree
Showing 17 changed files with 212 additions and 15 deletions.
Binary file modified db.sqlite3
Binary file not shown.
5 changes: 3 additions & 2 deletions filme/admin.py
Original file line number Diff line number Diff line change
@@ -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)
admin.site.register(Filme)
admin.site.register(Episodio)
28 changes: 28 additions & 0 deletions filme/migrations/0002_alter_filme_categoria_episodio.py
Original file line number Diff line number Diff line change
@@ -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')),
],
),
]
24 changes: 20 additions & 4 deletions filme/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 13 additions & 0 deletions filme/novos_context.py
Original file line number Diff line number Diff line change
@@ -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}
39 changes: 39 additions & 0 deletions filme/templates/detalhesfilme.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{% extends 'base.html' %}

{% block title %}
DetalhesFilme Hashflix
{% endblock %}

{% block head %}
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'css/style_detalhesfilmes.css' %}"/>
{% endblock %}

{% block content %}
<div class="content">
<h1>Detalhes do filme: {{ object.titulo }}</h1>
<p>{{ object }}<p/>
<p>{{ object.descricao }}</p>
<img src="{{ object.thumb.url }}" alt="">

<h2>Episódios</h2>

{% for episodio in object.episodios.all %}
<a href="{{ episodio.video }}">
<p>Episódio {{ forloop.counter }}: {{ episodio.titulo }}</p>
</a>
{% endfor %}

<h2>Filmes Relacionados</h2>
<div class="films-list">
{% for film_rel in filmes_relacionados %}
<div class="item-list">
<img src="{{ film_rel.thumb.url }}" alt="" class="images-list">
<a href="{% url 'filme:detalhesfilme' film_rel.pk %}"><p class="text-list">{{ film_rel.titulo }}</p></a>
</div>
{% endfor %}
</div>


</div>
{% endblock %}
39 changes: 39 additions & 0 deletions filme/templates/homefilmes.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{% extends 'base.html' %}

{% block title %}
HomeFilmes Hashflix
{% endblock %}

{% block head %}
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'css/style_homefilmes.css' %}"/>
{% endblock %}

{% block content %}
<div class="content">
<h1>Esta é a HomeFilmes</h1>

{% for filme in object_list %}
<a href="{% url 'filme:detalhesfilme' filme.pk %}"><p>{{ filme.titulo }}</p></a>
<hr>
<p>{{ filme.descricao }}</p>
<img src="{{ filme.thumb.url }}" alt="">
{% endfor %}
</div>

<div class="">
<h2>Novo</h2>
{% for filme in lista_filmes_recentes %}
<p>{{ filme }}</p>
{% endfor %}
</div>

<div class="">
<h2>Em Alta</h2>
{% for filme in lista_filmes_emalta %}
<p>{{ filme }}</p>
{% endfor %}
</div>


{% endblock %}
10 changes: 8 additions & 2 deletions filme/urls.py
Original file line number Diff line number Diff line change
@@ -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/<int:pk>', DetalhesFilme.as_view(), name='detalhesfilme'),
]
35 changes: 33 additions & 2 deletions filme/views.py
Original file line number Diff line number Diff line change
@@ -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)
2 changes: 2 additions & 0 deletions hashflix/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
],
},
},
Expand Down
4 changes: 2 additions & 2 deletions hashflix/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Binary file added media/thumb_filmes/deathnote.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/thumb_filmes/fairytail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion planejamento.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
18 changes: 18 additions & 0 deletions static/css/style_detalhesfilmes.css
Original file line number Diff line number Diff line change
@@ -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;
}
3 changes: 3 additions & 0 deletions static/css/style_homefilmes.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.content {
padding-top: 4.68rem; /*Ajuste isso de acordo com a altura da sua barra de navegação */
}
4 changes: 2 additions & 2 deletions templates/navbar.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{% load static %}
<nav class="navbar">
<div class="nav-logo">
<a href="#">
<a href="/">
<img src="{% static 'images/hashflix.png' %}" alt="logo-hashflix">
</a>
</div>
Expand All @@ -16,4 +16,4 @@
<a href="#">Editar Perfil</a>
</div>
</div>
</nav>
</nav>

0 comments on commit 955374d

Please sign in to comment.