Archived
Refactor profile view, cleanups
This commit is contained in:
1 parent
d8f4d47ae4
commit
4a6377358a
4 files changed
+74
-69
No files matched your search
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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'),
|
||||
)
|
||||
Reference in new issue
Block a user