From 95d09b338ac7aed2b387bf143a5cfd1c4b29f612 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Tue, 15 Dec 2009 17:48:30 +0100 Subject: new Django webinterface(in development), small fixes --- module/web/pyload/__init__.py | 0 module/web/pyload/admin.py | 1 + module/web/pyload/models.py | 21 ++++++++++++ module/web/pyload/tests.py | 23 +++++++++++++ module/web/pyload/urls.py | 7 ++++ module/web/pyload/views.py | 80 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 132 insertions(+) create mode 100644 module/web/pyload/__init__.py create mode 100644 module/web/pyload/admin.py create mode 100644 module/web/pyload/models.py create mode 100644 module/web/pyload/tests.py create mode 100644 module/web/pyload/urls.py create mode 100644 module/web/pyload/views.py (limited to 'module/web/pyload') diff --git a/module/web/pyload/__init__.py b/module/web/pyload/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/module/web/pyload/admin.py b/module/web/pyload/admin.py new file mode 100644 index 000000000..40a96afc6 --- /dev/null +++ b/module/web/pyload/admin.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/module/web/pyload/models.py b/module/web/pyload/models.py new file mode 100644 index 000000000..293c01109 --- /dev/null +++ b/module/web/pyload/models.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +from django.db import models +#from django.contrib.auth.models.User import User as UserProfile +# Create your models here. + + +class Perm(models.Model): + """ extended pyLoad user Profile """ + + #user = models.ForeignKey(UserProfile, unique=True) + #template = models.CharField(maxlength=30) + + class Meta: + permissions = ( + ("can_see_dl", "Can see Downloads"), + ("can_add", "Can add Downloads"), + ("can_delete", "Can delete Downloads"), + ("can_download", "Can download Files"), + ("can_see_logs", "Can see logs"), + ("can_change_status", "Can change status"), + ) \ No newline at end of file diff --git a/module/web/pyload/tests.py b/module/web/pyload/tests.py new file mode 100644 index 000000000..2247054b3 --- /dev/null +++ b/module/web/pyload/tests.py @@ -0,0 +1,23 @@ +""" +This file demonstrates two different styles of tests (one doctest and one +unittest). These will both pass when you run "manage.py test". + +Replace these with more appropriate tests for your application. +""" + +from django.test import TestCase + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.failUnlessEqual(1 + 1, 2) + +__test__ = {"doctest": """ +Another way to test that 1 + 1 is equal to 2. + +>>> 1 + 1 == 2 +True +"""} + diff --git a/module/web/pyload/urls.py b/module/web/pyload/urls.py new file mode 100644 index 000000000..9c7942492 --- /dev/null +++ b/module/web/pyload/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('', + (r'^login/$', 'pyload.views.login'), + (r'^home/$', 'pyload.views.home'), + (r'^test/$', 'pyload.views.home'), +) diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py new file mode 100644 index 000000000..c42511ede --- /dev/null +++ b/module/web/pyload/views.py @@ -0,0 +1,80 @@ +# Create your views here. +from django.http import HttpResponse +from django.http import HttpResponseRedirect +from django.http import HttpResponseGone +from django.conf import settings +from django.shortcuts import render_to_response +from django.template import RequestContext +from django.contrib.auth.decorators import login_required +from os.path import join + + +def check_server(function): + def _dec(view_func): + def _view(request, *args, **kwargs): + try: + version = settings.PYLOAD.get_server_version() + return view_func(request, *args, **kwargs) + except Exception, e: + return base(request, messages=['Can\'t connect to pyLoad. Please check your configuration and make sure pyLoad is running.',str(e)]) + + _view.__name__ = view_func.__name__ + _view.__dict__ = view_func.__dict__ + _view.__doc__ = view_func.__doc__ + + return _view + + if function is None: + return _dec + else: + return _dec(function) + + +def permission(perm): + def _dec(view_func): + def _view(request, *args, **kwargs): + if request.user.has_perm(perm): + return view_func(request, *args, **kwargs) + else: + return base(request, messages=['You don\'t have permission to view this page.']) + + _view.__name__ = view_func.__name__ + _view.__dict__ = view_func.__dict__ + _view.__doc__ = view_func.__doc__ + + return _view + + return _dec + + +def base(request, messages): + return render_to_response(join(settings.TEMPLATE,'base.html'), {'messages': messages},RequestContext(request)) + +@login_required +#@permission('perm.permissions.can_see_dl') @TODO: Permissions not working :( +@check_server +def home(request): + return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request)) + + +@login_required +#@permission('pyload.perm.can_see_dl') +@check_server +def queue(request): + return render_to_response(join(settings.TEMPLATE,'queue.html'), RequestContext(request)) + + +@login_required +#@permission('pyload.user.can_download') +@check_server +def downloads(request): + return render_to_response(join(settings.TEMPLATE,'downloads.html'), RequestContext(request)) + + +@login_required +#@permission('pyload.user.can_see_logs') +@check_server +def logs(request): + return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request)) + + \ No newline at end of file -- cgit v1.2.3 From fe85f003f3adfb568c8b1a650035128c183a739d Mon Sep 17 00:00:00 2001 From: RaNaN Date: Wed, 16 Dec 2009 17:09:14 +0100 Subject: some Webinterface Json Code --- module/web/pyload/admin.py | 14 ++++++++++++++ module/web/pyload/models.py | 26 ++++++++++---------------- module/web/pyload/urls.py | 22 +++++++++++++++++----- module/web/pyload/views.py | 4 ++-- 4 files changed, 43 insertions(+), 23 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/admin.py b/module/web/pyload/admin.py index 40a96afc6..11f325200 100644 --- a/module/web/pyload/admin.py +++ b/module/web/pyload/admin.py @@ -1 +1,15 @@ # -*- coding: utf-8 -*- +from django.contrib import admin +from models import UserProfile +from django.contrib.auth.models import User +from django.contrib.auth.admin import UserAdmin as RealUserAdmin + + +class UserProfileInline(admin.StackedInline): + model = UserProfile + +class UserAdmin(RealUserAdmin): + inlines = [ UserProfileInline ] + +admin.site.unregister(User) +admin.site.register(User, UserAdmin) \ No newline at end of file diff --git a/module/web/pyload/models.py b/module/web/pyload/models.py index 293c01109..d3d99febc 100644 --- a/module/web/pyload/models.py +++ b/module/web/pyload/models.py @@ -1,21 +1,15 @@ # -*- coding: utf-8 -*- from django.db import models -#from django.contrib.auth.models.User import User as UserProfile +from django.contrib.auth.models import User # Create your models here. - -class Perm(models.Model): - """ extended pyLoad user Profile """ - - #user = models.ForeignKey(UserProfile, unique=True) - #template = models.CharField(maxlength=30) +class UserProfile(models.Model): + """ Permissions setting """ - class Meta: - permissions = ( - ("can_see_dl", "Can see Downloads"), - ("can_add", "Can add Downloads"), - ("can_delete", "Can delete Downloads"), - ("can_download", "Can download Files"), - ("can_see_logs", "Can see logs"), - ("can_change_status", "Can change status"), - ) \ No newline at end of file + user = models.ForeignKey(User, unique=True) + template = models.CharField(max_length=30, default='default', null=False, blank=False) + +def user_post_save(sender, instance, **kwargs): + profile, new = UserProfile.objects.get_or_create(user=instance) + +models.signals.post_save.connect(user_post_save, User) \ No newline at end of file diff --git a/module/web/pyload/urls.py b/module/web/pyload/urls.py index 9c7942492..667a4ed3d 100644 --- a/module/web/pyload/urls.py +++ b/module/web/pyload/urls.py @@ -1,7 +1,19 @@ + +from os.path import join + +from django.conf import settings from django.conf.urls.defaults import * -urlpatterns = patterns('', - (r'^login/$', 'pyload.views.login'), - (r'^home/$', 'pyload.views.home'), - (r'^test/$', 'pyload.views.home'), -) + +urlpatterns = patterns('pyload', + (r'^home/$', 'views.home'), + (r'^downloads/$', 'views.downloads',{},'downloads'), + (r'^queue/$', 'views.queue',{}, 'queue'), + (r'^logs/$', 'views.logs',{}, 'logs'), + (r'^$', 'views.home',{}, 'home'), + ) + +urlpatterns += patterns('django.contrib.auth', + (r'^login/$', 'views.login', {'template_name': join(settings.TEMPLATE, 'login.html')}), + (r'^logout/$', 'views.logout', {'template_name': join(settings.TEMPLATE, 'logout.html')}, 'logout'), +) \ No newline at end of file diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index c42511ede..6c2954555 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -1,7 +1,6 @@ # Create your views here. from django.http import HttpResponse from django.http import HttpResponseRedirect -from django.http import HttpResponseGone from django.conf import settings from django.shortcuts import render_to_response from django.template import RequestContext @@ -14,9 +13,9 @@ def check_server(function): def _view(request, *args, **kwargs): try: version = settings.PYLOAD.get_server_version() - return view_func(request, *args, **kwargs) except Exception, e: return base(request, messages=['Can\'t connect to pyLoad. Please check your configuration and make sure pyLoad is running.',str(e)]) + return view_func(request, *args, **kwargs) _view.__name__ = view_func.__name__ _view.__dict__ = view_func.__dict__ @@ -54,6 +53,7 @@ def base(request, messages): #@permission('perm.permissions.can_see_dl') @TODO: Permissions not working :( @check_server def home(request): + print request.user.get_all_permissions() return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request)) -- cgit v1.2.3 From 3db583f5f10a72e53ecd8d282ec5db1e3f4cd4dd Mon Sep 17 00:00:00 2001 From: RaNaN Date: Wed, 16 Dec 2009 22:49:20 +0100 Subject: Webinterface authsystem --- module/web/pyload/admin.py | 4 ++-- module/web/pyload/models.py | 22 +++++++++++++++++++--- module/web/pyload/views.py | 9 ++++----- 3 files changed, 25 insertions(+), 10 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/admin.py b/module/web/pyload/admin.py index 11f325200..99cb28836 100644 --- a/module/web/pyload/admin.py +++ b/module/web/pyload/admin.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- from django.contrib import admin -from models import UserProfile +from models import Prefs from django.contrib.auth.models import User from django.contrib.auth.admin import UserAdmin as RealUserAdmin class UserProfileInline(admin.StackedInline): - model = UserProfile + model = Prefs class UserAdmin(RealUserAdmin): inlines = [ UserProfileInline ] diff --git a/module/web/pyload/models.py b/module/web/pyload/models.py index d3d99febc..86962f23c 100644 --- a/module/web/pyload/models.py +++ b/module/web/pyload/models.py @@ -3,13 +3,29 @@ from django.db import models from django.contrib.auth.models import User # Create your models here. -class UserProfile(models.Model): +class Prefs(models.Model): """ Permissions setting """ user = models.ForeignKey(User, unique=True) - template = models.CharField(max_length=30, default='default', null=False, blank=False) + template = models.CharField(max_length=30, default='default', null=False, blank=False) #@TODO: currently unused + + class Meta: + permissions = ( + ('can_see_dl', 'User can see Downloads'), + ('can_change_status', 'User can change Status'), + ('can_download', 'User can download'), + ('can_add', 'User can add Links'), + ('can_delete', 'User can delete Links'), + ('can_see_logs', 'User can see Logs'), + ) + verbose_name = "Preferences" + verbose_name_plural = "Preferences" + + def __unicode__(self): + return "Preferences for %s" % self.user + def user_post_save(sender, instance, **kwargs): - profile, new = UserProfile.objects.get_or_create(user=instance) + profile, new = Prefs.objects.get_or_create(user=instance) models.signals.post_save.connect(user_post_save, User) \ No newline at end of file diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 6c2954555..405bd2753 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -50,29 +50,28 @@ def base(request, messages): return render_to_response(join(settings.TEMPLATE,'base.html'), {'messages': messages},RequestContext(request)) @login_required -#@permission('perm.permissions.can_see_dl') @TODO: Permissions not working :( +@permission('pyload.can_see_dl') @check_server def home(request): - print request.user.get_all_permissions() return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request)) @login_required -#@permission('pyload.perm.can_see_dl') +@permission('pyload.can_see_dl') @check_server def queue(request): return render_to_response(join(settings.TEMPLATE,'queue.html'), RequestContext(request)) @login_required -#@permission('pyload.user.can_download') +@permission('pyload.can_download') @check_server def downloads(request): return render_to_response(join(settings.TEMPLATE,'downloads.html'), RequestContext(request)) @login_required -#@permission('pyload.user.can_see_logs') +@permission('pyload.user.can_see_logs') @check_server def logs(request): return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request)) -- cgit v1.2.3 From 511ae48877f8f3fae2a3ba282d979c33f2ea5491 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Thu, 17 Dec 2009 16:14:26 +0100 Subject: webinterface: config working, downloadable files --- module/web/pyload/urls.py | 2 ++ module/web/pyload/views.py | 67 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 5 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/urls.py b/module/web/pyload/urls.py index 667a4ed3d..63badeb25 100644 --- a/module/web/pyload/urls.py +++ b/module/web/pyload/urls.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- from os.path import join @@ -8,6 +9,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('pyload', (r'^home/$', 'views.home'), (r'^downloads/$', 'views.downloads',{},'downloads'), + (r'^download/(?P[a-zA-z\.0-9\-/_%]+)$', 'views.download',{},'download'), (r'^queue/$', 'views.queue',{}, 'queue'), (r'^logs/$', 'views.logs',{}, 'logs'), (r'^$', 'views.home',{}, 'home'), diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 405bd2753..0cdc87873 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -1,11 +1,17 @@ # Create your views here. +import mimetypes from django.http import HttpResponse from django.http import HttpResponseRedirect +from django.http import HttpResponseNotFound from django.conf import settings from django.shortcuts import render_to_response from django.template import RequestContext from django.contrib.auth.decorators import login_required from os.path import join +from os.path import isdir +from os.path import isfile +from os import listdir +from os import stat def check_server(function): @@ -67,13 +73,64 @@ def queue(request): @permission('pyload.can_download') @check_server def downloads(request): - return render_to_response(join(settings.TEMPLATE,'downloads.html'), RequestContext(request)) - + if not isdir(settings.DL_ROOT): + return base(request, ['Download directory not found.']) + data = { + 'folder': [], + 'files': [] + } + + for item in listdir(settings.DL_ROOT): + if isdir(join(settings.DL_ROOT, item)): + folder = { + 'name' : item, + 'files' : [] + } + for file in listdir(join(settings.DL_ROOT, item)): + if isfile(join(settings.DL_ROOT, item, file)): + folder['files'].append(file) + + data['folder'].append(folder) + elif isfile(join(settings.DL_ROOT, item)): + data['files'].append(item) + + + return render_to_response(join(settings.TEMPLATE,'downloads.html'), {'files': data}, RequestContext(request)) + +@login_required +@permission('pyload.user.can_download') +@check_server +def download(request,path): + path = path.split("/") + + dir = join(settings.DL_ROOT, path[1].replace('..','')) + if isdir(dir) or isfile(dir): + if isdir(dir): filepath = join(dir, path[2]) + elif isfile(dir): filepath = dir + + print filepath + if isfile(filepath): + try: + type, encoding = mimetypes.guess_type(filepath) + if type is None: + type = 'application/octet-stream' + + response = HttpResponse(mimetype=type) + response['Content-Length'] = str(stat(filepath).st_size) + + if encoding is not None: + response['Content-Encoding'] = encoding + + response.write(file(filepath, "rb").read()) + return response + + except Exception, e: + return HttpResponseNotFound("File not Found. %s" % str(e)) + + return HttpResponseNotFound("File not Found.") @login_required @permission('pyload.user.can_see_logs') @check_server def logs(request): - return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request)) - - \ No newline at end of file + return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request)) \ No newline at end of file -- cgit v1.2.3 From 1d7dc2ca5db0119e01547cd7b01fb77720450d1c Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sat, 19 Dec 2009 00:26:38 +0100 Subject: cleaned --- module/web/pyload/views.py | 1 - 1 file changed, 1 deletion(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 0cdc87873..904e312e7 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -1,7 +1,6 @@ # Create your views here. import mimetypes from django.http import HttpResponse -from django.http import HttpResponseRedirect from django.http import HttpResponseNotFound from django.conf import settings from django.shortcuts import render_to_response -- cgit v1.2.3 From adcc953b4dd2dce1f91bd7cd11105e9f0653f704 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sat, 19 Dec 2009 15:13:10 +0100 Subject: fixed reconnect --- module/web/pyload/views.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 904e312e7..a51a9c4dc 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -51,6 +51,11 @@ def permission(perm): return _dec + +def status_proc(request): + return {'status': settings.PYLOAD.status_server()} + + def base(request, messages): return render_to_response(join(settings.TEMPLATE,'base.html'), {'messages': messages},RequestContext(request)) @@ -58,14 +63,14 @@ def base(request, messages): @permission('pyload.can_see_dl') @check_server def home(request): - return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request)) + return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request,{},[status_proc])) @login_required @permission('pyload.can_see_dl') @check_server def queue(request): - return render_to_response(join(settings.TEMPLATE,'queue.html'), RequestContext(request)) + return render_to_response(join(settings.TEMPLATE,'queue.html'), RequestContext(request,{},[status_proc])) @login_required @@ -94,7 +99,7 @@ def downloads(request): data['files'].append(item) - return render_to_response(join(settings.TEMPLATE,'downloads.html'), {'files': data}, RequestContext(request)) + return render_to_response(join(settings.TEMPLATE,'downloads.html'), RequestContext(request,{'files': data},[status_proc])) @login_required @permission('pyload.user.can_download') @@ -132,4 +137,4 @@ def download(request,path): @permission('pyload.user.can_see_logs') @check_server def logs(request): - return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request)) \ No newline at end of file + return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request,{},[status_proc])) \ No newline at end of file -- cgit v1.2.3 From 62965d0668e81fc801c4be2d61c1a0b64b0edca8 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sun, 20 Dec 2009 23:43:21 +0100 Subject: cli + web fixes --- module/web/pyload/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index a51a9c4dc..1fa9d45b7 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -63,7 +63,7 @@ def base(request, messages): @permission('pyload.can_see_dl') @check_server def home(request): - return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request,{},[status_proc])) + return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request,{'content': settings.PYLOAD.status_downloads()},[status_proc])) @login_required -- cgit v1.2.3 From 9453269684b8d17411d8bbc4ecd0c7958670ff42 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 21 Dec 2009 19:59:59 +0100 Subject: log view, progressbar test --- module/web/pyload/urls.py | 1 + module/web/pyload/views.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/urls.py b/module/web/pyload/urls.py index 63badeb25..73ba08c21 100644 --- a/module/web/pyload/urls.py +++ b/module/web/pyload/urls.py @@ -12,6 +12,7 @@ urlpatterns = patterns('pyload', (r'^download/(?P[a-zA-z\.0-9\-/_%]+)$', 'views.download',{},'download'), (r'^queue/$', 'views.queue',{}, 'queue'), (r'^logs/$', 'views.logs',{}, 'logs'), + (r'^logs/(?P\d+)$', 'views.logs',{}, 'logs'), (r'^$', 'views.home',{}, 'home'), ) diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 1fa9d45b7..e38a0abf5 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + # Create your views here. import mimetypes from django.http import HttpResponse @@ -136,5 +138,12 @@ def download(request,path): @login_required @permission('pyload.user.can_see_logs') @check_server -def logs(request): - return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request,{},[status_proc])) \ No newline at end of file +def logs(request, page=0): + + log = file(join(settings.LOG_ROOT, "log.txt")).readlines() + data = [] + page = int(page) + for i in range(page, page+20): + data.append({'line': i+1 , 'content' :log[i]}) + + return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request,{'log': data, 'next': str(page+20) , 'prev': 0 if page-20 < 0 else page-20},[status_proc])) \ No newline at end of file -- cgit v1.2.3 From 3d655ddbfbd96abecb9a9c9bebf6e43eb710ab12 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sun, 10 Jan 2010 16:20:31 +0100 Subject: fixed manage.py, addBox working, some code formatted and cleaned --- module/web/pyload/views.py | 49 +++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index e38a0abf5..35d777020 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -2,27 +2,28 @@ # Create your views here. import mimetypes +from os import listdir +from os import stat +from os.path import isdir +from os.path import isfile +from os.path import join + +from django.conf import settings +from django.contrib.auth.decorators import login_required from django.http import HttpResponse from django.http import HttpResponseNotFound -from django.conf import settings from django.shortcuts import render_to_response from django.template import RequestContext -from django.contrib.auth.decorators import login_required -from os.path import join -from os.path import isdir -from os.path import isfile -from os import listdir -from os import stat def check_server(function): def _dec(view_func): - def _view(request, *args, **kwargs): + def _view(request, * args, ** kwargs): try: version = settings.PYLOAD.get_server_version() except Exception, e: - return base(request, messages=['Can\'t connect to pyLoad. Please check your configuration and make sure pyLoad is running.',str(e)]) - return view_func(request, *args, **kwargs) + return base(request, messages=['Can\'t connect to pyLoad. Please check your configuration and make sure pyLoad is running.', str(e)]) + return view_func(request, * args, ** kwargs) _view.__name__ = view_func.__name__ _view.__dict__ = view_func.__dict__ @@ -38,9 +39,9 @@ def check_server(function): def permission(perm): def _dec(view_func): - def _view(request, *args, **kwargs): + def _view(request, * args, ** kwargs): if request.user.has_perm(perm): - return view_func(request, *args, **kwargs) + return view_func(request, * args, ** kwargs) else: return base(request, messages=['You don\'t have permission to view this page.']) @@ -59,20 +60,20 @@ def status_proc(request): def base(request, messages): - return render_to_response(join(settings.TEMPLATE,'base.html'), {'messages': messages},RequestContext(request)) + return render_to_response(join(settings.TEMPLATE, 'base.html'), {'messages': messages}, RequestContext(request)) @login_required @permission('pyload.can_see_dl') @check_server def home(request): - return render_to_response(join(settings.TEMPLATE,'home.html'), RequestContext(request,{'content': settings.PYLOAD.status_downloads()},[status_proc])) + return render_to_response(join(settings.TEMPLATE, 'home.html'), RequestContext(request, {'content': settings.PYLOAD.status_downloads()}, [status_proc])) @login_required @permission('pyload.can_see_dl') @check_server def queue(request): - return render_to_response(join(settings.TEMPLATE,'queue.html'), RequestContext(request,{},[status_proc])) + return render_to_response(join(settings.TEMPLATE, 'queue.html'), RequestContext(request, {}, [status_proc])) @login_required @@ -89,8 +90,8 @@ def downloads(request): for item in listdir(settings.DL_ROOT): if isdir(join(settings.DL_ROOT, item)): folder = { - 'name' : item, - 'files' : [] + 'name': item, + 'files': [] } for file in listdir(join(settings.DL_ROOT, item)): if isfile(join(settings.DL_ROOT, item, file)): @@ -101,15 +102,15 @@ def downloads(request): data['files'].append(item) - return render_to_response(join(settings.TEMPLATE,'downloads.html'), RequestContext(request,{'files': data},[status_proc])) + return render_to_response(join(settings.TEMPLATE, 'downloads.html'), RequestContext(request, {'files': data}, [status_proc])) @login_required @permission('pyload.user.can_download') @check_server -def download(request,path): +def download(request, path): path = path.split("/") - dir = join(settings.DL_ROOT, path[1].replace('..','')) + dir = join(settings.DL_ROOT, path[1].replace('..', '')) if isdir(dir) or isfile(dir): if isdir(dir): filepath = join(dir, path[2]) elif isfile(dir): filepath = dir @@ -125,7 +126,7 @@ def download(request,path): response['Content-Length'] = str(stat(filepath).st_size) if encoding is not None: - response['Content-Encoding'] = encoding + response['Content-Encoding'] = encoding response.write(file(filepath, "rb").read()) return response @@ -143,7 +144,7 @@ def logs(request, page=0): log = file(join(settings.LOG_ROOT, "log.txt")).readlines() data = [] page = int(page) - for i in range(page, page+20): - data.append({'line': i+1 , 'content' :log[i]}) + for i in range(page, page + 20): + data.append({'line': i + 1, 'content':log[i]}) - return render_to_response(join(settings.TEMPLATE,'logs.html'), RequestContext(request,{'log': data, 'next': str(page+20) , 'prev': 0 if page-20 < 0 else page-20},[status_proc])) \ No newline at end of file + return render_to_response(join(settings.TEMPLATE, 'logs.html'), RequestContext(request, {'log': data, 'next': str(page + 20), 'prev': 0 if page-20 < 0 else page-20}, [status_proc])) \ No newline at end of file -- cgit v1.2.3 From 9bff9c69d6983dc190c189647821e12d0f134883 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 11 Jan 2010 22:16:31 +0100 Subject: finally and officially: webinterface home page working ;) --- module/web/pyload/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 35d777020..a28b71e69 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -40,7 +40,7 @@ def check_server(function): def permission(perm): def _dec(view_func): def _view(request, * args, ** kwargs): - if request.user.has_perm(perm): + if request.user.has_perm(perm) and request.user.is_authenticated(): return view_func(request, * args, ** kwargs) else: return base(request, messages=['You don\'t have permission to view this page.']) -- cgit v1.2.3 From 36ed6c373b8dfde42f81e28d62c540aba5a3c04d Mon Sep 17 00:00:00 2001 From: mkaay Date: Wed, 13 Jan 2010 21:12:24 +0100 Subject: queue template + view --- module/web/pyload/views.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index a28b71e69..55887d711 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -73,7 +73,13 @@ def home(request): @permission('pyload.can_see_dl') @check_server def queue(request): - return render_to_response(join(settings.TEMPLATE, 'queue.html'), RequestContext(request, {}, [status_proc])) + queue = settings.PYLOAD.get_queue() + for pack in queue: + children = [] + for child in settings.PYLOAD.get_package_files(pack["id"]): + children.append(settings.PYLOAD.get_file_info()) + pack["children"] = children + return render_to_response(join(settings.TEMPLATE, 'queue.html'), RequestContext(request, {'content': queue}, [status_proc])) @login_required @@ -147,4 +153,4 @@ def logs(request, page=0): for i in range(page, page + 20): data.append({'line': i + 1, 'content':log[i]}) - return render_to_response(join(settings.TEMPLATE, 'logs.html'), RequestContext(request, {'log': data, 'next': str(page + 20), 'prev': 0 if page-20 < 0 else page-20}, [status_proc])) \ No newline at end of file + return render_to_response(join(settings.TEMPLATE, 'logs.html'), RequestContext(request, {'log': data, 'next': str(page + 20), 'prev': 0 if page-20 < 0 else page-20}, [status_proc])) -- cgit v1.2.3 From 8fd337815ce73a3b44dc0fa0a913c3d3efea09bb Mon Sep 17 00:00:00 2001 From: mkaay Date: Wed, 13 Jan 2010 21:22:29 +0100 Subject: fix --- module/web/pyload/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 55887d711..994075001 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -77,7 +77,7 @@ def queue(request): for pack in queue: children = [] for child in settings.PYLOAD.get_package_files(pack["id"]): - children.append(settings.PYLOAD.get_file_info()) + children.append(settings.PYLOAD.get_file_info(child)) pack["children"] = children return render_to_response(join(settings.TEMPLATE, 'queue.html'), RequestContext(request, {'content': queue}, [status_proc])) -- cgit v1.2.3 From 07f280a220ab5bc5c3fb510ea00aecedfcec7564 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Wed, 20 Jan 2010 19:41:43 +0100 Subject: queue page fully functional, some fixes --- module/web/pyload/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index 994075001..d72dca56c 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -111,7 +111,7 @@ def downloads(request): return render_to_response(join(settings.TEMPLATE, 'downloads.html'), RequestContext(request, {'files': data}, [status_proc])) @login_required -@permission('pyload.user.can_download') +@permission('pyload.can_download') @check_server def download(request, path): path = path.split("/") @@ -143,7 +143,7 @@ def download(request, path): return HttpResponseNotFound("File not Found.") @login_required -@permission('pyload.user.can_see_logs') +@permission('pyload.can_see_logs') @check_server def logs(request, page=0): -- cgit v1.2.3 From 9aa8ca3b24133bef767f0eb8508e276fa7f92ee9 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sat, 23 Jan 2010 15:51:19 +0100 Subject: added missing icons, final improvments --- module/web/pyload/views.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'module/web/pyload') diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index d72dca56c..ea9d5f1be 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -75,10 +75,7 @@ def home(request): def queue(request): queue = settings.PYLOAD.get_queue() for pack in queue: - children = [] - for child in settings.PYLOAD.get_package_files(pack["id"]): - children.append(settings.PYLOAD.get_file_info(child)) - pack["children"] = children + pack["children"] = map(settings.PYLOAD.get_file_info, settings.PYLOAD.get_package_files(pack["id"])) return render_to_response(join(settings.TEMPLATE, 'queue.html'), RequestContext(request, {'content': queue}, [status_proc])) -- cgit v1.2.3