Move MinecraftProfile from the profiles app into the minecraft app, and stop using the auth profiles feature.

Might go back to auth profiles if a suitable use can be found.
This commit is contained in:
Trever Fischer
2012-03-04 23:18:00 -05:00
parent 060c964e95
commit e0957c2dab
13 changed files with 123 additions and 34 deletions

View File

@@ -34,7 +34,7 @@ class MOTDHandler(AnonymousBaseHandler):
class BalanceHandler(BaseHandler):
def read(self, request):
user = request.user
return {"balance":user.get_profile().currencyaccount.balance}
return {"balance":user.minecraftprofile.currencyaccount.balance}
class ServerHandler(AnonymousBaseHandler):
allowed_methods = ('GET',)

View File

@@ -1,5 +1,5 @@
from django.db import models
from profiles.models import MinecraftProfile
from minecraft.models import MinecraftProfile
from django.db.models.signals import post_save
class CurrencyAccount(models.Model):

View File

@@ -1,5 +1,6 @@
import models
from django.contrib import admin
admin.site.register(models.MinecraftProfile)
admin.site.register(models.Server)
admin.site.register(models.MOTD)

9
minecraft/forms.py Normal file
View File

@@ -0,0 +1,9 @@
from django import forms
from django.contrib.auth.models import User
import models
class ProfileForm(forms.ModelForm):
class Meta:
model = models.MinecraftProfile
exclude = ('user',)

View File

@@ -37,7 +37,7 @@ class Command(BaseCommand):
djangoUser.save()
djangoUser.groups.add(importGroup)
djangoUser.save()
profile = djangoUser.get_profile()
profile = djangoUser.minecraftprofile
profile.mc_username = u[6]
profile.save()
print "Imported %s <%s>"%(u[0], u[6])

View File

@@ -0,0 +1,86 @@
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
from django.db.utils import DatabaseError
class Migration(SchemaMigration):
def forwards(self, orm):
try:
db.rename_table('profiles_minecraftprofile', 'minecraft_minecraftprofile')
except DatabaseError, e:
# Adding model 'MinecraftProfile'
db.create_table('minecraft_minecraftprofile', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)),
('mc_username', self.gf('django.db.models.fields.CharField')(unique=True, max_length=30)),
))
db.send_create_signal('minecraft', ['MinecraftProfile'])
def backwards(self, orm):
db.rename_table('minecraft_minecraftprofile', 'profiles_minecraftprofile')
models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
},
'minecraft.minecraftprofile': {
'Meta': {'object_name': 'MinecraftProfile'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'mc_username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
},
'minecraft.motd': {
'Meta': {'object_name': 'MOTD'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'server': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['minecraft.Server']"}),
'text': ('django.db.models.fields.TextField', [], {})
},
'minecraft.server': {
'Meta': {'object_name': 'Server'},
'hostname': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'port': ('django.db.models.fields.IntegerField', [], {'default': '25565'}),
'query_port': ('django.db.models.fields.IntegerField', [], {'default': '25565'})
}
}
complete_apps = ['minecraft']

View File

@@ -1,10 +1,18 @@
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
import pyspy
from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist
from profiles.models import MinecraftProfile
import socket
class MinecraftProfile(models.Model):
user = models.OneToOneField(User)
mc_username = models.CharField(max_length=30, verbose_name="Minecraft.net Username", unique=True)
def __unicode__(self):
return self.mc_username
class Server(models.Model):
hostname = models.CharField(max_length=100)
port = models.IntegerField(default=25565)
@@ -43,3 +51,9 @@ class MOTD(models.Model):
def __unicode__(self):
return self.text
def create_profile(sender, instance, created, **kwargs):
if created:
MinecraftProfile.objects.create(user=instance)
post_save.connect(create_profile, sender=User)

View File

@@ -1,4 +1,3 @@
import models
from django.contrib import admin
admin.site.register(models.MinecraftProfile)
admin.site.register(models.Quote)

View File

@@ -2,11 +2,6 @@ from django import forms
from django.contrib.auth.models import User
import models
class ProfileForm(forms.ModelForm):
class Meta:
model = models.MinecraftProfile
exclude = ('user',)
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)

View File

@@ -2,14 +2,6 @@ from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class MinecraftProfile(models.Model):
user = models.OneToOneField(User)
mc_username = models.CharField(max_length=30, verbose_name="Minecraft.net Username", unique=True)
def __unicode__(self):
return self.mc_username
class Invite(models.Model):
code = models.CharField(max_length=30)
creator = models.ForeignKey(User, related_name='invites')
@@ -28,9 +20,3 @@ class Quote(models.Model):
def __unicode__(self):
return self.text
def create_profile(sender, instance, created, **kwargs):
if created:
MinecraftProfile.objects.create(user=instance)
post_save.connect(create_profile, sender=User)

View File

@@ -10,6 +10,7 @@ from django.contrib.auth import authenticate, login
import forms
import models
import shortuuid
from minecraft.forms import ProfileForm
@login_required
def profile(request):
@@ -18,11 +19,11 @@ def profile(request):
@login_required
def edit(request):
if request.method == 'POST':
form = forms.ProfileForm(request.POST, instance=request.user.get_profile())
form = ProfileForm(request.POST, instance=request.user.minecraftprofile)
else:
form = forms.ProfileForm(instance=request.user.get_profile())
form = ProfileForm(instance=request.user.minecraftprofile)
if form.is_valid():
profile = request.user.get_profile()
profile = request.user.minecraftprofile
profile.mc_username = form.cleaned_data['mc_username']
profile.save()
return HttpResponseRedirect(reverse('profiles.views.profile'))
@@ -66,10 +67,10 @@ def register(request):
invite = request.session['profile-invite']
if request.method == 'POST':
userForm = forms.UserForm(request.POST, prefix='user')
profileForm = forms.ProfileForm(request.POST, prefix='profile')
profileForm = ProfileForm(request.POST, prefix='profile')
else:
userForm = forms.UserForm(prefix='user')
profileForm = forms.ProfileForm(prefix='profile')
profileForm = ProfileForm(prefix='profile')
if userForm.is_valid() and profileForm.is_valid():
user = User()
user.username = userForm.cleaned_data['username']
@@ -78,7 +79,7 @@ def register(request):
user.save()
invite.claimer = user
invite.save()
profile = user.get_profile()
profile = user.minecraftprofile
profile.mc_username = profileForm.cleaned_data['mc_username']
profile.save()
del request.session['profile-invite']

View File

@@ -160,8 +160,6 @@ LOGGING = {
}
}
AUTH_PROFILE_MODULE = 'profiles.MinecraftProfile'
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",

View File

@@ -35,10 +35,10 @@
<h2 class="title">{{user.username}}</h2>
<div class="userbox">
<div class="avatar">
{% avatar user.get_profile.mc_username %}
{% avatar user.minecraftprofile.mc_username %}
</div>
<div class="balance">
<span id="balance-display">{{ user.get_profile.currencyaccount.balance|floatformat:2 }}</span> grist
<span id="balance-display">{{ user.minecraftprofile.currencyaccount.balance|floatformat:2 }}</span> grist
</div>
<div class="time">
<span id="time-display"></span>