Incredibly basic first pass of a website for Geoffrey
+ Added an index page with a dynamic count + Added a List page for each model + Selling command improvementsdoc_update
parent
bfa34b3d2c
commit
efe12b5b21
|
@ -151,15 +151,23 @@ def selling(item_name):
|
||||||
items = []
|
items = []
|
||||||
if len(item_name) == 0:
|
if len(item_name) == 0:
|
||||||
raise EmptryString
|
raise EmptryString
|
||||||
query = ItemListing.objects.filter(item_name__icontains=item_name).values()
|
|
||||||
#items = ItemListing.objects.annotate(normalized_price=F('price') / F('amount'))\
|
|
||||||
# .filter(item_name__icontains=item_name).order_by('normalized_price')
|
|
||||||
|
|
||||||
if len(query) == 0:
|
shops = ItemListing.objects.annotate(normalized_price=F('price') / F('amount'))\
|
||||||
|
.filter(item_name__icontains=item_name).order_by('normalized_price').values('shop_id').distinct()
|
||||||
|
|
||||||
|
if len(shops) == 0:
|
||||||
raise ItemNotFound
|
raise ItemNotFound
|
||||||
|
|
||||||
for item in query:
|
for shop_id in shops:
|
||||||
items.append(item)
|
shop = Shop.objects.get(pk=shop_id['shop_id']).json
|
||||||
|
item_query = ItemListing.objects.annotate(normalized_price=F('price') / F('amount')).\
|
||||||
|
filter(item_name__icontains=item_name).order_by('normalized_price').all()
|
||||||
|
item_list = []
|
||||||
|
for item in item_query:
|
||||||
|
item_list.append(item)
|
||||||
|
|
||||||
|
shop["items"] = item_list
|
||||||
|
items.append(shop)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,9 @@ class Player(models.Model):
|
||||||
def json(self):
|
def json(self):
|
||||||
return {"Name": self.name, "MC UUID": self.mc_uuid, "Discord UUID": self.discord_uuid}
|
return {"Name": self.name, "MC UUID": self.mc_uuid, "Discord UUID": self.discord_uuid}
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class Location(models.Model):
|
class Location(models.Model):
|
||||||
DIMENSIONS = (
|
DIMENSIONS = (
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
.sidebar-nav {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
{% block title %}<title>GeoffreyApp</title>{% endblock %}
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
||||||
|
<!-- Add additional CSS in static file -->
|
||||||
|
{% load static %}
|
||||||
|
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<body>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2">
|
||||||
|
{% block sidebar %}
|
||||||
|
<ul class="sidebar-nav">
|
||||||
|
<li><a href="{% url 'GeoffreyHome' %}">Home</a></li>
|
||||||
|
<li><a href="{% url 'GeoffreyPlayers' %}">Players</a></li>
|
||||||
|
<li><a href="{% url 'GeoffreyBases' %}">Bases</a></li>
|
||||||
|
<li><a href="{% url 'GeoffreyShops' %}">Shops</a></li>
|
||||||
|
<li><a href="{% url 'GeoffreyItems' %}">Items</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-10 ">{% block content %}{% endblock %}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "GeoffreyApp/base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Bases</h1>
|
||||||
|
{% if base_list %}
|
||||||
|
<ul>
|
||||||
|
{% for base in base_list %}
|
||||||
|
<li>
|
||||||
|
{{ base.name }} {{ base.owner }} {{ base.x_coord }} {{ base.z_coord }}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>There are no bases in the database :pepethonk:</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,13 @@
|
||||||
|
{% extends "GeoffreyApp/base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Geoffrey Minecraft Database Home</h1>
|
||||||
|
<p>Geoffrey is a database for storing information on Players, Bases, Shops, Towns, and more! </p>
|
||||||
|
<p>Current Database Count:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Players:</strong> {{ num_players }}</li>
|
||||||
|
<li><strong>Shops:</strong> {{ num_shops }}</li>
|
||||||
|
<li><strong>Items for Sale:</strong> {{ num_items }}</li>
|
||||||
|
<li><strong>Bases:</strong> {{ num_bases }}</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "GeoffreyApp/base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Items</h1>
|
||||||
|
{% if itemlisting_list %}
|
||||||
|
<ul>
|
||||||
|
{% for item in itemlisting_list %}
|
||||||
|
<li>
|
||||||
|
{{ item.item_name}} {{ item.amount }} for {{ item.price }}D
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>There are no items for sale in the database :pepethonk:</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "GeoffreyApp/base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Players</h1>
|
||||||
|
{% if player_list %}
|
||||||
|
<ul>
|
||||||
|
{% for player in player_list %}
|
||||||
|
<li>
|
||||||
|
{{ player.name }}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>There are no players in the database :pepethonk:</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "GeoffreyApp/base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Shops</h1>
|
||||||
|
{% if shop_list %}
|
||||||
|
<ul>
|
||||||
|
{% for shop in shop_list %}
|
||||||
|
<li>
|
||||||
|
{{ shop.name }} {{ shop.owner }} {{ shop.x_coord }} {{ shop.z_coord }}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>There are no shops in the database :pepethonk:</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
8
urls.py
8
urls.py
|
@ -1,7 +1,11 @@
|
||||||
from django.urls import path
|
from django.conf.urls import url
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.index, name='index'),
|
url(r'^home$', views.Home.as_view(), name='GeoffreyHome'),
|
||||||
|
url(r'^player$', views.PlayerList.as_view(), name='GeoffreyPlayers'),
|
||||||
|
url(r'^shops$', views.ShopList.as_view(), name='GeoffreyShops'),
|
||||||
|
url(r'^bases$', views.BaseList.as_view(), name='GeoffreyBases'),
|
||||||
|
url(r'^items$', views.ItemListingList.as_view(), name='GeoffreyItems'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
40
views.py
40
views.py
|
@ -1,9 +1,39 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.http import HttpResponse
|
from django.views.generic import View
|
||||||
import subprocess, os
|
from GeoffreyApp.models import *
|
||||||
|
from django.views import generic
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
class Home(View):
|
||||||
return HttpResponse("Geoffrey is here!")
|
|
||||||
|
def get(self, request):
|
||||||
|
|
||||||
|
base_num = Base.objects.count()
|
||||||
|
shop_num = Shop.objects.count()
|
||||||
|
player_num = Player.objects.count()
|
||||||
|
item_num = ItemListing.objects.count()
|
||||||
|
|
||||||
|
context = {
|
||||||
|
"num_players": player_num,
|
||||||
|
"num_bases": base_num,
|
||||||
|
"num_shops": shop_num,
|
||||||
|
"num_items": item_num,
|
||||||
|
}
|
||||||
|
|
||||||
|
return render(request, 'GeoffreyApp/home.html', context=context)
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerList(generic.ListView):
|
||||||
|
model = Player
|
||||||
|
|
||||||
|
|
||||||
|
class ShopList(generic.ListView):
|
||||||
|
model = Shop
|
||||||
|
|
||||||
|
class BaseList(generic.ListView):
|
||||||
|
model = Base
|
||||||
|
|
||||||
|
class ItemListingList(generic.ListView):
|
||||||
|
model = ItemListing
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue