embeded pandora mobile view
This commit is contained in:
commit
b420bf43b7
45 changed files with 3437 additions and 0 deletions
104
app/item/models.py
Normal file
104
app/item/models.py
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
from django.utils.timezone import datetime, timedelta
|
||||
from django.utils import timezone
|
||||
import json
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import models
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class Settings(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
key = models.CharField(max_length=1024, unique=True)
|
||||
value = models.JSONField(default=dict, editable=False)
|
||||
|
||||
|
||||
class Item(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
|
||||
user = models.ForeignKey(User, null=True, related_name='items', on_delete=models.CASCADE)
|
||||
|
||||
url = models.CharField(max_length=1024, unique=True)
|
||||
title = models.CharField(max_length=1024)
|
||||
description = models.TextField(default="", blank=True)
|
||||
published = models.DateTimeField(default=timezone.now, null=True, blank=True)
|
||||
announced = models.DateTimeField(null=True, default=None, blank=True)
|
||||
data = models.JSONField(default=dict, editable=False)
|
||||
|
||||
def __str__(self):
|
||||
return '%s (%s)' % (self.title, self.url)
|
||||
|
||||
def public_comments(self):
|
||||
return self.comments.exclude(published=None)
|
||||
|
||||
def public_comments_json(self):
|
||||
comments = []
|
||||
for comment in self.public_comments():
|
||||
comments.append({
|
||||
"name": comment.name,
|
||||
"date": comment.date,
|
||||
"text": comment.text,
|
||||
})
|
||||
return json.dumps(comments)
|
||||
|
||||
@classmethod
|
||||
def public(cls):
|
||||
now = timezone.now()
|
||||
qs = cls.objects.exclude(published=None).filter(published__lte=now).order_by('-published')
|
||||
cal = now.date().isocalendar()
|
||||
monday = now.date() - timedelta(days=now.date().isocalendar().weekday - 1)
|
||||
monday = timezone.datetime(monday.year, monday.month, monday.day, tzinfo=now.tzinfo)
|
||||
print(now.tzinfo)
|
||||
first_post = qs.filter(published__gt=monday).first()
|
||||
print('!!', first_post.published, now, first_post.published > now)
|
||||
if first_post.published < now:
|
||||
print('only this week')
|
||||
week = qs.filter(published__gt=monday)
|
||||
else:
|
||||
print('only last week')
|
||||
last_monday = monday - timedelta(days=7)
|
||||
week = qs.filter(published__gt=last_monday)
|
||||
archive = qs.exclude(id__in=week)
|
||||
return week, archive
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('item', kwargs={'id': self.id})
|
||||
|
||||
class Comment(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
|
||||
item = models.ForeignKey(Item, related_name='comments', on_delete=models.CASCADE)
|
||||
user = models.ForeignKey(User, null=True, related_name='comments', on_delete=models.CASCADE, blank=True)
|
||||
|
||||
name = models.CharField(max_length=1024)
|
||||
email = models.CharField(max_length=1024)
|
||||
text = models.TextField(default="", blank=True)
|
||||
data = models.JSONField(default=dict, editable=False)
|
||||
published = models.DateTimeField(null=True, default=None)
|
||||
|
||||
def __str__(self):
|
||||
return '%s: %s' % (self.item, self.user)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.user:
|
||||
self.name = self.user.username
|
||||
self.email = self.user.email
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def date(self):
|
||||
return self.created.strftime('%Y-%m-%d %H:%M')
|
||||
|
||||
def json(self):
|
||||
data = {}
|
||||
data['name'] = self.name
|
||||
data['date'] = self.date
|
||||
data['text'] = self.text
|
||||
return data
|
||||
Loading…
Add table
Add a link
Reference in a new issue