diff --git a/comic/models.py b/comic/models.py
index 4ea5a3f..2e64f88 100644
--- a/comic/models.py
+++ b/comic/models.py
@@ -5,7 +5,6 @@ from comic import rarfile
from comic.util import get_ordered_dir_list
import zipfile
from os import path
-import os
class Setting(models.Model):
diff --git a/comic/templates/comic/settings_page.html b/comic/templates/comic/settings_page.html
new file mode 100644
index 0000000..74f70c9
--- /dev/null
+++ b/comic/templates/comic/settings_page.html
@@ -0,0 +1,17 @@
+{% extends "base.html" %}
+
+{% block title %}CBreader - Settings{% endblock %}
+
+{% block content %}
+{% if error_message %}
+
{{ error_message }}
+{% endif %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/comic/urls.py b/comic/urls.py
index 3efa576..c7d9056 100644
--- a/comic/urls.py
+++ b/comic/urls.py
@@ -4,6 +4,7 @@ from . import views
urlpatterns = [
url(r'^$', views.comic_list, name='index'),
+ url(r'^settings/$', views.settings_page, name='settings'),
url(r'^(?P[\w]+)/$', views.comic_list, name='comic_list'),
url(r'^read/(?P[\w]+)/(?P[0-9]+)/$', views.read_comic, name='read_comic'),
url(r'^read/(?P[\w]+)/(?P[0-9]+)/img$', views.get_image, name='get_image'),
diff --git a/comic/views.py b/comic/views.py
index 864ec36..784d7f8 100644
--- a/comic/views.py
+++ b/comic/views.py
@@ -11,7 +11,12 @@ from os import path
@login_required
def comic_list(request, comic_path=''):
- base_dir = Setting.objects.get(name='BASE_DIR').value
+ try:
+ base_dir = Setting.objects.get(name='BASE_DIR').value
+ except Setting.DoesNotExist:
+ return redirect('/comic/settings/')
+ if not path.isdir(base_dir):
+ return redirect('/comic/settings/')
comic_path = urlsafe_base64_decode(comic_path)
breadcrumbs = generate_breadcrumbs(comic_path)
files = ComicBook.generate_directory(base_dir, comic_path)
@@ -21,6 +26,24 @@ def comic_list(request, comic_path=''):
})
return render(request, 'comic/comic_list.html', context)
+@login_required
+def settings_page(request):
+ obj, created = Setting.objects.get_or_create(name='BASE_DIR')
+ error_message = ''
+ if request.POST:
+ if path.isdir(request.POST['base_directory']):
+ obj.value = request.POST['base_directory']
+ obj.save()
+ else:
+ error_message = 'This is not a valid Directory'
+ elif obj.value == '':
+ error_message = 'Base Directory cannot be blank'
+ context = RequestContext(request, {
+ 'base_dir': obj,
+ 'error_message': error_message,
+ })
+ return render(request, 'comic/settings_page.html', context)
+
@login_required
def read_comic(request, comic_path, page):
base_dir = Setting.objects.get(name='BASE_DIR').value
@@ -57,5 +80,6 @@ def get_image(_, comic_path, page):
img, content = book.get_image(full_path, page)
return HttpResponse(img.read(), content_type=content)
-def comic_redirect(request):
+
+def comic_redirect(_):
return redirect('/comic/')
\ No newline at end of file