1
0
mirror of https://github.com/creyD/asiimov.git synced 2026-06-12 09:02:23 +02:00

Added first model draft

This commit is contained in:
2020-01-08 11:40:58 +01:00
parent df9a3bcf43
commit a6c1076434

View File

@@ -5,9 +5,80 @@ from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# CHOICE HELPERS
BADGE_RARITIES = [
(1, 'Normal'),
(2, 'Rare'),
(3, 'Super Rare')
]
# MODELS
# Storing the classes of items for quick selection in some menues
class ItemType(models.model):
paint_index = models.IntegerField(primary_key=True, unique=True) # Skin
classid = models.IntegerField() # Weapon Class
appid = models.IntegerField() # The appid which items of this type belong to
market_tradable_restriction = models.IntegerField() # How long the item will be trade locked
icon_url = models.URLField(max_length=512, null=True)
name = models.CharField(max_length=1000) # i.e. ★ Butterfly Knife
name_color = models.CharField(max_length=7) # Hexadecimal color of the name
type = models.CharField(max_length=1000) # i.e. ★ Covert Knife
rarity = models.CharField(max_length=1000) # tags > category = rarity > localized_tag_name
min_float = models.FloatField()
max_float = models.FloatField()
# Class for storing stickers applied to weapons
class Stickers(models.model):
stickerid = models.IntegerField(primary_key=True, unique=True)
name = models.CharField()
# Storing the single instances of items
class ItemInstance(models.model):
item_class = models.ForeignKey(ItemType, on_delete=models.PROTECT)
instanceid = models.IntegerField(primary_key=True, unique=True) # 0 for something like cases, which will be excluded here
tradable = models.BooleanField(default=False)
inspect_link = models.URLField(max_length=512, null=True)
wear = models.CharField(max_length=100) # tags > category = exterior > localized_tag_name
float = models.FloatField() # Float of the object
paintseed = models.IntegerField() # Pattern ID
killeatervalue = models.IntegerField(null=True) # StatTrack
customname = models.CharField(max_length=128, null=True) # Nametag
stickers = models.ManyToManyField()
# Badges that can be eared on the site
class Badge(models.model):
name = models.CharField(max_length=256, unique=True)
desc = models.CharField(max_length=1000)
icon = models.FileField(upload_to='badge_icons/')
rarity = models.CharField(choices=BADGE_RARITIES, default=1)
# For storing user info like steamID (...)
class Gamer(models.model):
steamid = models.IntegerField(primary_key=True, unique=True) # This is a maximum of 32 chars long
# https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0002.29
communityvisibilitystate = models.BooleanField() # 1 -> False, 3 -> True | Determines wether the profile is private or not
profilestate = models.BooleanField() # 1 -> True, 0 -> False | Determines wether the profile was configured or not
personaname = models.CharField(max_length=32) # Display name on the steam profile
profileurl = models.URLField(max_length=256)
avatar = models.URLField(max_length=256)
commentpermission = models.BooleanField() # If set, profile allows public comments
# Optional Fields (only available if public profile)
timecreated = models.IntegerField(null=True) # Only visible if user has profile visibility
loccountrycode = models.CharField(max_length=2, null=True) # 2 char ISO country code
# Asiimov specific information
inventory = models.ManyToManyField(ItemInstance) # Temporary storage of items for improving site performance
API_KEY = models.CharField(max_length=32, null=True) # Optionally use the API KEY of the user
badges = models.ManyToManyField(Badge)
system_user = models.OneToOneField(User, on_delete=models.CASCADE)