Add in the ability to add links to stores/chains.

This commit is contained in:
2013-04-03 23:14:14 +01:00
parent 850027f50d
commit f30f53204a
10 changed files with 401 additions and 7 deletions

View File

@@ -0,0 +1,55 @@
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.template.loader import render_to_string
class LinkType(models.Model):
"""
Define types of links that can be used on objects
"""
name = models.CharField('Name', max_length=200)
icon = models.CharField('Icon', max_length=100, default="icon-globe")
url_format = models.CharField('URL Format', max_length=255)
is_active = models.BooleanField('Active?', default=False)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
app_label = 'stores'
class Link(models.Model):
"""
Represents a link that can be bound to a object
"""
object_id = models.PositiveIntegerField()
object_type = models.ForeignKey(ContentType)
generic_obj = generic.GenericForeignKey('object_type', 'object_id')
account_type = models.ForeignKey('stores.LinkType', related_name='+')
account_name = models.CharField('Account Name', max_length=200)
@property
def url(self):
if self.account_type.url_format == '':
return None
return self.account_type.url_format % {'account': self.account_name}
@property
def to_html(self):
dt = {
'url': self.url,
'name': self.account_name,
'type_name': self.account_type,
'type_icon': self.account_type.icon,
}
return render_to_string('stores/link_snippet.html', dt)
def __unicode__(self):
return u'%s - %s' % (self.account_type, self.account_name)
class Meta:
app_label = 'stores'