gulasch-r0mstore/roms/models.py

42 lines
1.1 KiB
Python

import os
import uuid
from django.db import models
from django.core.exceptions import ValidationError
from taggit.managers import TaggableManager
def upload_cover_to(instance, filename):
_, ext = os.path.splitext(filename)
return "covers/%s.%s" % (uuid.uuid4(), ext)
def upload_binary_to(instance, filename):
return "roms/%s.bin" % uuid.uuid4()
class Rom(models.Model):
name = models.CharField("name", max_length = 128)
description = models.TextField("description")
cover = models.ImageField("cover image", upload_to=upload_cover_to)
binary = models.FileField("binary", upload_to=upload_binary_to)
approved = models.BooleanField("approved")
tags = TaggableManager()
def tag_list(self):
return [t.name for t in self.tags.all()]
def to_json(self):
json = {
'id' : self.pk,
'name' : self.name,
'description' : self.description,
'tags' : self.tag_list(),
'cover' : self.cover,
'binary' : self.binary
}
return json
def __str__(self):
return "Rom %s" % self.name