diff --git a/pyweb/mumble/models.py b/pyweb/mumble/models.py index a123ae0..3a89de7 100644 --- a/pyweb/mumble/models.py +++ b/pyweb/mumble/models.py @@ -15,7 +15,10 @@ """ import socket, Ice, re -from sys import stderr +from sys import stderr +from urllib import urlopen +from StringIO import StringIO +from PIL import Image from django.utils.translation import ugettext_noop, ugettext_lazy as _ from django.contrib.auth.models import User @@ -621,6 +624,10 @@ class MumbleUser( models.Model ): # Don't save the users' passwords, we don't need them anyway self.password = ''; + # If enabled (and possible), set Gravatar as default Avatar + if settings.USE_GRAVATAR and self.gravatar: + self.setTextureFromUrl( self.gravatar ) + return models.Model.save( self ); def __init__( self, *args, **kwargs ): @@ -667,6 +674,11 @@ class MumbleUser( models.Model ): """ Install the given image as the user's texture. """ self.server.ctl.setTexture(self.server.srvid, self.mumbleid, image) + def setTextureFromUrl( self, url, transparency=None ): + """ Retrieve the image at the given URL and set it as my texture. """ + img = Image.open( StringIO( urlopen( url ).read() ) ) + self.setTexture( img ) + texture = property( getTexture, setTexture, doc="Get the texture as a PIL Image or set the Image as the texture." ); diff --git a/pyweb/mumble/views.py b/pyweb/mumble/views.py index 05f2f32..dfaa2d5 100644 --- a/pyweb/mumble/views.py +++ b/pyweb/mumble/views.py @@ -15,7 +15,6 @@ """ import simplejson -from urllib import urlopen from StringIO import StringIO from PIL import Image @@ -167,8 +166,7 @@ def show( request, server ): textureform = MumbleTextureForm( request.POST, request.FILES ); if textureform.is_valid(): if 'usegravatar' in textureform.cleaned_data and textureform.cleaned_data['usegravatar'] and user.gravatar: - gravatar = urlopen( user.gravatar256 ); - user.setTexture( Image.open( gravatar ) ); + user.setTextureFromUrl( user.gravatar ); elif 'texturefile' in request.FILES: user.setTexture( Image.open( request.FILES['texturefile'] ) ); return HttpResponseRedirect( reverse( show, kwargs={ 'server': int(server), } ) ); diff --git a/pyweb/settings.py b/pyweb/settings.py index 8b3f863..d470307 100644 --- a/pyweb/settings.py +++ b/pyweb/settings.py @@ -21,7 +21,8 @@ ## The slice to use for communication over ZeroC Ice. ## ## This must be set to the path to the Murmur.ice file that ## ## resides in your Murmur directory. ## -SLICE = '/usr/share/slice/Murmur.ice' ## +SLICE = '/home/svedrin/murmur/Murmur.ice' +#SLICE = '/usr/share/slice/Murmur.ice' ## ## ## ################################################################# ## ## @@ -60,9 +61,11 @@ if not MUMBLE_DJANGO_ROOT or not exists( MUMBLE_DJANGO_ROOT ): # URL Template for constructing Gravatars. GRAVATAR_URL = 'http://www.gravatar.com/avatar/%(hash)s.jpg?d=monsterid&s=%(size)d' +# Automatically set the Gravatar as the user's avatar when creating new users? +USE_GRAVATAR = True # The default connection string to set for newly created instances. -# ICE: +# Ice: DEFAULT_CONN = 'Meta:tcp -h 127.0.0.1 -p 6502' # DBus: #DEFAULT_CONN = 'net.sourceforge.mumble.murmur'