2017-05-20 12:45:26 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
2017-12-18 12:54:04 +00:00
|
|
|
|
|
|
|
from django.conf import settings
|
|
|
|
from django.core.validators import MaxLengthValidator
|
2017-05-20 12:45:26 +00:00
|
|
|
from django.db import models
|
2017-12-18 12:54:04 +00:00
|
|
|
from django.utils.html import mark_safe
|
|
|
|
|
2017-12-19 10:54:06 +00:00
|
|
|
from photologue.models import Photo, Gallery
|
2017-12-18 12:54:04 +00:00
|
|
|
from markdownx.models import MarkdownxField
|
2017-07-03 08:14:07 +00:00
|
|
|
from markdownx.utils import markdownify
|
2017-12-18 12:54:04 +00:00
|
|
|
import ox
|
2017-05-20 12:45:26 +00:00
|
|
|
|
|
|
|
# Create your models here.
|
|
|
|
|
|
|
|
class Acrolike(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'acrolike'
|
|
|
|
|
|
|
|
|
|
|
|
class Acronym(models.Model):
|
|
|
|
name = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
c = models.CharField(max_length=50, blank=True, null=True)
|
|
|
|
a = models.CharField(max_length=50, blank=True, null=True)
|
|
|
|
m = models.CharField(max_length=50, blank=True, null=True)
|
|
|
|
p = models.CharField(max_length=50, blank=True, null=True)
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'acronym'
|
|
|
|
|
|
|
|
|
|
|
|
class Audios(models.Model):
|
|
|
|
filename = models.CharField(max_length=255)
|
|
|
|
title = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'audios'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Comments(models.Model): #not used
|
|
|
|
comment = models.TextField()
|
|
|
|
name = models.CharField(max_length=150, blank=True, null=True)
|
|
|
|
email = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
personid = models.IntegerField(db_column='personID', blank=True, null=True) # Field name made lowercase.
|
|
|
|
dateadded = models.DateTimeField(db_column='dateAdded') # Field name made lowercase.
|
|
|
|
datemodified = models.DateTimeField(db_column='dateModified', blank=True, null=True) # Field name made lowercase.
|
|
|
|
parentid = models.IntegerField(db_column='parentID', blank=True, null=True) # Field name made lowercase.
|
|
|
|
contentid = models.IntegerField(db_column='contentID') # Field name made lowercase.
|
|
|
|
ip = models.CharField(db_column='IP', max_length=50, blank=True, null=True) # Field name made lowercase.
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'comments'
|
|
|
|
|
|
|
|
|
|
|
|
class Content(models.Model):
|
2017-05-24 11:44:04 +00:00
|
|
|
type = models.ForeignKey("ContentTypes", db_column="type")
|
2017-12-18 12:54:04 +00:00
|
|
|
shortname = models.CharField(db_column='shortName', max_length=255) # Field name made lowercase.
|
2017-05-20 12:45:26 +00:00
|
|
|
title = models.CharField(max_length=255)
|
2017-12-18 12:54:04 +00:00
|
|
|
header = MarkdownxField(blank=True, null=True, default='')
|
|
|
|
body = MarkdownxField(blank=True, null=True, default='')
|
|
|
|
teaser = models.TextField(blank=True, null=True, validators=[MaxLengthValidator(200)])
|
2017-05-24 11:44:04 +00:00
|
|
|
schedule = models.TextField(blank=True, null=True)
|
2017-05-20 12:45:26 +00:00
|
|
|
schedulebutton = models.CharField(db_column='scheduleButton', max_length=255, blank=True, null=True) # Field name made lowercase.
|
|
|
|
optbtn2 = models.CharField(db_column='optBtn2', max_length=127, blank=True, null=True) # Field name made lowercase.
|
|
|
|
opttext2 = models.TextField(db_column='optText2', blank=True, null=True) # Field name made lowercase.
|
|
|
|
optbtn3 = models.CharField(db_column='optBtn3', max_length=127, blank=True, null=True) # Field name made lowercase.
|
|
|
|
opttext3 = models.TextField(db_column='optText3', blank=True, null=True) # Field name made lowercase.
|
2017-06-10 09:59:00 +00:00
|
|
|
technotes = models.TextField(db_column='technotes', blank=True, null=True)
|
2017-05-20 12:45:26 +00:00
|
|
|
image = models.CharField(max_length=150, blank=True, null=True)
|
|
|
|
postedby = models.CharField(db_column='postedBy', max_length=50, blank=True, null=True) # Field name made lowercase.
|
|
|
|
datestart = models.DateField(db_column='dateStart', blank=True, null=True) # Field name made lowercase.
|
|
|
|
dateend = models.DateField(db_column='dateEnd', blank=True, null=True) # Field name made lowercase.
|
2017-12-18 12:54:04 +00:00
|
|
|
dateadded = models.DateTimeField(db_column='dateAdded', auto_now_add=True, editable=True) # Field name made lowercase.
|
|
|
|
datemodified = models.DateTimeField(db_column='dateModified', blank=True, null=True, auto_now=True) # Field name made lowercase.
|
|
|
|
published = models.BooleanField(default=False)
|
|
|
|
featured = models.BooleanField(default=False)
|
|
|
|
view = models.ForeignKey("Views", null=True, blank=True, db_column="view", editable=False)
|
2017-06-10 09:59:00 +00:00
|
|
|
place = models.CharField(max_length=255, null=True, blank=True)
|
2017-12-19 10:40:02 +00:00
|
|
|
parents = models.ManyToManyField('Content', through='ContentContent', related_name="children")
|
|
|
|
|
|
|
|
resources = models.ManyToManyField('Resources', through='ContentResource', related_name="content")
|
|
|
|
|
|
|
|
# delete after migration
|
|
|
|
parentid = models.IntegerField(null=True, db_column='parentID', blank=True, editable=False)
|
|
|
|
|
|
|
|
# end of delte
|
2017-05-20 12:45:26 +00:00
|
|
|
|
2017-05-20 12:41:15 +00:00
|
|
|
def __unicode__(self):
|
|
|
|
return self.title
|
|
|
|
|
2017-07-03 08:14:07 +00:00
|
|
|
@property
|
|
|
|
def formatted_header(self):
|
2017-12-18 12:54:04 +00:00
|
|
|
return mark_safe(markdownify(self.header))
|
2017-07-03 08:14:07 +00:00
|
|
|
|
|
|
|
@property
|
|
|
|
def formatted_body(self):
|
2017-12-18 12:54:04 +00:00
|
|
|
return mark_safe(markdownify(self.body))
|
|
|
|
|
|
|
|
@property
|
|
|
|
def formatted_teaser(self):
|
|
|
|
if self.teaser:
|
|
|
|
value = self.teaser
|
|
|
|
elif self.header:
|
2017-12-18 14:29:17 +00:00
|
|
|
value = ox.strip_tags(ox.decode_html(markdownify(self.header)))[:100]
|
2017-12-18 12:54:04 +00:00
|
|
|
else:
|
|
|
|
value = ''
|
|
|
|
return mark_safe(value)
|
2017-07-03 08:14:07 +00:00
|
|
|
|
|
|
|
@property
|
|
|
|
def typefilter(self):
|
|
|
|
return self.type
|
2017-12-18 12:54:04 +00:00
|
|
|
|
|
|
|
@property
|
|
|
|
def image_url(self):
|
|
|
|
if self.image:
|
|
|
|
return settings.IMAGE_PREFIX + self.image
|
|
|
|
|
2017-12-19 10:40:02 +00:00
|
|
|
def links(self):
|
|
|
|
return self.resources.filter(type=3).order_by('orderno')
|
|
|
|
|
|
|
|
def images(self):
|
|
|
|
return self.resources.filter(type=2).exclude(href=self.image).order_by('orderno')
|
|
|
|
|
2017-12-18 12:54:04 +00:00
|
|
|
def get_absolute_url(self):
|
|
|
|
if self.shortname:
|
2017-12-18 14:17:06 +00:00
|
|
|
parts = []
|
2017-12-18 12:54:04 +00:00
|
|
|
section = self.type.name
|
|
|
|
if section == 'news':
|
|
|
|
section = 'events'
|
|
|
|
if section == 'page':
|
2017-12-18 14:17:06 +00:00
|
|
|
parts = [self.shortname]
|
|
|
|
else:
|
|
|
|
parts = [section, self.shortname]
|
|
|
|
return '/' + '/'.join(parts)
|
2017-07-03 08:14:07 +00:00
|
|
|
|
2017-12-19 10:54:06 +00:00
|
|
|
def get_gallery(self):
|
|
|
|
gallery, created = Gallery.objects.get_or_create(slug=self.shortname)
|
2017-12-19 11:41:34 +00:00
|
|
|
if created:
|
|
|
|
title = self.title
|
|
|
|
n = 1
|
|
|
|
while Gallery.objects.filter(title=title).exclude(pk=gallery.pk).exists():
|
|
|
|
n += 1
|
|
|
|
title = '%s [%s]' % (self.title, n)
|
|
|
|
gallery.title = title
|
|
|
|
gallery.save()
|
2017-12-19 10:54:06 +00:00
|
|
|
return gallery
|
|
|
|
|
2017-05-20 12:45:26 +00:00
|
|
|
class Meta:
|
2017-05-24 11:44:04 +00:00
|
|
|
managed = True
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'content'
|
|
|
|
|
|
|
|
|
|
|
|
class ContentContent(models.Model):
|
2017-06-10 11:07:32 +00:00
|
|
|
contentid1 = models.ForeignKey("content", db_column='contentID1', related_name="child") # Field name made lowercase.
|
|
|
|
contentid2 = models.ForeignKey("content", db_column='contentID2', related_name="parent") # Field name made lowercase.
|
|
|
|
|
|
|
|
def __unicode__(self):
|
2017-07-03 08:14:07 +00:00
|
|
|
return self.contentid1.title
|
2017-05-20 12:45:26 +00:00
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'content_content'
|
|
|
|
|
2017-12-18 13:44:11 +00:00
|
|
|
def reverse(self):
|
|
|
|
r, created = ContentContent.objects.get_or_create(contentid1=self.contentid2, contentid2=self.contentid1)
|
|
|
|
return r
|
|
|
|
|
|
|
|
def save(self, *args, **kwargs):
|
|
|
|
super(ContentContent, self).save(*args, **kwargs)
|
|
|
|
self.reverse()
|
2017-05-20 12:45:26 +00:00
|
|
|
|
|
|
|
class ContentKeyword(models.Model):
|
|
|
|
contentid = models.IntegerField(db_column='contentID') # Field name made lowercase.
|
|
|
|
keywordid = models.IntegerField(db_column='keywordID') # Field name made lowercase.
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'content_keyword'
|
|
|
|
|
|
|
|
|
|
|
|
class ContentResource(models.Model):
|
2017-12-19 10:40:02 +00:00
|
|
|
contentid = models.ForeignKey('Content', db_column='contentID')
|
|
|
|
resourceid = models.ForeignKey('Resources', db_column='resourceID')
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return self.resource.href
|
2017-05-20 12:45:26 +00:00
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'content_resource'
|
|
|
|
|
|
|
|
|
|
|
|
class ContentTypes(models.Model):
|
|
|
|
id = models.IntegerField(primary_key=True)
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
|
2017-05-24 11:44:04 +00:00
|
|
|
def __unicode__(self):
|
2017-12-19 10:40:02 +00:00
|
|
|
return self.name
|
2017-05-24 11:44:04 +00:00
|
|
|
|
2017-05-20 12:45:26 +00:00
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'content_types'
|
|
|
|
|
|
|
|
|
|
|
|
class Keywords(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'keywords'
|
|
|
|
|
|
|
|
|
|
|
|
class People(models.Model): #not used
|
|
|
|
name = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
email = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
location = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
login = models.CharField(max_length=100, blank=True, null=True)
|
|
|
|
password = models.CharField(max_length=16, blank=True, null=True)
|
|
|
|
href = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
bio = models.TextField(blank=True, null=True)
|
|
|
|
type = models.IntegerField()
|
|
|
|
|
2017-12-19 10:40:02 +00:00
|
|
|
resources = models.ManyToManyField('Resources', through='PersonResource', related_name='people')
|
|
|
|
content = models.ManyToManyField('Content', through='PersonContent', related_name='people')
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return self.name
|
|
|
|
|
2017-05-20 12:45:26 +00:00
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'people'
|
|
|
|
|
|
|
|
|
|
|
|
class PersonContent(models.Model):
|
2017-12-19 10:40:02 +00:00
|
|
|
personid = models.ForeignKey("people", db_column="personID")
|
|
|
|
contentid = models.ForeignKey("content", db_column="contentID")
|
2017-05-20 12:45:26 +00:00
|
|
|
level = models.IntegerField()
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'person_content'
|
|
|
|
|
|
|
|
|
|
|
|
class PersonResource(models.Model):
|
2017-12-19 10:40:02 +00:00
|
|
|
personid = models.ForeignKey("people", db_column="personID")
|
|
|
|
resourceid = models.ForeignKey("resources", db_column="resourceID")
|
2017-05-20 12:45:26 +00:00
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'person_resource'
|
|
|
|
|
|
|
|
|
|
|
|
class Resources(models.Model):
|
2017-12-18 15:46:14 +00:00
|
|
|
|
|
|
|
TYPE_CHOICES = (
|
|
|
|
(1, "Resources"),
|
|
|
|
(2, "Images"),
|
|
|
|
(3, "Links"),
|
|
|
|
)
|
|
|
|
|
|
|
|
type = models.IntegerField(choices=TYPE_CHOICES)
|
2017-05-20 12:45:26 +00:00
|
|
|
href = models.CharField(max_length=255)
|
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
mime = models.CharField(max_length=10, blank=True, null=True)
|
|
|
|
width = models.IntegerField(blank=True, null=True)
|
|
|
|
height = models.IntegerField(blank=True, null=True)
|
|
|
|
istech = models.IntegerField(db_column='isTech') # Field name made lowercase.
|
2017-06-10 12:05:37 +00:00
|
|
|
dateadded = models.DateTimeField(db_column='dateAdded', null=True, blank=True) # Field name made lowercase.
|
2017-05-20 12:45:26 +00:00
|
|
|
orderno = models.IntegerField(db_column='orderNo', blank=True, null=True) # Field name made lowercase.
|
|
|
|
|
2017-12-19 10:40:02 +00:00
|
|
|
def get_absolute_url(self):
|
|
|
|
href = self.href
|
|
|
|
if not href.startswith('http') and not href.startswith('/'):
|
|
|
|
href = '/' + href
|
|
|
|
if href.startswith('/'):
|
|
|
|
href = 'https://studio.camp' + href
|
|
|
|
return href
|
|
|
|
|
|
|
|
@property
|
|
|
|
def is_image(self):
|
|
|
|
if self.mime:
|
|
|
|
return self.mime.lower() in ('gif', 'jpeg', 'jpg', 'png')
|
|
|
|
|
|
|
|
@property
|
|
|
|
def is_audio(self):
|
|
|
|
if self.mime:
|
|
|
|
return self.mime.lower() in ('mp3', 'ogg')
|
|
|
|
|
|
|
|
@property
|
|
|
|
def is_video(self):
|
|
|
|
if self.mime:
|
|
|
|
return self.mime.lower() in ('ogv', 'mp4')
|
|
|
|
|
2017-05-20 12:45:26 +00:00
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'resources'
|
|
|
|
|
2017-06-10 12:05:37 +00:00
|
|
|
class File(models.Model):
|
|
|
|
content = models.ForeignKey('Content')
|
|
|
|
fil = models.FileField(upload_to='files')
|
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
date = models.DateTimeField(auto_now_add=True)
|
|
|
|
order = models.IntegerField(blank=True, null=True)
|
|
|
|
|
|
|
|
class Image(models.Model):
|
|
|
|
content = models.ForeignKey('Content', related_name='images')
|
2017-07-03 08:14:07 +00:00
|
|
|
image = models.ImageField(upload_to='camp/static/images')
|
2017-06-10 12:05:37 +00:00
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
date = models.DateTimeField(auto_now_add=True)
|
|
|
|
order = models.IntegerField(blank=True, null=True)
|
|
|
|
|
|
|
|
class Link(models.Model):
|
|
|
|
content = models.ForeignKey('Content')
|
2017-12-19 12:44:32 +00:00
|
|
|
url = models.URLField(max_length=4096)
|
2017-06-10 12:05:37 +00:00
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
date = models.DateTimeField(auto_now_add=True)
|
|
|
|
order = models.IntegerField(blank=True, null=True)
|
2017-05-20 12:45:26 +00:00
|
|
|
|
2017-12-19 12:44:32 +00:00
|
|
|
def __unicode__(self):
|
|
|
|
return self.url
|
|
|
|
|
2017-05-20 12:45:26 +00:00
|
|
|
class Videos(models.Model): # not used
|
|
|
|
sha1 = models.CharField(max_length=50)
|
|
|
|
href = models.CharField(max_length=255)
|
|
|
|
title = models.TextField(blank=True, null=True)
|
|
|
|
description = models.TextField(blank=True, null=True)
|
|
|
|
width = models.IntegerField(blank=True, null=True)
|
|
|
|
height = models.IntegerField(blank=True, null=True)
|
|
|
|
duration = models.IntegerField(blank=True, null=True)
|
|
|
|
thumbno = models.IntegerField(db_column='thumbNo') # Field name made lowercase.
|
|
|
|
image = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
contentid = models.IntegerField(blank=True, null=True)
|
|
|
|
|
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'videos'
|
|
|
|
|
|
|
|
|
|
|
|
class Views(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
href = models.CharField(max_length=255, blank=True, null=True)
|
|
|
|
|
2017-05-24 11:44:04 +00:00
|
|
|
def __unicode__(self):
|
|
|
|
return self.name
|
|
|
|
|
2017-05-20 12:45:26 +00:00
|
|
|
class Meta:
|
2017-06-10 12:05:37 +00:00
|
|
|
# managed = False
|
2017-05-20 12:45:26 +00:00
|
|
|
db_table = 'views'
|
|
|
|
|
2017-07-03 08:14:07 +00:00
|
|
|
|
|
|
|
class MyModel(models.Model):
|
|
|
|
myfield = MarkdownxField()
|
|
|
|
|
|
|
|
|
|
|
|
|