Series table added to home page

This commit is contained in:
ayxan
2022-08-25 02:36:42 +04:00
parent c09df0e2de
commit d8fe62b23e
18 changed files with 161 additions and 23 deletions

View File

@@ -1,4 +1,5 @@
{% extends 'base.html' %}
{% load static %}
{% block title %} Home Page {% endblock title %}
@@ -6,4 +7,66 @@
{% include 'components/message.html' %}
<table class="table" style="margin-bottom: 1.5rem;">
<thead>
<tr>
<th scope="col">Title</th>
<th scope="col">Season, Episode</th>
<th scope="col">Show</th>
</tr>
</thead>
<tbody>
{% for s in series %}
<tr>
<th scope="row">
<a href="https://www.imdb.com/title/{{s.imdb_id}}/" style="text-decoration: none;" target="_blank">
{{s.title}}
</a>
<br>
<a class="btn mr-1 update-btn" style="padding: 0;" href="{% url 'update-series' s.slug %}">
<img src="{% static 'icons/edit.png' %}" width="21px" height="21px">
<!-- <i class="fa fa-edit fa-lg" style="font-size: 19px;"></i> -->
</a>
<a class="btn delete-btn" href="{% url 'delete-series' s.slug %}">
<img src="{% static 'icons/trash.png' %}" width="24px" height="24px">
<!-- <i class="fa fa-trash fa-lg" style="font-size: 19px;"></i> -->
</a>
</th>
<td>{{s.last_season}} - {{s.last_episode}}</td>
<td>
{% if s.show %}
<img src="{% static 'icons/true-check-button.png' %}" width="22px" height="22px">
{% else %}
<img src="{% static 'icons/false-check-button.png' %}" width="22px" height="22px">
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
{% if series.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1">First Page</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{series.previous_page_number}}"><</a>
</li>
{% endif %}
<li class="page-item"><a class="page-link" href="#">{{series.number}}</a></li>
{% if series.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{series.next_page_number}}">></a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{series.paginator.num_pages}}">Last Page</a>
</li>
{% endif %}
</ul>
</nav>
{% endblock content %}

View File

@@ -28,6 +28,10 @@ class AddSeriesView(LoginRequiredMixin, CreateView):
return redirect('add-series')
data = raw_data.json()
if 'Maximum usage' in data['errorMessage']:
messages.info(self.request, f"IMDB API: {data['errorMessage']}")
return redirect('add-series')
if data['errorMessage']:
form.add_error('imdb_id', 'ID is not correct.')
return self.form_invalid(form)
@@ -41,8 +45,13 @@ class AddSeriesView(LoginRequiredMixin, CreateView):
form.add_error('last_season', 'The season number is not correct.')
return self.form_invalid(form)
data = get(f"https://imdb-api.com/en/API/SeasonEpisodes/{series.user.imdb_api_key}/{series.imdb_id}/{series.last_season}").json()
episodes_count = len(data['episodes'])
raw_data = get(f"https://imdb-api.com/en/API/SeasonEpisodes/{series.user.imdb_api_key}/{series.imdb_id}/{series.last_season}")
if raw_data.status_code != 200:
messages.info(self.request, 'TV Series can not added. Please try again.')
return redirect('add-series')
episodes = raw_data.json()['episodes']
episodes_count = len(episodes)
if series.last_episode > episodes_count:
form.add_error('last_episode', 'The episode number is not correct.')
return self.form_invalid(form)

View File

@@ -1,7 +1,13 @@
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
from account.models import User
@login_required(login_url='/account/login')
def homepage_view(request):
return render(request, 'homepage.html')
series = User.objects.get(id=request.user.id).series.all().order_by('-id')
page = request.GET.get('page')
paginator = Paginator(series, 5)
return render(request, 'homepage.html', context={'series': paginator.get_page(page)})

View File

@@ -31,6 +31,10 @@ class UpdateSeriesView(LoginRequiredMixin, UpdateView):
return redirect('add-series')
data = raw_data.json()
if 'Maximum usage' in data['errorMessage']:
messages.info(self.request, f"IMDB Key: {data['errorMessage']}")
return redirect('add-series')
if data['errorMessage']:
form.add_error('imdb_id', 'ID is not correct.')
return self.form_invalid(form)
@@ -44,8 +48,13 @@ class UpdateSeriesView(LoginRequiredMixin, UpdateView):
form.add_error('last_season', 'The season number is not correct.')
return self.form_invalid(form)
data = get(f"https://imdb-api.com/en/API/SeasonEpisodes/{series.user.imdb_api_key}/{series.imdb_id}/{series.last_season}").json()
episodes_count = len(data['episodes'])
raw_data = get(f"https://imdb-api.com/en/API/SeasonEpisodes/{series.user.imdb_api_key}/{series.imdb_id}/{series.last_season}")
if raw_data.status_code != 200:
messages.info(self.request, 'TV Series can not added. Please try again.')
return redirect('add-series')
episodes = raw_data.json()['episodes']
episodes_count = len(episodes)
if series.last_episode > episodes_count:
form.add_error('last_episode', 'The episode number is not correct.')
return self.form_invalid(form)