1 from mygpo
.api
.models
import Podcast
, SubscriptionAction
2 from mygpo
.data
.models
import HistoricPodcastData
3 from mygpo
.utils
import daterange
4 from datetime
import date
, timedelta
8 for p
in Podcast
.objects
.all().iterator():
12 def calc_podcast(podcast
):
14 latest_historic
= HistoricPodcastData
.objects
.filter(podcast
=podcast
).order_by('-date')
15 if latest_historic
.count() > 0:
16 start
= latest_historic
[0].date
+ timedelta(days
=1)
17 prev
= latest_historic
[0].subscriber_count
20 sas
= SubscriptionAction
.objects
.filter(podcast
=podcast
).order_by('timestamp')
23 start
= first
.timestamp
.date()
28 for day
in daterange(start
, date
.today() - timedelta(days
=1)):
29 nextday
= day
+ timedelta(days
=1)
30 act
= [x
['action'] for x
in SubscriptionAction
.objects
.filter(podcast
=podcast
, timestamp__range
=(day
, nextday
)).values('action')]
33 rec
= HistoricPodcastData
.objects
.get_or_create(podcast
=podcast
, date
=day
, defaults
={'subscriber_count': prev
})