base site for phantas.ma
This commit is contained in:
parent
1e082c6786
commit
d27f4ac0c0
32 changed files with 50 additions and 710 deletions
|
|
@ -41,7 +41,7 @@ class Text(models.Model):
|
|||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
language = models.CharField(choices=LANGUAGE_CHOICES, max_length=8, default='en')
|
||||
slug = models.SlugField()
|
||||
slug = models.CharField(max_length=1024)
|
||||
public = models.BooleanField(default=False)
|
||||
listed = models.BooleanField("List this item on overview page", default=True)
|
||||
position = models.IntegerField(default=0)
|
||||
|
|
@ -50,14 +50,14 @@ class Text(models.Model):
|
|||
byline = models.TextField(default="", blank=True)
|
||||
body = models.TextField(default="", blank=True)
|
||||
|
||||
data = models.JSONField(default=dict)
|
||||
data = models.JSONField(default=dict, blank=True)
|
||||
annotations = models.JSONField(default=dict, blank=True, editable=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
def get_absolute_url(self):
|
||||
return '/' + settings.URL_PREFIX + 'cuts/' + self.slug
|
||||
return '/' + self.slug
|
||||
|
||||
def get_annotations(self):
|
||||
api = ox.api.signin(settings.DEFAULT_PANDORA_API)
|
||||
|
|
@ -165,21 +165,11 @@ class Text(models.Model):
|
|||
super().save(*args, **kwargs)
|
||||
|
||||
def json(self):
|
||||
from ..video.models import Film
|
||||
data = {}
|
||||
data['title'] = self.title
|
||||
data['byline'] = self.byline
|
||||
data['body'] = self.body
|
||||
data['language'] = self.language
|
||||
item_id = self.data.get('related')
|
||||
if not item_id:
|
||||
item_id = self.data.get('item')
|
||||
if item_id:
|
||||
item = Film.objects.filter(pandora_url=item_id).first()
|
||||
if item:
|
||||
for key in ('title', 'title_zh', 'director'):
|
||||
data['item_' + key] = item.data[key]
|
||||
data['item_url'] = item.get_absolute_url()
|
||||
if isinstance(self.annotations, list) and len(self.annotations) > 0:
|
||||
data['annotations'] = self.annotations
|
||||
data.update(self.data)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ from django.shortcuts import render, redirect, get_object_or_404
|
|||
from django.conf import settings
|
||||
|
||||
from . import models
|
||||
from ..video.views import get_stream_prefix
|
||||
|
||||
def fallback(request, slug=''):
|
||||
if not slug:
|
||||
|
|
@ -13,26 +12,17 @@ def fallback(request, slug=''):
|
|||
return render(request, 'fallback.html', context)
|
||||
|
||||
def index(request):
|
||||
from ..video.models import Film
|
||||
from ..text.models import Text
|
||||
context = {}
|
||||
context['films'] = Film.objects.filter(public=True).count()
|
||||
context['texts'] = Text.objects.filter(public=True, listed=True).count()
|
||||
context['stream_prefix'] = get_stream_prefix(request)
|
||||
featured = Film.objects.filter(featured=True)
|
||||
featured_count = featured.count()
|
||||
if featured_count:
|
||||
featured = featured[random.randint(0, featured_count - 1)]
|
||||
try:
|
||||
featured = featured.data['items'][0]['id']
|
||||
except:
|
||||
featured = None
|
||||
context['featured'] = featured
|
||||
context['texts'] = Text.objects.filter(public=True, listed=True).order_by('title')
|
||||
return render(request, 'index.html', context)
|
||||
|
||||
def page(request, slug=''):
|
||||
print('page!!', slug)
|
||||
context = {}
|
||||
if request.user.is_staff:
|
||||
if slug == "":
|
||||
return index(request)
|
||||
elif request.user.is_staff:
|
||||
page = models.Page.objects.filter(slug=slug).first()
|
||||
else:
|
||||
page = models.Page.objects.filter(slug=slug, public=True).first()
|
||||
|
|
@ -40,7 +30,7 @@ def page(request, slug=''):
|
|||
context['page'] = page
|
||||
return render(request, 'page.html', context)
|
||||
else:
|
||||
return render(request, 'fallback.html', context)
|
||||
return text(request, slug)
|
||||
|
||||
def about(request):
|
||||
context = {}
|
||||
|
|
@ -54,11 +44,11 @@ def texts(request):
|
|||
return render(request, 'texts.html', context)
|
||||
|
||||
def text(request, slug):
|
||||
print('find text', slug)
|
||||
context = {}
|
||||
if request.user.is_staff:
|
||||
context['text'] = get_object_or_404(models.Text, slug=slug)
|
||||
else:
|
||||
context['text'] = get_object_or_404(models.Text, slug=slug, public=True)
|
||||
context['stream_prefix'] = get_stream_prefix(request)
|
||||
context['pandora_url'] = settings.DEFAULT_PANDORA_API.replace('/api/', '')
|
||||
return render(request, 'text.html', context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue