From 16e14bf79185c9a455269d7bfe27a8c5543c17f8 Mon Sep 17 00:00:00 2001 From: volpino Date: Fri, 14 Sep 2012 15:25:08 +0200 Subject: [PATCH] euscanwww: Created a feed for scan world with packages in GET Note: Check if passing parameters in GET is good, there's the risk of looong urls Signed-off-by: volpino --- TODO | 1 - euscanwww/djeuscan/feeds.py | 25 ++++++++++++++++++- .../djeuscan/templates/euscan/world_scan.html | 12 +++++++++ euscanwww/djeuscan/urls.py | 3 ++- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index aad1854..1cc313f 100644 --- a/TODO +++ b/TODO @@ -52,7 +52,6 @@ euscanwww --------- - Add an /about/config page that describe the current config (overlays, stuff in make.conf, euscan default settings, etc..) -- Create a rss for "scan world" + packages in GET - Always keep in db all found versions (when using an API only?). But don't display them if older than current packaged version, except maybe in the "upstream_version" column. ### packages diff --git a/euscanwww/djeuscan/feeds.py b/euscanwww/djeuscan/feeds.py index 5836d87..3455de5 100644 --- a/euscanwww/djeuscan/feeds.py +++ b/euscanwww/djeuscan/feeds.py @@ -229,9 +229,32 @@ class UserFeed(BaseFeed): } def _items(self, data): - user, options = data["user"], data["options"] + user = data["user"] profile = get_profile(user) vlogs = get_account_versionlogs(profile) return vlogs, 100 + + +class WorldScanFeed(BaseFeed): + link = "/" + + def get_object(self, request): + return { + "options": request.GET, + } + + def _items(self, data): + packages = [] + for pkg_name in data["options"].getlist("package", []): + if "/" in pkg_name: + cat, name = pkg_name.split("/", 1) + pkg = Package.objects.filter(name=name, category=cat) + else: + pkg = Package.objects.filter(name=pkg_name) + packages.extend(pkg) + + vlogs = VersionLog.objects.filter(package__in=packages) + + return vlogs, 100 diff --git a/euscanwww/djeuscan/templates/euscan/world_scan.html b/euscanwww/djeuscan/templates/euscan/world_scan.html index d579dc6..30a029e 100644 --- a/euscanwww/djeuscan/templates/euscan/world_scan.html +++ b/euscanwww/djeuscan/templates/euscan/world_scan.html @@ -7,6 +7,18 @@ {{ block.super }} - World Scan {% endblock %} +{% block menu_feed %} +{{ block.super }} +
  • + feed + + World scan feed + +
  • +{% endblock %} + + {% block content %}

    World scan: diff --git a/euscanwww/djeuscan/urls.py b/euscanwww/djeuscan/urls.py index 39893ee..e156a4b 100644 --- a/euscanwww/djeuscan/urls.py +++ b/euscanwww/djeuscan/urls.py @@ -8,7 +8,7 @@ from djcelery.views import apply as apply_task from djeuscan.views import registered_tasks from djeuscan.feeds import PackageFeed, CategoryFeed, HerdFeed, \ - MaintainerFeed, GlobalFeed, UserFeed + MaintainerFeed, GlobalFeed, UserFeed, WorldScanFeed admin_required = user_passes_test(lambda u: u.is_superuser) @@ -117,6 +117,7 @@ urlpatterns = patterns('djeuscan.views', url(r'^statistics/charts/(?P[\w\-]+).png$', 'chart', name="chart"), url(r'^world/$', 'world', name="world"), url(r'^world/scan/$', 'world_scan', name="world_scan"), + url(r'^world/scan/feed$', WorldScanFeed(), name="world_scan_feed"), url(r'^world/favourite/$', 'favourite_world', name="favourite_world"), url(r'^world/unfavourite/$', 'unfavourite_world', name="unfavourite_world"),