Files
dss.api/spa/models/basemodel.py
2016-09-23 00:21:02 +01:00

65 lines
1.9 KiB
Python

import logging
import os
from datetime import datetime
import json
from django.db import models
from core.utils import url
from dss import localsettings, settings
class BaseModel(models.Model):
logger = logging.getLogger('dss')
object_created = models.DateTimeField(auto_now_add=True)
object_updated = models.DateTimeField(auto_now=True, db_index=True)
class Meta:
abstract = True
app_label = 'spa'
def tosimplejson(self):
return json.dumps(self)
@classmethod
def get_lookup(cls, filter_field, transform=None, filter=None):
if filter is not None:
filter_dict = {'%s__startswith' % filter_field: filter}
return cls.objects.all().filter(filter_dict).extra(select=transform)
else:
return cls.objects.all()
def get_image_url(self, image, default):
try:
if os.path.isfile(image.path):
ret = "{0}/{1}".format(settings.MEDIA_URL, image)
return url.urlclean(ret)
except Exception as ex:
pass
return default
@classmethod
def get_lookup_filter_field(cls):
field_list = cls._meta.get_all_field_names()
for field in field_list:
if field.endswith("title") or field.endswith("name") or field.endswith("description"):
return field
return "description"
def base_pre_save(self, sender, instance, created, **kwargs):
pass
def clean_image(self, image_field, sender):
# TODO(fergal.moran@gmail.com): stop tastypie nulling image field if not sent
if self.__dict__[image_field] == "DONOTSEND":
try:
old_instance = sender.objects.get(pk=self.pk)
if old_instance is not None:
self.__dict__[image_field] = old_instance.__dict__[image_field]
except Exception as ex:
pass