Refactor profile view, cleanups

This commit is contained in:
nikolark committed 2015-02-18 21:27:07 +01:00
1 parent d8f4d47ae4
commit 4a6377358a
4 files changed
+74 -69

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
from django.conf.urls import patterns, url
from neuf_userinfo.forms import NeufSetPasswordForm
from neuf_userinfo.views import AddNewUserView
urlpatterns = patterns(
'neuf_userinfo.views',
url(r'^$', 'index', name='index'),
url(r'^accounts/profile/(?P<username>\w*)$', 'profile'),
url(r'^accounts/logout/$', 'logout'),
# Set password
url(r'^accounts/password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
'password_reset_confirm',
{'set_password_form': NeufSetPasswordForm}),
)
# Rewrite of usersync.neuf.no
urlpatterns += patterns(
'',
url(r'^usersync/$', AddNewUserView.as_view(), name='usersync'),
)
+33 -30
View File
@@ -1,14 +1,14 @@
# coding: utf-8
from django.conf import settings
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import SetPasswordForm, AuthenticationForm
from django.contrib.auth import login, logout as auth_logout
from django.contrib.auth.models import User
from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from django.shortcuts import render_to_response, resolve_url, render
from django.template import RequestContext
from django.http import HttpResponseRedirect, JsonResponse
from django.http.response import HttpResponseNotFound
from django.shortcuts import resolve_url, render, get_object_or_404
from django.template.response import TemplateResponse
from django.utils.http import urlsafe_base64_decode
from django.views.decorators.cache import never_cache
@@ -18,7 +18,6 @@ from django.views.generic import View
from inside.models import InsideUser
from neuf_ldap.models import LdapGroup, LdapUser
from neuf_userinfo.forms import NewUserForm
from neuf_userinfo.utils import decrypt_rijndael
def index(request):
@@ -33,38 +32,42 @@ def index(request):
else:
form = AuthenticationForm(request)
return render_to_response('public/index.html', locals(), context_instance=RequestContext(request))
return render(request, 'public/index.html', {'form': form})
@login_required
def profile(request):
# FIXME: Allmost identical to below
username = request.user.username
groups = request.user.groups.all()
def profile(request, username=None):
if not username:
user = request.user
username = request.user.username
else:
# Only allow superusers
if not request.user.is_superuser:
return HttpResponseNotFound()
user = get_object_or_404(User, username=username)
# TODO: Move LDAP stuff to JSON-view and load via AJAX (more fault tolerant)
ldap_user = None
ldap_groups = None
ldap_private_group = None
try:
ldap_user = LdapUser.objects.get(username=username)
except LdapUser.DoesNotExist:
return render_to_response('private/profile.html', locals(), context_instance=RequestContext(request))
pass
ldap_groups = LdapGroup.objects.filter(usernames__contains=username)
ldap_private_group = LdapGroup.objects.get(gid=ldap_user.group)
if ldap_user:
ldap_groups = LdapGroup.objects.filter(usernames__contains=username)
ldap_private_group = LdapGroup.objects.get(gid=ldap_user.group)
return render_to_response('private/profile.html', locals(), context_instance=RequestContext(request))
@permission_required('main.is_superuser')
def user_profile(request, username):
ldap_user = None
try:
ldap_user = LdapUser.objects.get(username=username)
except LdapUser.DoesNotExist:
return render_to_response('private/profile.html', locals(), context_instance=RequestContext(request))
groups = LdapGroup.objects.filter(usernames__contains=username)
private_group = LdapGroup.objects.get(gid=ldap_user.group)
return render_to_response('private/profile.html', locals(), context_instance=RequestContext(request))
response = {
'ldap_user': ldap_user,
'ldap_groups': ldap_groups,
'ldap_private_group': ldap_private_group,
'user': user
}
print response
return render(request, 'private/profile.html', response)
def logout(request):
@@ -127,7 +130,7 @@ class AddNewUserView(View):
def get(self, request):
"""
- Create new user in LDAP (username, first_name, last_name, email)
- add to groups (usergroup, dns-alle), it not exists, create
- Add to groups (usergroup, dns-alle), it not exists, create
- Set LDAP password
- Create automount entry
- Create kerberos principal and set password
+7 -7
View File
@@ -27,14 +27,14 @@
<h2>Dine grupper</h2>
<div class="well">
<ul>
{% if groups %}
{% if ldap_groups %}
{% if ldap_private_group %}<li>{{ ldap_private_group }}</li>{% endif %}
{% for group in groups %}
{% if group = "dns-aktiv" %}
<li title="Du har tilgang til foreningsmaskinene.">{{ group }}</li>
{% else %}
<li>{{ group }}</li>
{% endif %}
{% for group in ldap_groups %}
{% if group = "dns-aktiv" %}
<li title="Du har tilgang til foreningsmaskinene.">{{ group }}</li>
{% else %}
<li>{{ group }}</li>
{% endif %}
{% endfor %}
{% else %}
<li>Ingen grupper.</li>
+14 -32
View File
@@ -1,51 +1,33 @@
from django.conf import settings
from django.conf.urls import include, patterns, url
from django.contrib import admin
from neuf_userinfo.forms import NeufPasswordChangeForm, NeufSetPasswordForm, NeufPasswordResetForm
from neuf_userinfo.views import AddNewUserView
from neuf_userinfo.forms import NeufPasswordChangeForm, NeufPasswordResetForm
admin.autodiscover()
import settings
urlpatterns = patterns(
'',
url(r'^admin/', include(admin.site.urls)),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'', include('neuf_userinfo.urls')),
url(r'^userstatus/client/$', 'neuf_kerberos.views.client_status'),
url(r'^userstatus/wireless/$', 'neuf_radius.views.wireless_status'),
url(r'^$', 'neuf_userinfo.views.index'),
url(r'^admin/', include(admin.site.urls)),
)
# User account views
urlpatterns += patterns(
'',
url(r'^accounts/profile/$', 'neuf_userinfo.views.profile'),
url(r'^accounts/profile/(?P<username>\w+)$', 'neuf_userinfo.views.user_profile'),
url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
url(r'^accounts/logout/$', 'neuf_userinfo.views.logout'),
# Change password
url(r'^accounts/password/change$', 'django.contrib.auth.views.password_change',
'django.contrib.auth.views',
url(r'^accounts/login/$', 'login'),
# Password
url(r'^accounts/password/change$', 'password_change',
{'password_change_form': NeufPasswordChangeForm}),
url(r'^accounts/password/change/done$', 'django.contrib.auth.views.password_change_done', name='password_change_done'),
# Reset password (forgot password)
url(r'^accounts/password/reset$', 'django.contrib.auth.views.password_reset',
url(r'^accounts/password/change/done$', 'password_change_done', name='password_change_done'),
url(r'^accounts/password/reset$', 'password_reset',
{'password_reset_form': NeufPasswordResetForm,
'from_email': settings.DEFAULT_FROM_EMAIL,
'email_template_name': 'registration/password_reset_email.txt',
'html_email_template_name': 'registration/password_reset_email.html'}),
url(r'^accounts/password/reset/done$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'),
# Set password
url(r'^accounts/password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
'neuf_userinfo.views.password_reset_confirm',
{'set_password_form': NeufSetPasswordForm}),
url(r'^accounts/password/reset/complete$', 'django.contrib.auth.views.password_reset_complete', name='password_reset_complete'),
url(r'^accounts/password/reset/done$', 'password_reset_done', name='password_reset_done'),
url(r'^accounts/password/reset/complete$', 'password_reset_complete', name='password_reset_complete'),
)
# Rewrite of usersync.neuf.no
urlpatterns += patterns(
'',
url(r'^usersync/$', AddNewUserView.as_view(), name='usersync'),
)