This commit is contained in:
Gerard Gascón 2025-04-11 20:42:55 +02:00
commit 4fcbdaa4db
21 changed files with 589 additions and 0 deletions

0
server/__init__.py Normal file
View file

13
server/admin.py Normal file
View file

@ -0,0 +1,13 @@
from django.contrib import admin
from server.models import Dragon
@admin.register(Dragon)
class DragonAdmin(admin.ModelAdmin):
model = Dragon
list_display = ['name', 'origin', 'color', 'hat', 'shirt', 'decor']
fieldsets = [
(None, {'fields': ['name', 'origin', 'color', 'hat', 'shirt', 'decor']}),
]

6
server/apps.py Normal file
View file

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ServerConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'server'

View file

@ -0,0 +1,26 @@
# Generated by Django 5.1.3 on 2025-04-11 15:26
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Dragon',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=10)),
('origin', models.CharField(max_length=10)),
('color', models.IntegerField(default=-1)),
('hat', models.IntegerField(default=-1)),
('shirt', models.IntegerField(default=-1)),
('decor', models.IntegerField(default=-1)),
],
),
]

View file

@ -0,0 +1,17 @@
# Generated by Django 5.1.7 on 2025-04-11 16:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('server', '0001_initial'),
]
operations = [
migrations.AlterUniqueTogether(
name='dragon',
unique_together={('origin', 'name', 'color', 'shirt', 'hat', 'decor')},
),
]

View file

17
server/models.py Normal file
View file

@ -0,0 +1,17 @@
from django.db import models
class Dragon(models.Model):
class Meta:
unique_together = ('origin', 'name', 'color', 'shirt', 'hat', 'decor')
name = models.CharField(max_length=10)
origin = models.CharField(max_length=10)
color = models.IntegerField(default=-1)
hat = models.IntegerField(default=-1)
shirt = models.IntegerField(default=-1)
decor = models.IntegerField(default=-1)
def __str__(self):
return f'{self.name}: {self.origin}, {self.color}, {self.hat}, {self.shirt}, {self.decor}'

3
server/tests.py Normal file
View file

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

8
server/urls.py Normal file
View file

@ -0,0 +1,8 @@
from django.urls import path
from . import views
urlpatterns = [
path('add/<str:origin>/<str:name>/<str:color>/<str:shirt>/<str:hat>/<str:decor>/', views.add, name='add'),
path('get/<str:origin>/', views.get, name='get'),
]

36
server/views.py Normal file
View file

@ -0,0 +1,36 @@
import json
import random
from django.db import IntegrityError
from django.http import HttpResponse, Http404
from server.models import Dragon
def add(request, origin, name, color, shirt, hat, decor):
origin = origin.strip()
name = name.strip()
color = int(color.strip())
shirt = int(shirt.strip())
hat = int(hat.strip())
decor = int(decor.strip())
try:
dragon = Dragon.objects.create(origin=origin, name=name, color=color, shirt=shirt, hat=hat, decor=decor)
print(f'Received dragon ({dragon})')
except IntegrityError:
print('Dragon already exists')
return HttpResponse('')
def get(request, origin):
items = list(Dragon.objects.all().exclude(origin=origin))
if len(items) == 0:
print('hey')
raise Http404
random_item: Dragon = random.choice(items)
response_data = {'origin': random_item.origin, 'name': random_item.name, 'color': random_item.color,
'shirt': random_item.shirt, 'hat': random_item.hat, 'decor': random_item.decor}
return HttpResponse(json.dumps(response_data), content_type="application/json")