2ff2b26aa9
Remove the old feedback functionality for released iso's. The last submission was in 2012 and it's no longer used by the current released iso's.
187 lines
4.7 KiB
Python
187 lines
4.7 KiB
Python
from datetime import datetime, timedelta
|
|
from pytz import utc
|
|
|
|
from django.contrib.sitemaps import Sitemap
|
|
from django.core.urlresolvers import reverse
|
|
|
|
from main.models import Package
|
|
from news.models import News
|
|
from packages.utils import get_group_info, get_split_packages_info
|
|
from releng.models import Release
|
|
from todolists.models import Todolist
|
|
|
|
|
|
class PackagesSitemap(Sitemap):
|
|
def items(self):
|
|
return Package.objects.normal().only(
|
|
'pkgname', 'last_update', 'files_last_update',
|
|
'repo__name', 'repo__testing', 'repo__staging',
|
|
'arch__name').order_by()
|
|
|
|
def lastmod(self, obj):
|
|
return obj.last_update
|
|
|
|
def changefreq(self, obj):
|
|
if obj.repo.testing or obj.repo.staging:
|
|
return "daily"
|
|
return "weekly"
|
|
|
|
def priority(self, obj):
|
|
if obj.repo.testing:
|
|
return "0.4"
|
|
if obj.repo.staging:
|
|
return "0.1"
|
|
return "0.5"
|
|
|
|
|
|
class PackageFilesSitemap(PackagesSitemap):
|
|
changefreq = "weekly"
|
|
priority = "0.1"
|
|
|
|
def location(self, obj):
|
|
return PackagesSitemap.location(self, obj) + 'files/'
|
|
|
|
def lastmod(self, obj):
|
|
return obj.files_last_update
|
|
|
|
|
|
class PackageGroupsSitemap(Sitemap):
|
|
changefreq = "weekly"
|
|
priority = "0.4"
|
|
|
|
def items(self):
|
|
return get_group_info()
|
|
|
|
def lastmod(self, obj):
|
|
return obj['last_update']
|
|
|
|
def location(self, obj):
|
|
return '/groups/%s/%s/' % (obj['arch'], obj['name'])
|
|
|
|
|
|
class SplitPackagesSitemap(Sitemap):
|
|
changefreq = "weekly"
|
|
priority = "0.3"
|
|
|
|
def items(self):
|
|
return get_split_packages_info()
|
|
|
|
def lastmod(self, obj):
|
|
return obj['last_update']
|
|
|
|
def location(self, obj):
|
|
return '/packages/%s/%s/%s/' % (
|
|
obj['repo'].name.lower(), obj['arch'], obj['pkgbase'])
|
|
|
|
|
|
class NewsSitemap(Sitemap):
|
|
def __init__(self):
|
|
now = datetime.utcnow().replace(tzinfo=utc)
|
|
self.one_day_ago = now - timedelta(days=1)
|
|
self.one_week_ago = now - timedelta(days=7)
|
|
|
|
def items(self):
|
|
return News.objects.all().defer('content', 'guid', 'title').order_by()
|
|
|
|
def lastmod(self, obj):
|
|
return obj.last_modified
|
|
|
|
def priority(self, obj):
|
|
if obj.last_modified > self.one_week_ago:
|
|
return "0.9"
|
|
return "0.8"
|
|
|
|
def changefreq(self, obj):
|
|
if obj.last_modified > self.one_day_ago:
|
|
return 'daily'
|
|
if obj.last_modified > self.one_week_ago:
|
|
return 'weekly'
|
|
return 'yearly'
|
|
|
|
|
|
class RecentNewsSitemap(NewsSitemap):
|
|
def items(self):
|
|
now = datetime.utcnow().replace(tzinfo=utc)
|
|
cutoff = now - timedelta(days=30)
|
|
return super(RecentNewsSitemap, self).items().filter(postdate__gte=cutoff)
|
|
|
|
|
|
class ReleasesSitemap(Sitemap):
|
|
changefreq = "monthly"
|
|
|
|
def items(self):
|
|
return Release.objects.all().defer('info', 'torrent_data').order_by()
|
|
|
|
def lastmod(self, obj):
|
|
return obj.last_modified
|
|
|
|
def priority(self, obj):
|
|
if obj.available:
|
|
return "0.6"
|
|
return "0.2"
|
|
|
|
|
|
class TodolistSitemap(Sitemap):
|
|
priority = "0.4"
|
|
|
|
def __init__(self):
|
|
now = datetime.utcnow().replace(tzinfo=utc)
|
|
self.two_weeks_ago = now - timedelta(days=14)
|
|
|
|
def items(self):
|
|
return Todolist.objects.all().defer('raw').order_by()
|
|
|
|
def lastmod(self, obj):
|
|
return obj.last_modified
|
|
|
|
def changefreq(self, obj):
|
|
if obj.last_modified > self.two_weeks_ago:
|
|
return 'weekly'
|
|
return 'monthly'
|
|
|
|
|
|
class BaseSitemap(Sitemap):
|
|
DEFAULT_PRIORITY = 0.7
|
|
|
|
base_viewnames = (
|
|
('index', 1.0, 'hourly'),
|
|
('packages-search', 0.8, 'hourly'),
|
|
('page-download', 0.8, 'monthly'),
|
|
('page-keys', 0.8, 'weekly'),
|
|
('news-list', 0.7, 'weekly'),
|
|
('groups-list', 0.5, 'weekly'),
|
|
('mirror-status', 0.4, 'hourly'),
|
|
'page-about',
|
|
'page-art',
|
|
'page-svn',
|
|
'page-donate',
|
|
'feeds-list',
|
|
'mirror-list',
|
|
'mirror-status',
|
|
'mirrorlist',
|
|
'packages-differences',
|
|
'releng-release-list',
|
|
'visualize-index',
|
|
)
|
|
|
|
def items(self):
|
|
return self.base_viewnames
|
|
|
|
def location(self, obj):
|
|
name = obj
|
|
if isinstance(obj, tuple):
|
|
name = obj[0]
|
|
return reverse(name)
|
|
|
|
def priority(self, obj):
|
|
if isinstance(obj, tuple):
|
|
return obj[1]
|
|
return self.DEFAULT_PRIORITY
|
|
|
|
def changefreq(self, obj):
|
|
if isinstance(obj, tuple):
|
|
return obj[2]
|
|
return 'monthly'
|
|
|
|
# vim: set ts=4 sw=4 et:
|