]> git.parisson.com Git - telemeta.git/commitdiff
Hopefully fixed admin login issues (see 'user_passes_test, login_required and permiss...
authorriccardo <riccardo@parisson.com>
Wed, 2 Mar 2011 16:56:42 +0000 (17:56 +0100)
committerriccardo <riccardo@parisson.com>
Wed, 2 Mar 2011 16:56:42 +0000 (17:56 +0100)
telemeta/templates/telemeta_default/login.html
telemeta/urls.py
telemeta/web/base.py

index dcf7f4c0ee1fce2be1166a8ed261e405e7ed47c5..d3ebae56eb26d94b85d3c126f77939d6d7f30f96 100644 (file)
@@ -8,7 +8,7 @@
 <p class="login-error">{% trans "Your username and password didn't match. Please try again." %}</p>
 {% endif %}
 
-<form class="login" method="post" action="{% url telemeta-login %}">{% csrf_token %}
+<form class="login" method="post" action="{% url telemeta-login_ %}">{% csrf_token %}
 <p>
 {{ form.username.label_tag }}
 {{ form.username }}<br />
index 0d9fb499d3b15f94a643b2a58e15734645c858f7..ac3e016ffc14912986c23d3e770666a1ed09082c 100644 (file)
@@ -179,7 +179,9 @@ urlpatterns = patterns('',
     url(r'^oai/.*$', web_view.handle_oai_request, name="telemeta-oai"),
 
     # Authentication
-    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'},
+     url(r'^login_/$', web_view.log_in_, {'template_name': 'telemeta/login.html'},
+        name="telemeta-login_"),
+     url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'},
         name="telemeta-login"),
     url(r'^logout/$', web_view.logout, name="telemeta-logout"),
     
index 76cec9ee62b6984d686bf5c76c0e64a5fa63649b..c34321b5dd84144d09bf959943421ba8d17e745e 100644 (file)
@@ -40,6 +40,8 @@ import timeside
 
 from jsonrpc import jsonrpc_method
 
+from django.utils.decorators import method_decorator
+from django.contrib.auth import authenticate, login
 from django.template import RequestContext, loader
 from django import template
 from django.http import HttpResponse, HttpResponseRedirect
@@ -463,7 +465,7 @@ class WebView(object):
     def __get_admin_context_vars(self):
         return {"enumerations": self.__get_enumerations_list()}
     
-    @login_required
+    @method_decorator(login_required) #@login_required
     def admin_index(self, request):
         return render(request, 'telemeta/admin.html', self.__get_admin_context_vars())
 
@@ -479,7 +481,7 @@ class WebView(object):
 
         return model
 
-    @login_required
+    @method_decorator(login_required) #@login_required
     def edit_enumeration(self, request, enumeration_id):        
 
         enumeration  = self.__get_enumeration(enumeration_id)
@@ -492,7 +494,7 @@ class WebView(object):
         vars["enumeration_values"] = enumeration.objects.all()
         return render(request, 'telemeta/enumeration_edit.html', vars)
 
-    @login_required
+    @method_decorator(login_required) #@login_required
     def add_to_enumeration(self, request, enumeration_id):        
 
         enumeration  = self.__get_enumeration(enumeration_id)
@@ -504,7 +506,7 @@ class WebView(object):
 
         return self.edit_enumeration(request, enumeration_id)
 
-    @login_required
+    @method_decorator(login_required) #@login_required
     def update_enumeration(self, request, enumeration_id):        
         
         enumeration  = self.__get_enumeration(enumeration_id)
@@ -516,7 +518,7 @@ class WebView(object):
 
         return self.edit_enumeration(request, enumeration_id)
 
-    @login_required
+    @method_decorator(login_required) #@login_required
     def edit_enumeration_value(self, request, enumeration_id, value_id):        
 
         enumeration  = self.__get_enumeration(enumeration_id)
@@ -529,7 +531,7 @@ class WebView(object):
         vars["enumeration_record"] = enumeration.objects.get(id__exact=value_id)
         return render(request, 'telemeta/enumeration_edit_value.html', vars)
 
-    @login_required
+    @method_decorator(login_required) #@login_required
     def update_enumeration_value(self, request, enumeration_id, value_id):        
 
         if request.POST.has_key("save"):
@@ -608,6 +610,8 @@ class WebView(object):
         return HttpResponse(provider.handle(args), mimetype='text/xml')
         
     def render_flatpage(self, request, path):
+        print "REQUEST:"+request
+        print"PATH"+path
         try:
             content = pages.get_page_content(request, path)
         except pages.MalformedPagePath:
@@ -621,6 +625,35 @@ class WebView(object):
     def logout(self, request):
         auth.logout(request)
         return redirect('telemeta-home')
+
+    def log_in_(self, request, template_name):
+        print "before:"
+        print request.user
+        msg = []
+        if request.method == 'POST':
+            username = request.POST['username']
+            password = request.POST['password']
+            user = authenticate(username=username, password=password)
+            if user is not None:
+                if user.is_active:
+                    login(request, user)
+                    print "after:"
+                    print request.user
+                    return HttpResponseRedirect('/')
+                    # Redirect to a success page.
+                    msg.append("login successful")
+                else:
+                    msg.append("disabled account")
+                    # Return a 'disabled account' error message
+            else:
+                msg.append("disabled account")
+        
+        # Return an 'invalid login' error message.
+#        return render_flatpage(self, request, template_nam
+#        return django.contrib.auth.views.login(request, {'template_name': 'telemeta/login.html'});
+#        return render(request, template_name)
+#        return render_to_response('login.html', {'errors': msg})
+
         
     @jsonrpc_method('telemeta.add_marker')
     def add_marker(request, marker):