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:
118
minecraft/migrations/0010_auto__add_item.py
Normal file
118
minecraft/migrations/0010_auto__add_item.py
Normal 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']
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user