diff --git a/src/account/templates/change_password.html b/src/account/templates/change_password.html
index dc341f9..7b8fbf1 100644
--- a/src/account/templates/change_password.html
+++ b/src/account/templates/change_password.html
@@ -8,7 +8,6 @@
{% endblock content %}
diff --git a/src/account/templates/register.html b/src/account/templates/register.html
index f789d2c..abbf6d9 100644
--- a/src/account/templates/register.html
+++ b/src/account/templates/register.html
@@ -9,7 +9,6 @@
+
+{% endblock content %}
\ No newline at end of file
diff --git a/src/series/templates/update_series.html b/src/series/templates/update_series.html
new file mode 100644
index 0000000..4b7124d
--- /dev/null
+++ b/src/series/templates/update_series.html
@@ -0,0 +1,16 @@
+{% extends 'base.html' %}
+{% load crispy_forms_tags %}
+
+
+{% block title %} Update Series {% endblock title %}
+
+{% block content %}
+
+
+
+{% endblock content %}
+
\ No newline at end of file
diff --git a/src/series/urls.py b/src/series/urls.py
index 494afb9..5985a78 100644
--- a/src/series/urls.py
+++ b/src/series/urls.py
@@ -5,4 +5,6 @@ from series import views
urlpatterns = [
path('', views.homepage_view, name='homepage'),
path('series/add', views.AddSeriesView.as_view(), name='add-series'),
+ path('series/update/', views.UpdateSeriesView.as_view(), name='update-series'),
+ path('series/delete/', views.SeriesDeleteView.as_view(), name='delete-series'),
]
\ No newline at end of file
diff --git a/src/series/views/__init__.py b/src/series/views/__init__.py
index 4a0c3a2..000530d 100644
--- a/src/series/views/__init__.py
+++ b/src/series/views/__init__.py
@@ -1,2 +1,4 @@
from .homepage import homepage_view
-from .add_series import AddSeriesView
\ No newline at end of file
+from .add_series import AddSeriesView
+from .update_series import UpdateSeriesView
+from .delete_series import SeriesDeleteView
\ No newline at end of file
diff --git a/src/series/views/add_series.py b/src/series/views/add_series.py
index 3c55c0d..0d231fa 100644
--- a/src/series/views/add_series.py
+++ b/src/series/views/add_series.py
@@ -24,7 +24,7 @@ class AddSeriesView(LoginRequiredMixin, CreateView):
raw_data = get(f"https://imdb-api.com/en/API/Title/{series.user.imdb_api_key}/{series.imdb_id}")
if raw_data.status_code != 200:
- messages.info(self.request, 'TV Series no added. Please try again.')
+ messages.info(self.request, 'TV Series can not added. Please try again.')
return redirect('add-series')
data = raw_data.json()
@@ -49,5 +49,4 @@ class AddSeriesView(LoginRequiredMixin, CreateView):
series.save()
form.save_m2m()
-
return super().form_valid(form)
diff --git a/src/series/views/delete_series.py b/src/series/views/delete_series.py
new file mode 100644
index 0000000..f5f69c6
--- /dev/null
+++ b/src/series/views/delete_series.py
@@ -0,0 +1,17 @@
+from series.models import SeriesModel
+from django.views.generic import DeleteView
+from django.urls import reverse_lazy, reverse
+from django.contrib.auth.mixins import LoginRequiredMixin
+from django.contrib import messages
+
+
+class SeriesDeleteView(LoginRequiredMixin, DeleteView):
+ login_url = reverse_lazy('login')
+ template_name = 'article_deletion_confirmation.html'
+
+ def get_success_url(self):
+ messages.success(self.request, 'Series Deleted')
+ return reverse('homepage')
+
+ def get_queryset(self):
+ return SeriesModel.objects.filter(slug=self.kwargs['slug'], user=self.request.user)
\ No newline at end of file
diff --git a/src/series/views/update_series.py b/src/series/views/update_series.py
new file mode 100644
index 0000000..40ef7c7
--- /dev/null
+++ b/src/series/views/update_series.py
@@ -0,0 +1,56 @@
+from series.models import SeriesModel
+from django.views.generic import UpdateView
+from django.urls import reverse, reverse_lazy
+from django.contrib.auth.mixins import LoginRequiredMixin
+from django.contrib import messages
+from django.shortcuts import (get_object_or_404,
+ redirect)
+from requests import get
+
+
+class UpdateSeriesView(LoginRequiredMixin, UpdateView):
+ login_url = reverse_lazy('login')
+ template_name = 'update_series.html'
+ fields = ('title', 'imdb_id', 'last_season', 'last_episode', 'show')
+
+ def get_object(self):
+ return get_object_or_404(SeriesModel, slug=self.kwargs.get('slug'), user=self.request.user)
+
+ def get_success_url(self):
+ messages.success(self.request, 'Series Updated')
+ return reverse('homepage')
+
+ def form_valid(self, form):
+ series = form.save(commit=False)
+ series.user = self.request.user
+
+ raw_data = get(f"https://imdb-api.com/en/API/Title/{series.user.imdb_api_key}/{series.imdb_id}")
+
+ if raw_data.status_code != 200:
+ messages.info(self.request, 'TV Series can not updated. Please try again.')
+ return redirect('add-series')
+ data = raw_data.json()
+
+ if data['errorMessage']:
+ form.add_error('imdb_id', 'ID is not correct.')
+ return self.form_invalid(form)
+
+ if not data['tvSeriesInfo']:
+ form.add_error('imdb_id', 'This is not a TV series id.')
+ return self.form_invalid(form)
+ seasons = data['tvSeriesInfo']['seasons']
+
+ if str(series.last_season) not in seasons:
+ 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'])
+ if series.last_episode > episodes_count:
+ form.add_error('last_episode', 'The episode number is not correct.')
+ return self.form_invalid(form)
+
+ series.save()
+ form.save_m2m()
+ return super().form_valid(form)
+
diff --git a/src/templates/components/navbar.html b/src/templates/components/navbar.html
index b121c0f..d2b15f4 100644
--- a/src/templates/components/navbar.html
+++ b/src/templates/components/navbar.html
@@ -13,6 +13,11 @@
{% if request.user.is_authenticated == True %}