diff --git a/pyweb/mumble/templates/mumble/mumble.html b/pyweb/mumble/templates/mumble/mumble.html
index 44ce1af..6a1d039 100644
--- a/pyweb/mumble/templates/mumble/mumble.html
+++ b/pyweb/mumble/templates/mumble/mumble.html
@@ -1,91 +1,96 @@
{% extends "index.html" %}
{% comment %}
-
+
{% endcomment %}
{% load mumble_extras %}
{% load i18n %}
{% block Headline %}
- {{ MumbleServer.name }}
+ {{ MumbleServer.name }}
{% endblock %}
{% block ContentMaster %}
-
+
{% endblock %}
{% block HeadTag %}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
{% endblock %}
diff --git a/pyweb/mumble/urls.py b/pyweb/mumble/urls.py
index e8af967..7093d09 100644
--- a/pyweb/mumble/urls.py
+++ b/pyweb/mumble/urls.py
@@ -28,6 +28,7 @@ urlpatterns = patterns(
( r'forms/', include(EXT_FORMS_PROVIDER.urls) ),
( r'(?P\d+)/(?P\d+)/texture.png', 'showTexture' ),
+ ( r'(?P\d+)/update_avatar', 'update_avatar' ),
( r'murmur/tree/(?P\d+)', 'mmng_tree' ),
( r'mumbleviewer/(?P\d+).xml', 'mumbleviewer_tree_xml' ),
diff --git a/pyweb/mumble/views.py b/pyweb/mumble/views.py
index 80f5370..26f9ff3 100644
--- a/pyweb/mumble/views.py
+++ b/pyweb/mumble/views.py
@@ -27,6 +27,7 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.contrib.auth import views as auth_views
from django.core.urlresolvers import reverse
+from django.views.decorators.csrf import csrf_exempt
from models import Mumble, MumbleUser
from forms import MumbleForm, MumbleUserForm, MumbleUserPasswordForm
@@ -230,6 +231,25 @@ def djangousers( request ):
return users
+@login_required
+@csrf_exempt
+def update_avatar( request, userid ):
+ try:
+ user = MumbleUser.objects.get( id=userid )
+ except MumbleUser.DoesNotExist:
+ return HttpResponse( "false", mimetype="text/html" )
+
+ textureform = MumbleTextureForm( request.POST, request.FILES )
+ if textureform.is_valid():
+ if 'usegravatar' in textureform.cleaned_data and user.gravatar:
+ user.setTextureFromUrl( user.gravatar )
+ elif 'texturefile' in request.FILES:
+ user.setTexture( Image.open( request.FILES['texturefile'] ) )
+ return HttpResponse( "true", mimetype="text/html" )
+
+ return HttpResponse( "false", mimetype="text/html" )
+
+
def mmng_tree( request, server ):
""" Return a JSON representation of the channel tree suitable for
Murmur Manager: