2009-10-30 14:36:42 -07:00
|
|
|
from django.contrib.sitemaps import Sitemap
|
2011-06-15 14:55:03 -07:00
|
|
|
from django.core.urlresolvers import reverse
|
|
|
|
|
2010-09-07 22:23:55 -07:00
|
|
|
from main.models import Package
|
|
|
|
from news.models import News
|
2011-11-11 09:57:04 -08:00
|
|
|
from packages.utils import get_group_info, get_split_packages_info
|
2009-10-30 14:36:42 -07:00
|
|
|
|
|
|
|
class PackagesSitemap(Sitemap):
|
2010-08-27 15:25:46 -07:00
|
|
|
changefreq = "weekly"
|
2010-03-09 22:17:51 -08:00
|
|
|
priority = "0.5"
|
2009-10-30 14:36:42 -07:00
|
|
|
|
|
|
|
def items(self):
|
2011-06-15 13:50:14 -07:00
|
|
|
return Package.objects.normal()
|
2009-10-30 14:36:42 -07:00
|
|
|
|
|
|
|
def lastmod(self, obj):
|
|
|
|
return obj.last_update
|
|
|
|
|
2010-03-09 22:17:51 -08:00
|
|
|
|
|
|
|
class PackageFilesSitemap(PackagesSitemap):
|
2010-08-27 15:25:46 -07:00
|
|
|
changefreq = "monthly"
|
2010-03-09 22:17:51 -08:00
|
|
|
priority = "0.3"
|
|
|
|
|
|
|
|
def location(self, obj):
|
|
|
|
return PackagesSitemap.location(self, obj) + 'files/'
|
|
|
|
|
|
|
|
def lastmod(self, obj):
|
|
|
|
return obj.files_last_update
|
|
|
|
|
|
|
|
|
2010-08-27 15:25:46 -07:00
|
|
|
class PackageGroupsSitemap(Sitemap):
|
|
|
|
changefreq = "weekly"
|
|
|
|
priority = "0.4"
|
|
|
|
|
|
|
|
def items(self):
|
2010-08-28 08:53:27 -07:00
|
|
|
return get_group_info()
|
2010-08-27 15:25:46 -07:00
|
|
|
|
|
|
|
def lastmod(self, obj):
|
|
|
|
return obj['last_update']
|
|
|
|
|
|
|
|
def location(self, obj):
|
|
|
|
return '/groups/%s/%s/' % (obj['arch'], obj['name'])
|
|
|
|
|
|
|
|
|
2011-11-11 09:57:04 -08:00
|
|
|
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'])
|
|
|
|
|
|
|
|
|
2009-10-30 14:36:42 -07:00
|
|
|
class NewsSitemap(Sitemap):
|
|
|
|
changefreq = "never"
|
2011-06-15 14:55:03 -07:00
|
|
|
priority = "0.8"
|
2009-10-30 14:36:42 -07:00
|
|
|
|
|
|
|
def items(self):
|
|
|
|
return News.objects.all()
|
|
|
|
|
|
|
|
def lastmod(self, obj):
|
2011-06-15 14:12:01 -07:00
|
|
|
return obj.last_modified
|
2009-10-30 14:36:42 -07:00
|
|
|
|
2011-06-15 14:55:03 -07:00
|
|
|
|
|
|
|
class BaseSitemap(Sitemap):
|
|
|
|
base_viewnames = (
|
|
|
|
('index', 1.0, 'hourly'),
|
|
|
|
('packages-search', 0.8, 'hourly'),
|
|
|
|
'page-about', 'page-art', 'page-svn', 'page-devs', 'page-tus',
|
|
|
|
'page-fellows', 'page-donate', 'page-download', 'news-list',
|
|
|
|
'feeds-list', 'groups-list', 'mirror-list', 'mirror-status',
|
|
|
|
'mirrorlist', 'packages-differences', 'releng-test-overview',
|
|
|
|
)
|
|
|
|
|
|
|
|
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 0.7
|
|
|
|
|
|
|
|
def changefreq(self, obj):
|
|
|
|
if isinstance(obj, tuple):
|
|
|
|
return obj[2]
|
|
|
|
return 'monthly'
|
|
|
|
|
2009-10-30 14:36:42 -07:00
|
|
|
# vim: set ts=4 sw=4 et:
|