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 %} + +{% endif %} +
+ {% csrf_token %} +
+ + +
+ +
+{% 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