Added Items mining and saving, views, urls and templates (start work)

This commit is contained in:
Felipe Martín 2013-05-27 17:30:02 +02:00
parent d63c07efd8
commit e89dd7c12d
8 changed files with 196 additions and 4 deletions

View File

@ -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']

View File

@ -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(
'<img src="/static/textures/%s" height="32" />' % \
obj.main_texture.get_image(2)
)
main_texture_html.short_description = 'Image'
main_texture_html.allow_tags = True
admin.site.register(Item, ItemAdmin)

View File

@ -0,0 +1,43 @@
{% extends "layout.html" %}
{% block content %}
<h1>Items</h1>
<hr />
<table class="table table-condensed table-hover">
<thead>
<tr>
<th width="20" nowrap="nowrap"><div class="text-center">Data value</div></th>
<th nowrap="nowrap"><div class="text-center">Texture</div></th>
<th><div class="text-center">Name</div></th>
</tr>
</thead>
<tbody>
{% for item in page.object_list %}
<tr>
<td>
<div class="text-center">{{ item.data_value }}</div>
</td>
<td>
<div class="text-center">
{% if item.main_texture %}
<img src="/static/textures/{{ item.main_texture.get_image(2) }}" />
{% endif %}
</div>
</td>
<td>
{{ item.internal_name }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="pagination pagination-centered">
<ul>
{% for p in range(1, paginator.num_pages+1) %}
<li {% if p == page_number %}class="active"{% endif %}>
<a href="{{ url('items_list') }}?page={{ p }}">{{ p }}</a>
</li>
{% endfor %}
</ul>
</div>
{% endblock %}

View File

@ -57,6 +57,9 @@ Thank you!
<li class="{% if section == 'home' %}active{% endif %}">
<a href="{{ url('homepage') }}">Home</a>
</li>
<li class="{% if section == 'items' %}active{% endif %}">
<a href="{{ url('items_list') }}">Items</a>
</li>
<li class="{% if section == 'versions' %}active{% endif %}">
<a href="{{ url('version_list') }}">Versions</a>
</li>

View File

@ -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)

View File

@ -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")),

View File

@ -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 = {}

View File

@ -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 = []