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
import socket
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):
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 django.db.models.signals import post_save, post_delete
from api.events import VaultContentsEvent, broadcast_server_event
from minecraft.items import ITEMS
from minecraft.models import Item
class VaultSlot(models.Model):
player = models.ForeignKey(MinecraftProfile, related_name='vault_slots')
item = models.IntegerField(default=0)
quantity = models.IntegerField(default=-1)
damage = models.IntegerField(default=0)
data = models.IntegerField(default=0)
position = models.IntegerField()
item = models.ForeignKey(Item)
class Meta:
ordering = ['position']
@@ -18,21 +17,6 @@ class VaultSlot(models.Model):
def __unicode__(self):
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):
slots = [
{