comments
This commit is contained in:
parent
100fe79b1d
commit
4b157ed1d1
15 changed files with 305 additions and 133 deletions
|
|
@ -1,6 +1,8 @@
|
|||
from django.utils.timezone import datetime, timedelta
|
||||
from django.utils import timezone
|
||||
import json
|
||||
import requests
|
||||
import lxml.html
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
|
|
@ -31,6 +33,10 @@ class Item(models.Model):
|
|||
announced = models.DateTimeField(null=True, default=None, blank=True)
|
||||
data = models.JSONField(default=dict, editable=False)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.url and not self.data:
|
||||
self.update_data()
|
||||
super().save(*args, **kwargs)
|
||||
def __str__(self):
|
||||
return '%s (%s)' % (self.title, self.url)
|
||||
|
||||
|
|
@ -70,6 +76,26 @@ class Item(models.Model):
|
|||
def get_absolute_url(self):
|
||||
return reverse('item', kwargs={'id': self.id})
|
||||
|
||||
def update_data(self):
|
||||
self.data.update(self.parse_url())
|
||||
|
||||
def parse_url(self):
|
||||
content = requests.get(self.url).text
|
||||
doc = lxml.html.fromstring(content)
|
||||
data = {}
|
||||
for meta in doc.cssselect('meta'):
|
||||
key = meta.attrib.get('name')
|
||||
if not key:
|
||||
key = meta.attrib.get('property')
|
||||
value = meta.attrib.get('content')
|
||||
if key and value:
|
||||
if key in ('viewport', ):
|
||||
continue
|
||||
key = key.replace('og:', '')
|
||||
data[key] = value
|
||||
return data
|
||||
|
||||
|
||||
class Comment(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
|
|
@ -83,6 +109,10 @@ class Comment(models.Model):
|
|||
data = models.JSONField(default=dict, editable=False)
|
||||
published = models.DateTimeField(null=True, default=None)
|
||||
|
||||
@property
|
||||
def is_published(self):
|
||||
return bool(self.published)
|
||||
|
||||
def __str__(self):
|
||||
return '%s: %s' % (self.item, self.user)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue