diff --git a/minecraftcodex/database/migrations/0009_auto__add_item.py b/minecraftcodex/database/migrations/0009_auto__add_item.py new file mode 100644 index 0000000..e7f9bb0 --- /dev/null +++ b/minecraftcodex/database/migrations/0009_auto__add_item.py @@ -0,0 +1,68 @@ +# -*- coding: 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(u'database_item', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('internal_name', self.gf('django.db.models.fields.CharField')(max_length=128)), + ('main_texture', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['database.Texture'], null=True)), + ('data_value', self.gf('django.db.models.fields.IntegerField')()), + )) + db.send_create_signal(u'database', ['Item']) + + + def backwards(self, orm): + # Deleting model 'Item' + db.delete_table(u'database_item') + + + models = { + u'database.item': { + 'Meta': {'object_name': 'Item'}, + 'data_value': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'main_texture': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['database.Texture']", 'null': 'True'}) + }, + 'database.jarfile': { + 'Meta': {'object_name': 'JarFile'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "'client'", 'max_length': '256'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), + 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['database.Version']"}) + }, + 'database.mod': { + 'Meta': {'ordering': "['name']", 'object_name': 'Mod'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + u'database.texture': { + 'Meta': {'object_name': 'Texture'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'type': ('django.db.models.fields.CharField', [], {'default': "'items'", 'max_length': '16'}) + }, + 'database.version': { + 'Meta': {'ordering': "['date']", 'object_name': 'Version'}, + 'changelog': ('django.db.models.fields.TextField', [], {}), + 'date': ('django.db.models.fields.DateField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mod': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['database.Mod']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'snapshot': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'release'", 'max_length': '10', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'version_number': ('django.db.models.fields.CharField', [], {'default': "'0.1.0'", 'max_length': '256'}) + } + } + + complete_apps = ['database'] \ No newline at end of file diff --git a/minecraftcodex/database/models.py b/minecraftcodex/database/models.py index 96b2fde..cd3477d 100644 --- a/minecraftcodex/database/models.py +++ b/minecraftcodex/database/models.py @@ -135,6 +135,7 @@ class Texture(models.Model): path = path.replace('.png', '_x%d.png' % size) return path + class TextureAdmin(admin.ModelAdmin): list_display = ('name', 'type', 'image_html', ) list_display_links = ('name', ) @@ -147,3 +148,30 @@ class TextureAdmin(admin.ModelAdmin): image_html.allow_tags = True admin.site.register(Texture, TextureAdmin) + + +### +# ITEM +### +class Item(models.Model): + internal_name = models.CharField(max_length=128) + main_texture = models.ForeignKey('Texture', null=True) + data_value = models.IntegerField() + + +class ItemAdmin(admin.ModelAdmin): + list_display = ('internal_name', 'data_value', 'main_texture_html') + list_display_links = ('internal_name', ) + #list_filter = ('type', ) + search_fields = ('internal_name', 'data_value', ) + + def main_texture_html(self, obj): + if obj.main_texture: + return( + '' % \ + obj.main_texture.get_image(2) + ) + main_texture_html.short_description = 'Image' + main_texture_html.allow_tags = True + +admin.site.register(Item, ItemAdmin) diff --git a/minecraftcodex/database/templates/items.html b/minecraftcodex/database/templates/items.html new file mode 100644 index 0000000..36d6ee7 --- /dev/null +++ b/minecraftcodex/database/templates/items.html @@ -0,0 +1,43 @@ +{% extends "layout.html" %} + +{% block content %} +

Items

+
+ + + + + + + + + + {% for item in page.object_list %} + + + + + + {% endfor %} + +
Data value
Texture
Name
+
{{ item.data_value }}
+
+
+ {% if item.main_texture %} + + {% endif %} +
+
+ {{ item.internal_name }} +
+ +{% endblock %} diff --git a/minecraftcodex/database/templates/layout.html b/minecraftcodex/database/templates/layout.html index 19f5a32..27a24b6 100644 --- a/minecraftcodex/database/templates/layout.html +++ b/minecraftcodex/database/templates/layout.html @@ -57,6 +57,9 @@ Thank you!
  • Home
  • +
  • + Items +
  • Versions
  • diff --git a/minecraftcodex/database/views.py b/minecraftcodex/database/views.py index 1fc66f7..a5bea88 100644 --- a/minecraftcodex/database/views.py +++ b/minecraftcodex/database/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render_to_response -from database.models import Version +from database.models import Version, Item from django.core.paginator import Paginator from django.template import RequestContext @@ -47,6 +47,27 @@ def version(request, version, status='release'): return render_to_response('version.html', context_instance=context) +def items(request): + section = 'items' + + items = Item.objects.all().order_by('data_value') + paginator = Paginator(items, 50) + page_number = 1 + + if 'page' in request.GET: + page_number = int(request.GET['page']) + + page = paginator.page(page_number) + + data = { + 'section': section, + 'page': page, + 'page_number': page_number, + 'paginator': paginator, + } + context = RequestContext(request, data) + return render_to_response('items.html', context_instance=context) + def about(request): context = RequestContext(request, {'section': 'about'}) return render_to_response('about.html', context_instance=context) diff --git a/minecraftcodex/herobrine/urls.py b/minecraftcodex/herobrine/urls.py index 348fcf9..e951050 100644 --- a/minecraftcodex/herobrine/urls.py +++ b/minecraftcodex/herobrine/urls.py @@ -35,6 +35,9 @@ urlpatterns = patterns('', ), url(r'^versions/', 'database.views.versions', name='version_list'), + # Items + url(r'^items/', 'database.views.items', name='items_list'), + # Robots (r'^robots\.txt$', lambda r: HttpResponse("", mimetype="text/plain")), diff --git a/utils/miner/items.py b/utils/miner/items.py index d552b69..f799c80 100644 --- a/utils/miner/items.py +++ b/utils/miner/items.py @@ -14,6 +14,10 @@ from objects import GameItem print("=> Phase: items") +if conf.SAVE: + sys.path.append('../../minecraftcodex') + os.environ['DJANGO_SETTINGS_MODULE'] = 'local_settings' + from database.models import Item, Texture ### # GLOBALS @@ -82,6 +86,27 @@ for java_file in conf.ITEMS_FILES: ITEMS.append(obj) +if conf.SAVE: + for item in ITEMS: + try: + obj = Item.objects.get( + internal_name=item.name, + data_value=item.id + ) + except Item.DoesNotExist: + obj = Item( + internal_name=item.name, + data_value=item.id + ) + try: + texture = Texture.objects.get(name__exact=obj.internal_name) + obj.main_texture = texture + except Exception as error: + print(error) + pass + obj.save() + + # Print the miner summary and compile the new old data print(' => Summary') new_old_data = {} diff --git a/utils/miner/textures.py b/utils/miner/textures.py index 3a2c94c..a451305 100644 --- a/utils/miner/textures.py +++ b/utils/miner/textures.py @@ -13,9 +13,10 @@ from objects import GameTexture print("=> Phase: textures") -path.append('../../minecraftcodex') -environ['DJANGO_SETTINGS_MODULE'] = 'local_settings' -from database.models import Texture +if conf.SAVE: + path.append('../../minecraftcodex') + environ['DJANGO_SETTINGS_MODULE'] = 'local_settings' + from database.models import Texture TEXTURES = []