Add an 'item' model to minecraft app, and migrate Vault app to use it.

The Item model is meant to be used as a way for other apps to store exceedingly
common data about an item, such as the material ID, data value, and damage
value. Keeping it all in one object allows for the item schema to change later
on without needing to update dozens of other apps.
This commit is contained in:
Trever Fischer
2012-11-16 15:14:41 -05:00
parent 3706219e90
commit 452b5acbfd
6 changed files with 415 additions and 18 deletions

View File

@@ -0,0 +1,118 @@
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding model 'Item'
db.create_table('minecraft_item', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('material', self.gf('django.db.models.fields.IntegerField')(default=0)),
('damage', self.gf('django.db.models.fields.IntegerField')(default=0)),
('data', self.gf('django.db.models.fields.IntegerField')(default=0)),
))
db.send_create_signal('minecraft', ['Item'])
def backwards(self, orm):
# Deleting model 'Item'
db.delete_table('minecraft_item')
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.ban': {
'Meta': {'object_name': 'Ban'},
'banner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
'expiration': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'player': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'bans'", 'to': "orm['minecraft.MinecraftProfile']"}),
'reason': ('django.db.models.fields.TextField', [], {}),
'start': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
},
'minecraft.item': {
'Meta': {'object_name': 'Item'},
'damage': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'data': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'material': ('django.db.models.fields.IntegerField', [], {'default': '0'})
},
'minecraft.minecraftgroup': {
'Meta': {'object_name': 'MinecraftGroup'},
'authGroup': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'permissionList': ('django.db.models.fields.TextField', [], {'blank': 'True'})
},
'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.playersession': {
'Meta': {'object_name': 'PlayerSession'},
'end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
'player': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['minecraft.MinecraftProfile']"}),
'server': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['minecraft.Server']"}),
'start': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
},
'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'}),
'ruleset': ('django.db.models.fields.TextField', [], {'default': "''"}),
'secret': ('django.db.models.fields.CharField', [], {'max_length': '100'})
}
}
complete_apps = ['minecraft']

View File

@@ -5,6 +5,36 @@ from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
import socket import socket
import datetime import datetime
from items import ITEMS
class Item(models.Model):
"""Represents a single unique class of item"""
material = models.IntegerField(default=0)
damage = models.IntegerField(default=0)
data = models.IntegerField(default=0)
def get(self, material, damage=0, data=0):
return self.objects.get_or_create(material=material, damage=damage,
data=data)
def __unicode__(self):
return self.name()
def damagePct(self):
if self.metadata['durability'] == 0:
return 100
return round((float(self.damage)/float(self.metadata['durability']))*100)
def name(self):
name = self.metadata['name'].lower().split('_')
return ' '.join(map(lambda x:x[0].upper()+x[1:], name))
@property
def metadata(self):
for i in ITEMS:
if i['id'] == self.item:
return i;
class MinecraftProfile(models.Model): class MinecraftProfile(models.Model):
user = models.OneToOneField(User) user = models.OneToOneField(User)

View File

@@ -0,0 +1,77 @@
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding field 'VaultSlot.item_id'
db.add_column('vault_vaultslot', 'item_id', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
def backwards(self, orm):
# Deleting field 'VaultSlot.item_id'
db.delete_column('vault_vaultslot', 'item_id')
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'})
},
'vault.vaultslot': {
'Meta': {'ordering': "['position']", 'object_name': 'VaultSlot'},
'damage': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'data': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'item': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'item_id': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'player': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'vault_slots'", 'to': "orm['minecraft.MinecraftProfile']"}),
'position': ('django.db.models.fields.IntegerField', [], {}),
'quantity': ('django.db.models.fields.IntegerField', [], {'default': '-1'})
}
}
complete_apps = ['vault']

View File

@@ -0,0 +1,79 @@
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import DataMigration
from django.db import models
from vault.models import VaultSlot
from minecraft.models import Item
class Migration(DataMigration):
def forwards(self, orm):
for slot in VaultSlot.objects.all():
item = Item.get(slot.item, slot.damage, slot.data)
slot.item_id = item.id
slot.save()
def backwards(self, orm):
"Write your backwards methods here."
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'})
},
'vault.vaultslot': {
'Meta': {'ordering': "['position']", 'object_name': 'VaultSlot'},
'damage': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'data': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'item': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'item_id': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'player': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'vault_slots'", 'to': "orm['minecraft.MinecraftProfile']"}),
'position': ('django.db.models.fields.IntegerField', [], {}),
'quantity': ('django.db.models.fields.IntegerField', [], {'default': '-1'})
}
}
complete_apps = ['vault']

View File

@@ -0,0 +1,109 @@
# encoding: utf-8
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Deleting field 'VaultSlot.item_id'
db.delete_column('vault_vaultslot', 'item_id')
# Deleting field 'VaultSlot.data'
db.delete_column('vault_vaultslot', 'data')
# Deleting field 'VaultSlot.damage'
db.delete_column('vault_vaultslot', 'damage')
# Renaming column for 'VaultSlot.item' to match new field type.
db.rename_column('vault_vaultslot', 'item', 'item_id')
# Changing field 'VaultSlot.item'
db.alter_column('vault_vaultslot', 'item_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['minecraft.Item']))
# Adding index on 'VaultSlot', fields ['item']
db.create_index('vault_vaultslot', ['item_id'])
def backwards(self, orm):
# Removing index on 'VaultSlot', fields ['item']
db.delete_index('vault_vaultslot', ['item_id'])
# Adding field 'VaultSlot.item_id'
db.add_column('vault_vaultslot', 'item_id', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
# Adding field 'VaultSlot.data'
db.add_column('vault_vaultslot', 'data', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
# Adding field 'VaultSlot.damage'
db.add_column('vault_vaultslot', 'damage', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
# Renaming column for 'VaultSlot.item' to match new field type.
db.rename_column('vault_vaultslot', 'item_id', 'item')
# Changing field 'VaultSlot.item'
db.alter_column('vault_vaultslot', 'item', self.gf('django.db.models.fields.IntegerField')())
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.item': {
'Meta': {'object_name': 'Item'},
'damage': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'data': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'material': ('django.db.models.fields.IntegerField', [], {'default': '0'})
},
'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'})
},
'vault.vaultslot': {
'Meta': {'ordering': "['position']", 'object_name': 'VaultSlot'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'item': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['minecraft.Item']"}),
'player': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'vault_slots'", 'to': "orm['minecraft.MinecraftProfile']"}),
'position': ('django.db.models.fields.IntegerField', [], {}),
'quantity': ('django.db.models.fields.IntegerField', [], {'default': '-1'})
}
}
complete_apps = ['vault']

View File

@@ -2,15 +2,14 @@ from django.db import models
from minecraft.models import MinecraftProfile from minecraft.models import MinecraftProfile
from django.db.models.signals import post_save, post_delete from django.db.models.signals import post_save, post_delete
from api.events import VaultContentsEvent, broadcast_server_event from api.events import VaultContentsEvent, broadcast_server_event
from minecraft.items import ITEMS from minecraft.models import Item
class VaultSlot(models.Model): class VaultSlot(models.Model):
player = models.ForeignKey(MinecraftProfile, related_name='vault_slots') player = models.ForeignKey(MinecraftProfile, related_name='vault_slots')
item = models.IntegerField(default=0) item = models.IntegerField(default=0)
quantity = models.IntegerField(default=-1) quantity = models.IntegerField(default=-1)
damage = models.IntegerField(default=0)
data = models.IntegerField(default=0)
position = models.IntegerField() position = models.IntegerField()
item = models.ForeignKey(Item)
class Meta: class Meta:
ordering = ['position'] ordering = ['position']
@@ -18,21 +17,6 @@ class VaultSlot(models.Model):
def __unicode__(self): def __unicode__(self):
return "%s.%s: %s %s"%(self.player, self.position, self.quantity, self.item) return "%s.%s: %s %s"%(self.player, self.position, self.quantity, self.item)
def name(self):
name = self.metadata['name'].lower().split('_')
return ' '.join(map(lambda x:x[0].upper()+x[1:], name))
@property
def metadata(self):
for i in ITEMS:
if i['id'] == self.item:
return i;
def damagePct(self):
if self.metadata['durability'] == 0:
return 100
return round((float(self.damage)/float(self.metadata['durability']))*100)
def send_vault_delete(sender, instance, *args, **kwargs): def send_vault_delete(sender, instance, *args, **kwargs):
slots = [ slots = [
{ {