def get_queryset(self):
params = self.request.query_params
excludeStatuses = ['COMPLETED', 'COMPLETED', 'COMPLETE', 'DENIED', 'CANCELED']
minDist = int(params.get('distance', 100))
minDays = int(params.get('days', 14))
defaultStart = datetime.date.today() - datetime.timedelta(days=2)
defaultEnd = defaultStart + datetime.timedelta(days=180)
startDate = params.get('startDate', defaultStart.isoformat())
endDate = params.get('endDate', defaultEnd.isoformat())
queryDateRange = DateRange(lower=startDate, upper=endDate)
excludeDateRange = DateRange(lower='1800-01-01', upper='2014-12-31')
collisionGraph = cache.get('featureGraph')
featureIDs = set()
for u, v, d in collisionGraph.edges(data=True):
if d['daysApart'] <= minDays and d['distance'] <= minDist:
featureIDs = {u, v} | featureIDs
filteredFeatures = Feature.objects\
.filter(pk__in=featureIDs)\
.filter(canonical_daterange__overlap=queryDateRange)\
.exclude(canonical_daterange__overlap=excludeDateRange)\
.exclude(canonical_status__in=excludeStatuses)
print('featurecount', filteredFeatures.count())
return filteredFeatures
评论列表
文章目录