diff options
Diffstat (limited to 'module/web')
| -rw-r--r-- | module/web/ajax/urls.py | 19 | ||||
| -rw-r--r-- | module/web/ajax/views.py | 69 | ||||
| -rw-r--r-- | module/web/pyload.db | bin | 32768 -> 34816 bytes | |||
| -rw-r--r-- | module/web/pyload/admin.py | 14 | ||||
| -rw-r--r-- | module/web/pyload/models.py | 26 | ||||
| -rw-r--r-- | module/web/pyload/urls.py | 22 | ||||
| -rw-r--r-- | module/web/pyload/views.py | 4 | ||||
| -rw-r--r-- | module/web/settings.py | 5 | ||||
| -rw-r--r-- | module/web/templates/default/base.html | 9 | ||||
| -rw-r--r-- | module/web/templates/default/downloads.html | 8 | ||||
| -rw-r--r-- | module/web/templates/default/logs.html | 8 | ||||
| -rw-r--r-- | module/web/templates/default/queue.html | 8 | ||||
| -rw-r--r-- | module/web/urls.py | 13 | 
13 files changed, 155 insertions, 50 deletions
| diff --git a/module/web/ajax/urls.py b/module/web/ajax/urls.py index e69de29bb..0db240578 100644 --- a/module/web/ajax/urls.py +++ b/module/web/ajax/urls.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from django.conf.urls.defaults import * +from django.conf import settings + + +urlpatterns = patterns('ajax', +                       # Example: +                       # (r'^pyload/', include('pyload.foo.urls')), + +                       # Uncomment the admin/doc line below and add 'django.contrib.admindocs' +                       # to INSTALLED_APPS to enable admin documentation: +                       # (r'^admin/doc/', include('django.contrib.admindocs.urls')), + +                       # Uncomment the next line to enable the admin: +                        (r'^add_package$', 'views.add_package'), +                        (r'^status$', 'views.status'), +                        (r'^links$', 'views.links'), +                       (r'^queue$', 'views.queue'), +                       )
\ No newline at end of file diff --git a/module/web/ajax/views.py b/module/web/ajax/views.py index 60f00ef0e..d883376e7 100644 --- a/module/web/ajax/views.py +++ b/module/web/ajax/views.py @@ -1 +1,70 @@  # Create your views here. +from django.http import HttpResponse +from django.http import HttpResponseForbidden +from django.http import HttpResponseServerError +from django.conf import settings +from django.shortcuts import render_to_response +from django.utils import simplejson +from django.core.serializers import json + +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 HttpResponseServerError() +         +        _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) and request.user.is_authenticated: +                return view_func(request, *args, **kwargs) +            else: +                return HttpResponseForbidden() +         +        _view.__name__ = view_func.__name__ +        _view.__dict__ = view_func.__dict__ +        _view.__doc__ = view_func.__doc__ + +        return _view + +    return _dec + +class JsonResponse(HttpResponse): +    def __init__(self, object): +        content = simplejson.dumps( +            object, indent=2, cls=json.DjangoJSONEncoder, +            ensure_ascii=False) +        super(JsonResponse, self).__init__( +            content)#, content_type='application/json') +        self['Cache-Control'] =  'no-cache, must-revalidate' + + + +def add_package(request): +    a = {'b' : [1,2,3], 'dsfsd' : "sadd"} +    return JsonResponse(a) +     +# @TODO: Auth + Auth +     +def status(request): +    return JsonResponse(settings.PYLOAD.status_server()) +     +def links(request): +    return JsonResponse(settings.PYLOAD.status_downloads()) +     +def queue(request): +    return JsonResponse(settings.PYLOAD.get_queue())
\ No newline at end of file diff --git a/module/web/pyload.db b/module/web/pyload.dbBinary files differ index 8d34ef89c..45f55284e 100644 --- a/module/web/pyload.db +++ b/module/web/pyload.db 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)) diff --git a/module/web/settings.py b/module/web/settings.py index 0dc86d699..00395b328 100644 --- a/module/web/settings.py +++ b/module/web/settings.py @@ -97,7 +97,10 @@ TEMPLATE_LOADERS = (                      #     'django.template.loaders.eggs.load_template_source',                      ) +  MIDDLEWARE_CLASSES = ( +                    'django.middleware.gzip.GZipMiddleware', +                    'django.middleware.http.ConditionalGetMiddleware',                        'django.middleware.common.CommonMiddleware',                        'django.contrib.sessions.middleware.SessionMiddleware',                        'django.contrib.auth.middleware.AuthenticationMiddleware', @@ -123,5 +126,5 @@ INSTALLED_APPS = (                    ) -AUTH_PROFILE_MODULE = 'pyload.User' +AUTH_PROFILE_MODULE = 'pyload.UserProfile'  LOGIN_URL = '/login'
\ No newline at end of file diff --git a/module/web/templates/default/base.html b/module/web/templates/default/base.html index 096692a3c..27aa72b9f 100644 --- a/module/web/templates/default/base.html +++ b/module/web/templates/default/base.html @@ -6,6 +6,7 @@  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/default.css"> +<link rel="icon" href="/favicon.ico" type="image/vnd.microsoft.icon">  {% block head %}  {% endblock %}  <title>{% block title %}pyLoad Webinterface{% endblock %}</title> @@ -40,14 +41,14 @@  		{% block menu %}  		<li class="selected"> -		    <a href="/" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a> +		    <a href="{% url home %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a>  		</li>  		<li> -		    <a href="/queue/" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li> +		    <a href="{% url queue %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li>  		<li> -		    <a href="/downloads/" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li> +		    <a href="{% url downloads %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li>  		<li class="right"> -		    <a href="/logs/"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a> +		    <a href="{% url logs %}"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a>  		</li>  		{% endblock %} diff --git a/module/web/templates/default/downloads.html b/module/web/templates/default/downloads.html index 3c9bb5df4..202965b3c 100644 --- a/module/web/templates/default/downloads.html +++ b/module/web/templates/default/downloads.html @@ -4,13 +4,13 @@  {% block menu %}  <li> -    <a href="/" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a> +    <a href="{% url home %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a>  </li>  <li> -    <a href="/queue" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li> +    <a href="{% url queue %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li>  <li class="selected"> -    <a href="/downloads" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li> +    <a href="{% url downloads %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li>  <li class="right"> -    <a href="/logs"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a> +    <a href="{% url logs %}"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a>  </li>  {% endblock %}
\ No newline at end of file diff --git a/module/web/templates/default/logs.html b/module/web/templates/default/logs.html index d6f392f58..39f4b8660 100644 --- a/module/web/templates/default/logs.html +++ b/module/web/templates/default/logs.html @@ -4,13 +4,13 @@  {% block menu %}  <li> -    <a href="/" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a> +    <a href="{% url home %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a>  </li>  <li> -    <a href="/queue" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li> +    <a href="{% url queue %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li>  <li> -    <a href="/downloads" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li> +    <a href="{% url downloads %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li>  <li class="right" class="selected"> -    <a href="/logs"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a> +    <a href="{% url logs %}"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a>  </li>  {% endblock %}
\ No newline at end of file diff --git a/module/web/templates/default/queue.html b/module/web/templates/default/queue.html index b6a185b19..8c582c5d0 100644 --- a/module/web/templates/default/queue.html +++ b/module/web/templates/default/queue.html @@ -4,13 +4,13 @@  {% block menu %}  <li> -    <a href="/" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a> +    <a href="{% url home %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-home.png" alt="" /> Home</a>  </li>  <li class="selected"> -    <a href="/queue" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li> +    <a href="{% url queue %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-download.png" alt="" /> Queue</a></li>  <li> -    <a href="/downloads" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li> +    <a href="{% url downloads %}" title=""><img src="{{ MEDIA_URL }}img/head-menu-development.png" alt="" /> Downloads</a></li>  <li class="right"> -    <a href="/logs"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a> +    <a href="{% url logs %}"  class="action index" accesskey="x" rel="nofollow"><img src="{{ MEDIA_URL }}img/head-menu-index.png" alt="" />Logs</a>  </li>  {% endblock %}
\ No newline at end of file diff --git a/module/web/urls.py b/module/web/urls.py index 3e573aa95..4f47fc281 100644 --- a/module/web/urls.py +++ b/module/web/urls.py @@ -9,22 +9,15 @@ admin.autodiscover()  urlpatterns = patterns('',                         # Example: -                       # (r'^pyload/', include('pyload.foo.urls')),                         # Uncomment the admin/doc line below and add 'django.contrib.admindocs'                         # to INSTALLED_APPS to enable admin documentation:                         # (r'^admin/doc/', include('django.contrib.admindocs.urls')), -                       # Uncomment the next line to enable the admin:                          (r'^admin/', include(admin.site.urls)), -                       #(r'^json/', include(ajax.urls)), +                       (r'^json/', include('ajax.urls')), +                        (r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/media/img/favicon.ico'}),                          (r'^media/(?P<path>.*)$', 'django.views.static.serve',                           {'document_root': settings.MEDIA_ROOT}), -                       (r'^login/$', 'django.contrib.auth.views.login', {'template_name': join(settings.TEMPLATE,'login.html')}), -                       (r'^logout/$', 'django.contrib.auth.views.logout', {'template_name': join(settings.TEMPLATE,'logout.html')}), -                       (r'^home/$', 'pyload.views.home'), -                       (r'^downloads/$', 'pyload.views.downloads'), -                       (r'^queue/$', 'pyload.views.queue'), -                       (r'^logs/$', 'pyload.views.logs'), -                       (r'^$', 'pyload.views.home'), +                       (r'^', include('pyload.urls')),                         ) | 
