Private
Public Access
1
0

adding command to store blog posts locally

This commit is contained in:
Sander Roosendaal
2019-10-17 22:09:01 +02:00
parent ed02c7c52b
commit 45666d22a7
3 changed files with 70 additions and 2 deletions

View File

@@ -0,0 +1,49 @@
#!/srv/venv/bin/python
import sys
import os
import requests
import datetime
import arrow
PY3K = sys.version_info >= (3,0)
from django.core.management.base import BaseCommand
from rowers.models import BlogPost
class Command(BaseCommand):
def handle(self, *args, **options):
blogs_json = []
try:
response = requests.get(
'https://analytics.rowsandall.com/wp-json/wp/v2/posts?per_page=3')
if response.status_code == 200:
blogs_json = response.json()
else:
blogs_json = []
except ConnectionError:
pass
if blogs_json:
result = BlogPost.objects.all().delete()
for postdata in blogs_json[0:3]:
title = postdata['title']['rendered']
link = postdata['link']
datetime = postdata['date']
datetime = arrow.get(datetime).datetime
date = datetime.date()
blogpost = BlogPost(
link=link,
date=date,
title=title
)
blogpost.save()
self.stdout.write(self.style.SUCCESS(
'Successfully processed blog posts'))

View File

@@ -3707,3 +3707,7 @@ class PlannedSessionCommentForm(ModelForm):
}
class BlogPost(models.Model):
title = models.TextField(max_length=300)
link = models.TextField(max_length=300)
date = models.DateField()

View File

@@ -103,7 +103,7 @@ from rowers.models import (
Team,TeamForm,TeamInviteForm,TeamInvite,TeamRequest,
WorkoutComment,WorkoutCommentForm,RowerExportForm,
CalcAgePerformance,
PowerTimeFitnessMetric,
PowerTimeFitnessMetric,BlogPost,
PlannedSessionForm,
PlannedSessionFormSmall,GeoCourseEditForm,VirtualRace,
VirtualRaceForm,VirtualRaceResultForm,RowerImportExportForm,
@@ -801,8 +801,23 @@ def get_thumbnails(request,id):
return JSONResponse(charts)
def get_blog_posts(request):
blogposts = BlogPost.objects.all().order_by("-date")
jsondata = []
if blogposts:
for blogpost in blogposts[0:3]:
thedict = {
'title':blogpost.title,
'link':blogpost.link,
}
jsondata.append(thedict)
return JSONResponse(jsondata)
def get_blog_posts_old(request):
try:
response = requests.get(
'https://analytics.rowsandall.com/wp-json/wp/v2/posts?per_page=3')