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 <fox91@anche.no>
This commit is contained in:
		
							
								
								
									
										1
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								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..)
 | 
					- 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.
 | 
					- 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
 | 
					### packages
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -229,9 +229,32 @@ class UserFeed(BaseFeed):
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _items(self, data):
 | 
					    def _items(self, data):
 | 
				
			||||||
        user, options = data["user"], data["options"]
 | 
					        user = data["user"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        profile = get_profile(user)
 | 
					        profile = get_profile(user)
 | 
				
			||||||
        vlogs = get_account_versionlogs(profile)
 | 
					        vlogs = get_account_versionlogs(profile)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return vlogs, 100
 | 
					        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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,18 @@
 | 
				
			|||||||
{{ block.super }} - World Scan
 | 
					{{ block.super }} - World Scan
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block menu_feed %}
 | 
				
			||||||
 | 
					{{ block.super }}
 | 
				
			||||||
 | 
					<li>
 | 
				
			||||||
 | 
					  <img src="{{ STATIC_URL }}/img/feed.png" alt="feed" />
 | 
				
			||||||
 | 
					  <a title="World scan Feed"
 | 
				
			||||||
 | 
					     href="{% url "world_scan_feed" %}?package={{ packages|join:"&package=" }}">
 | 
				
			||||||
 | 
					    World scan feed
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<h2>
 | 
					<h2>
 | 
				
			||||||
  World scan:
 | 
					  World scan:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ from djcelery.views import apply as apply_task
 | 
				
			|||||||
from djeuscan.views import registered_tasks
 | 
					from djeuscan.views import registered_tasks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from djeuscan.feeds import PackageFeed, CategoryFeed, HerdFeed, \
 | 
					from djeuscan.feeds import PackageFeed, CategoryFeed, HerdFeed, \
 | 
				
			||||||
    MaintainerFeed, GlobalFeed, UserFeed
 | 
					    MaintainerFeed, GlobalFeed, UserFeed, WorldScanFeed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
admin_required = user_passes_test(lambda u: u.is_superuser)
 | 
					admin_required = user_passes_test(lambda u: u.is_superuser)
 | 
				
			||||||
@@ -117,6 +117,7 @@ urlpatterns = patterns('djeuscan.views',
 | 
				
			|||||||
    url(r'^statistics/charts/(?P<chart>[\w\-]+).png$', 'chart', name="chart"),
 | 
					    url(r'^statistics/charts/(?P<chart>[\w\-]+).png$', 'chart', name="chart"),
 | 
				
			||||||
    url(r'^world/$', 'world', name="world"),
 | 
					    url(r'^world/$', 'world', name="world"),
 | 
				
			||||||
    url(r'^world/scan/$', 'world_scan', name="world_scan"),
 | 
					    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/favourite/$', 'favourite_world', name="favourite_world"),
 | 
				
			||||||
    url(r'^world/unfavourite/$', 'unfavourite_world',
 | 
					    url(r'^world/unfavourite/$', 'unfavourite_world',
 | 
				
			||||||
        name="unfavourite_world"),
 | 
					        name="unfavourite_world"),
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user