Merge lp:~nataliabidart/ubuntu-webcatalog/law-and-order.2 into lp:ubuntu-webcatalog

Proposed by Natalia Bidart
Status: Merged
Approved by: Natalia Bidart
Approved revision: 135
Merged at revision: 135
Proposed branch: lp:~nataliabidart/ubuntu-webcatalog/law-and-order.2
Merge into: lp:ubuntu-webcatalog
Prerequisite: lp:~nataliabidart/ubuntu-webcatalog/law-and-order.1
Diff against target: 671 lines (+111/-103)
13 files modified
src/webcatalog/admin.py (+4/-4)
src/webcatalog/auth.py (+18/-17)
src/webcatalog/context_processors.py (+2/-1)
src/webcatalog/department_filters.py (+9/-7)
src/webcatalog/forms.py (+5/-5)
src/webcatalog/hw.py (+12/-12)
src/webcatalog/managers.py (+2/-2)
src/webcatalog/preflight.py (+2/-2)
src/webcatalog/schema.py (+5/-5)
src/webcatalog/urls.py (+7/-7)
src/webcatalog/utilities.py (+13/-12)
src/webcatalog/views.py (+31/-28)
src/webcatalog/wsgi.py (+1/-1)
To merge this branch: bzr merge lp:~nataliabidart/ubuntu-webcatalog/law-and-order.2
Reviewer Review Type Date Requested Status
Anthony Lenton (community) Approve
Review via email: mp+109002@code.launchpad.net

Commit message

- Fixing pep8 issues (part 2 of LP: #1007626).

To post a comment you must log in.
Revision history for this message
Anthony Lenton (elachuni) wrote :

Looks good, thanks!

review: Approve
Revision history for this message
ISD Branch Mangler (isd-branches-mangler) wrote :

The prerequisite lp:~nataliabidart/ubuntu-webcatalog/law-and-order.1 has not yet been merged into lp:ubuntu-webcatalog.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/webcatalog/admin.py'
--- src/webcatalog/admin.py 2012-04-18 21:27:46 +0000
+++ src/webcatalog/admin.py 2012-06-06 17:47:19 +0000
@@ -20,7 +20,7 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
24from django.contrib import admin24from django.contrib import admin
25from webcatalog.models import (25from webcatalog.models import (
26 Application,26 Application,
@@ -29,18 +29,18 @@
29 DistroSeries,29 DistroSeries,
30 Exhibit,30 Exhibit,
31 Machine,31 Machine,
32 )32)
3333
34__metaclass__ = type34__metaclass__ = type
35__all__ = [35__all__ = [
36 'ApplicationAdmin',36 'ApplicationAdmin',
37 'MachineAdmin',37 'MachineAdmin',
38 ]38]
3939
4040
41class ApplicationAdmin(admin.ModelAdmin):41class ApplicationAdmin(admin.ModelAdmin):
42 list_display = ('package_name', 'name', 'comment', 'distroseries',42 list_display = ('package_name', 'name', 'comment', 'distroseries',
43 'wilson_score')43 'wilson_score')
44 search_fields = ('package_name', 'name', 'comment')44 search_fields = ('package_name', 'name', 'comment')
45 list_filter = ('distroseries', 'for_purchase', 'is_latest', 'departments')45 list_filter = ('distroseries', 'for_purchase', 'is_latest', 'departments')
46 exclude = ('for_purchase', 'archive_id')46 exclude = ('for_purchase', 'archive_id')
4747
=== modified file 'src/webcatalog/auth.py'
--- src/webcatalog/auth.py 2012-01-06 17:54:47 +0000
+++ src/webcatalog/auth.py 2012-06-06 17:47:19 +0000
@@ -23,7 +23,7 @@
23__metaclass__ = type23__metaclass__ = type
24__all__ = [24__all__ = [
25 'SSOOAuthAuthentication',25 'SSOOAuthAuthentication',
26 ]26]
2727
28from datetime import datetime, timedelta28from datetime import datetime, timedelta
29from django.conf import settings29from django.conf import settings
@@ -39,8 +39,8 @@
39 full_claimed_id,39 full_claimed_id,
40)40)
4141
42TOKEN_CACHE_EXPIRY = timedelta(hours=getattr(settings,42TOKEN_CACHE_EXPIRY_HOURS = getattr(settings, 'TOKEN_CACHE_EXPIRY_HOURS', 4)
43 'TOKEN_CACHE_EXPIRY_HOURS', 4))43TOKEN_CACHE_EXPIRY = timedelta(hours=TOKEN_CACHE_EXPIRY_HOURS)
4444
4545
46class SSOOAuthAuthentication(OAuthAuthentication):46class SSOOAuthAuthentication(OAuthAuthentication):
@@ -71,8 +71,8 @@
71 request.method, request.build_absolute_uri(), headers=headers,71 request.method, request.build_absolute_uri(), headers=headers,
72 query_string=request.META['QUERY_STRING'])72 query_string=request.META['QUERY_STRING'])
73 if (orequest is None or73 if (orequest is None or
74 not 'oauth_token' in orequest.parameters or74 not 'oauth_token' in orequest.parameters or
75 not 'oauth_consumer_key' in orequest.parameters):75 not 'oauth_consumer_key' in orequest.parameters):
76 return False76 return False
7777
78 self.prefetch_oauth_consumer(orequest)78 self.prefetch_oauth_consumer(orequest)
@@ -95,11 +95,11 @@
95 oauthtoken = request.get_parameter('oauth_token')95 oauthtoken = request.get_parameter('oauth_token')
96 consumer_key = request.get_parameter('oauth_consumer_key')96 consumer_key = request.get_parameter('oauth_consumer_key')
97 tokens = Token.objects.filter(token=oauthtoken,97 tokens = Token.objects.filter(token=oauthtoken,
98 consumer__key=consumer_key)98 consumer__key=consumer_key)
99 if len(tokens) == 0 or (tokens[0].updated_at <99 if (len(tokens) == 0 or
100 datetime.now() - TOKEN_CACHE_EXPIRY):100 tokens[0].updated_at < datetime.now() - TOKEN_CACHE_EXPIRY):
101 pieces = web_services.get_data_for_account(token=oauthtoken,101 pieces = web_services.get_data_for_account(
102 openid_identifier=consumer_key,102 token=oauthtoken, openid_identifier=consumer_key,
103 signature=request.get_parameter('oauth_signature'))103 signature=request.get_parameter('oauth_signature'))
104 if not pieces:104 if not pieces:
105 return105 return
@@ -111,10 +111,11 @@
111 useropenid__claimed_id=claimed_id)111 useropenid__claimed_id=claimed_id)
112 except User.DoesNotExist:112 except User.DoesNotExist:
113 if (not pieces.get('preferred_email') or113 if (not pieces.get('preferred_email') or
114 not pieces.get('username')):114 not pieces.get('username')):
115 return115 return
116 user = User.objects.create_user(pieces['username'],116 user = User.objects.create_user(pieces['username'],
117 pieces['preferred_email'], password=None)117 pieces['preferred_email'],
118 password=None)
118 user.useropenid_set.create(claimed_id=claimed_id)119 user.useropenid_set.create(claimed_id=claimed_id)
119120
120 displayname = pieces['displayname']121 displayname = pieces['displayname']
@@ -123,11 +124,11 @@
123 ' ')124 ' ')
124 user.save()125 user.save()
125126
126 consumer, created = Consumer.objects.get_or_create(user=user,127 consumer, created = Consumer.objects.get_or_create(
127 key=consumer_key, secret=pieces['consumer_secret'])128 user=user, key=consumer_key, secret=pieces['consumer_secret'])
128 token, created = Token.objects.get_or_create(consumer=consumer,129 token, created = Token.objects.get_or_create(
129 token=pieces['token'], token_secret=pieces['token_secret'],130 consumer=consumer, token=pieces['token'],
130 name=pieces['name'])131 token_secret=pieces['token_secret'], name=pieces['name'])
131 if not created:132 if not created:
132 # Update updated_at133 # Update updated_at
133 token.save()134 token.save()
134135
=== modified file 'src/webcatalog/context_processors.py'
--- src/webcatalog/context_processors.py 2012-04-19 14:27:02 +0000
+++ src/webcatalog/context_processors.py 2012-06-06 17:47:19 +0000
@@ -31,4 +31,5 @@
31 num_recommended_apps=settings.NUM_RECOMMENDED_APPS,31 num_recommended_apps=settings.NUM_RECOMMENDED_APPS,
32 google_analytics_id=getattr(settings, 'GOOGLE_ANALYTICS_ID', None),32 google_analytics_id=getattr(settings, 'GOOGLE_ANALYTICS_ID', None),
33 secondary_google_analytics_id=getattr(settings,33 secondary_google_analytics_id=getattr(settings,
34 'SECONDARY_GOOGLE_ANALYTICS_ID', None))34 'SECONDARY_GOOGLE_ANALYTICS_ID',
35 None))
3536
=== modified file 'src/webcatalog/department_filters.py'
--- src/webcatalog/department_filters.py 2012-01-06 17:54:47 +0000
+++ src/webcatalog/department_filters.py 2012-06-06 17:47:19 +0000
@@ -20,7 +20,7 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
2424
25import re25import re
2626
@@ -29,7 +29,7 @@
29__metaclass__ = type29__metaclass__ = type
30__all__ = [30__all__ = [
31 'department_filters',31 'department_filters',
32 ]32]
3333
3434
35def category_filter(categories_set):35def category_filter(categories_set):
@@ -79,24 +79,26 @@
79 'Web Browsers': [category_filter(set(['WebBrowser']))],79 'Web Browsers': [category_filter(set(['WebBrowser']))],
80 'Office': [category_filter(set(['Office']))],80 'Office': [category_filter(set(['Office']))],
81 'Science & Engineering': [category_filter(set(['Science'])),81 'Science & Engineering': [category_filter(set(['Science'])),
82 section_filter(['science'])],82 section_filter(['science'])],
83 'Astronomy': [category_filter(set(['Astronomy']))],83 'Astronomy': [category_filter(set(['Astronomy']))],
84 'Biology': [category_filter(set(['Biology']))],84 'Biology': [category_filter(set(['Biology']))],
85 'Chemistry': [category_filter(set(['Chemistry']))],85 'Chemistry': [category_filter(set(['Chemistry']))],
86 'Computing & Robotics': [category_filter(set(['ArtificialIntelligence',86 'Computing & Robotics': [category_filter(set(['ArtificialIntelligence',
87 'ComputerScience', 'Robotics']))],87 'ComputerScience',
88 'Robotics']))],
88 'Electronics': [category_filter(set(['Electronics']))],89 'Electronics': [category_filter(set(['Electronics']))],
89 'Engineering': [category_filter(set(['Engineering']))],90 'Engineering': [category_filter(set(['Engineering']))],
90 'Geography': [category_filter(set(['Geography']))],91 'Geography': [category_filter(set(['Geography']))],
91 'Geology': [category_filter(set(['Geology', 'Geoscience']))],92 'Geology': [category_filter(set(['Geology', 'Geoscience']))],
92 'Mathematics': [category_filter(set(['DataVisualization', 'Math',93 'Mathematics': [category_filter(set(['DataVisualization', 'Math',
93 'NumericalAnalysis'])), section_filter(['math', 'gnu-r'])],94 'NumericalAnalysis'])),
95 section_filter(['math', 'gnu-r'])],
94 'Physics': [category_filter(set(['Electricity', 'Physics']))],96 'Physics': [category_filter(set(['Electricity', 'Physics']))],
95 'Sound & Video': [category_filter(set(['AudioVideo', 'Audio', 'Video']))],97 'Sound & Video': [category_filter(set(['AudioVideo', 'Audio', 'Video']))],
96 'Themes & Tweaks': [category_filter(set(['Settings']))],98 'Themes & Tweaks': [category_filter(set(['Settings']))],
97 'Universal Access': [category_filter(set(['Accessibility']))],99 'Universal Access': [category_filter(set(['Accessibility']))],
98 'Developer Tools': [category_filter(set(['Development'])),100 'Developer Tools': [category_filter(set(['Development'])),
99 section_filter(['devel'])],101 section_filter(['devel'])],
100 'Debugging': [category_filter(set(['Debugger']))],102 'Debugging': [category_filter(set(['Debugger']))],
101 'Graphic Interface Design': [category_filter(set(['GUIDesigner']))],103 'Graphic Interface Design': [category_filter(set(['GUIDesigner']))],
102 'Haskell': [section_filter(['haskell'])],104 'Haskell': [section_filter(['haskell'])],
@@ -112,6 +114,6 @@
112 'Python': [section_filter(['python'])],114 'Python': [section_filter(['python'])],
113 'Ruby': [section_filter(['ruby'])],115 'Ruby': [section_filter(['ruby'])],
114 'Version Control': [category_filter(set(['RevisionControl'])),116 'Version Control': [category_filter(set(['RevisionControl'])),
115 section_filter(['vcs'])],117 section_filter(['vcs'])],
116 'Web Development': [category_filter(set(['WebDevelopment']))],118 'Web Development': [category_filter(set(['WebDevelopment']))],
117}119}
118120
=== modified file 'src/webcatalog/forms.py'
--- src/webcatalog/forms.py 2012-05-25 07:42:30 +0000
+++ src/webcatalog/forms.py 2012-06-06 17:47:19 +0000
@@ -20,7 +20,7 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
2424
25import apt25import apt
26import json26import json
@@ -40,7 +40,7 @@
40__all__ = [40__all__ = [
41 'ApplicationForm',41 'ApplicationForm',
42 'desktop_field_mappings',42 'desktop_field_mappings',
43 ]43]
4444
45desktop_field_mappings = {45desktop_field_mappings = {
46 'x-appinstall-package': 'package_name',46 'x-appinstall-package': 'package_name',
@@ -53,7 +53,7 @@
53 'x-appinstall-section': 'section',53 'x-appinstall-section': 'section',
54 'type': 'app_type',54 'type': 'app_type',
55 'icon': 'icon_name',55 'icon': 'icon_name',
56 }56}
5757
5858
59class ApplicationForm(forms.ModelForm):59class ApplicationForm(forms.ModelForm):
@@ -143,7 +143,7 @@
143 app_data['description'] = description143 app_data['description'] = description
144 if 'debtags' in app_data and app_data['debtags']:144 if 'debtags' in app_data and app_data['debtags']:
145 app_data['debtags'] = json.dumps([get_hw_short_description(x)145 app_data['debtags'] = json.dumps([get_hw_short_description(x)
146 for x in app_data['debtags']])146 for x in app_data['debtags']])
147 app_data['application_id'] = app_data.get('id')147 app_data['application_id'] = app_data.get('id')
148148
149 try:149 try:
@@ -195,7 +195,7 @@
195 text = render_to_string('webcatalog/email_download_link.txt',195 text = render_to_string('webcatalog/email_download_link.txt',
196 context)196 context)
197 sender = ("Ubuntu Application Directory <%s>" %197 sender = ("Ubuntu Application Directory <%s>" %
198 settings.NOREPLY_FROM_ADDRESS)198 settings.NOREPLY_FROM_ADDRESS)
199 recipient = [self.cleaned_data['email']]199 recipient = [self.cleaned_data['email']]
200 message = EmailMultiAlternatives(subject, text, sender, recipient)200 message = EmailMultiAlternatives(subject, text, sender, recipient)
201 message.attach_alternative(html, 'text/html')201 message.attach_alternative(html, 'text/html')
202202
=== modified file 'src/webcatalog/hw.py'
--- src/webcatalog/hw.py 2012-03-26 17:28:23 +0000
+++ src/webcatalog/hw.py 2012-06-06 17:47:19 +0000
@@ -48,32 +48,32 @@
48 'hardware::digicam': _('This software requires a digital camera, but none '48 'hardware::digicam': _('This software requires a digital camera, but none '
49 'are currently connected'),49 'are currently connected'),
50 'hardware::webcam': _('This software requires a video camera, but none '50 'hardware::webcam': _('This software requires a video camera, but none '
51 'are currently connected'),51 'are currently connected'),
52 'hardware::input:mouse': _('This software requires a mouse, '52 'hardware::input:mouse': _('This software requires a mouse, '
53 'but none is currently setup.'),53 'but none is currently setup.'),
54 'hardware::input:joystick': _('This software requires a joystick, '54 'hardware::input:joystick': _('This software requires a joystick, '
55 'but none are currently connected.'),55 'but none are currently connected.'),
56 'hardware::input:touchscreen': _('This software requires a touchscreen, '56 'hardware::input:touchscreen': _('This software requires a touchscreen, '
57 'but the computer does not have one.'),57 'but the computer does not have one.'),
58 'hardware::gps': _('This software requires a GPS, '58 'hardware::gps': _('This software requires a GPS, '
59 'but the computer does not have one.'),59 'but the computer does not have one.'),
60 'hardware::laptop': _('This software is for notebook computers.'),60 'hardware::laptop': _('This software is for notebook computers.'),
61 'hardware::printer': _('This software requires a printer, but none '61 'hardware::printer': _('This software requires a printer, but none '
62 'are currently set up.'),62 'are currently set up.'),
63 'hardware::scanner': _('This software requires a scanner, but none are '63 'hardware::scanner': _('This software requires a scanner, but none are '
64 'currently set up.'),64 'currently set up.'),
65 'hardware::stoarge:cd': _('This software requires a CD drive, but none '65 'hardware::stoarge:cd': _('This software requires a CD drive, but none '
66 'are currently connected.'),66 'are currently connected.'),
67 'hardware::storage:cd-writer': _('This software requires a CD burner, '67 'hardware::storage:cd-writer': _('This software requires a CD burner, '
68 'but none are currently connected.'),68 'but none are currently connected.'),
69 'hardware::storage:dvd': _('This software requires a DVD drive, but none '69 'hardware::storage:dvd': _('This software requires a DVD drive, but none '
70 'are currently connected.'),70 'are currently connected.'),
71 'hardware::storage:dvd-writer': _('This software requires a DVD burner, '71 'hardware::storage:dvd-writer': _('This software requires a DVD burner, '
72 'but none are currently connected.'),72 'but none are currently connected.'),
73 'hardware::storage:floppy': _('This software requires a floppy disk '73 'hardware::storage:floppy': _('This software requires a floppy disk '
74 'drive, but none are currently connected.'),74 'drive, but none are currently connected.'),
75 'hardware::video:opengl': _('This computer does not have graphics fast '75 'hardware::video:opengl': _('This computer does not have graphics fast '
76 'enough for this software.'),76 'enough for this software.'),
77 # private extension77 # private extension
78 OPENGL_DRIVER_BLACKLIST_TAG: _(u'This software does not work with the '78 OPENGL_DRIVER_BLACKLIST_TAG: _(u'This software does not work with the '
79 u'\u201c%s\u201D graphics driver this '79 u'\u201c%s\u201D graphics driver this '
8080
=== modified file 'src/webcatalog/managers.py'
--- src/webcatalog/managers.py 2012-03-16 01:42:36 +0000
+++ src/webcatalog/managers.py 2012-06-06 17:47:19 +0000
@@ -20,13 +20,13 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
2424
2525
26__metaclass__ = type26__metaclass__ = type
27__all__ = [27__all__ = [
28 'ApplicationManager',28 'ApplicationManager',
29 ]29]
3030
31from django.db import models31from django.db import models
32from django.http import Http40432from django.http import Http404
3333
=== modified file 'src/webcatalog/preflight.py'
--- src/webcatalog/preflight.py 2012-05-31 20:29:23 +0000
+++ src/webcatalog/preflight.py 2012-06-06 17:47:19 +0000
@@ -20,7 +20,7 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
2424
25from django import db25from django import db
26from django.conf import settings26from django.conf import settings
@@ -34,7 +34,7 @@
34__metaclass__ = type34__metaclass__ = type
35__all__ = [35__all__ = [
36 'WebcatalogPreflight'36 'WebcatalogPreflight'
37 ]37]
3838
3939
40class WebcatalogPreflight(Preflight):40class WebcatalogPreflight(Preflight):
4141
=== modified file 'src/webcatalog/schema.py'
--- src/webcatalog/schema.py 2012-06-04 10:54:02 +0000
+++ src/webcatalog/schema.py 2012-06-06 17:47:19 +0000
@@ -34,7 +34,7 @@
3434
35 class oops(schema.Section):35 class oops(schema.Section):
36 oops_dir = schema.StringOption(help='Absolute path to the directory'36 oops_dir = schema.StringOption(help='Absolute path to the directory'
37 ' oops reports will be stored in')37 ' oops reports will be stored in')
3838
39 class openid(schema.Section):39 class openid(schema.Section):
40 openid_sso_server_url = schema.StringOption()40 openid_sso_server_url = schema.StringOption()
@@ -56,13 +56,13 @@
56 oauth_data_store = schema.StringOption(56 oauth_data_store = schema.StringOption(
57 default='webcatalog.models.oauthtoken.DataStore')57 default='webcatalog.models.oauthtoken.DataStore')
58 convoy_root = schema.StringOption()58 convoy_root = schema.StringOption()
59 featured_apps = schema.ListOption(item=schema.StringOption(),59 featured_apps = schema.ListOption(
60 default=[])60 item=schema.StringOption(), default=[])
61 number_top_rated_apps = schema.IntOption(default=8)61 number_top_rated_apps = schema.IntOption(default=8)
62 screenshots_base_url = schema.StringOption(62 screenshots_base_url = schema.StringOption(
63 default='http://screenshots.ubuntu.com/')63 default='http://screenshots.ubuntu.com/')
64 hib_apps = schema.ListOption(item=schema.StringOption(),64 hib_apps = schema.ListOption(
65 default=[])65 item=schema.StringOption(), default=[])
66 ubuntu_series_for_versions = schema.DictOption(66 ubuntu_series_for_versions = schema.DictOption(
67 item=schema.StringOption())67 item=schema.StringOption())
6868
6969
=== modified file 'src/webcatalog/urls.py'
--- src/webcatalog/urls.py 2012-05-07 13:43:04 +0000
+++ src/webcatalog/urls.py 2012-06-06 17:47:19 +0000
@@ -20,17 +20,18 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
24from django.conf.urls.defaults import patterns, include, url24from django.conf.urls.defaults import patterns, include, url
25from django.views.generic import TemplateView25from django.views.generic import TemplateView
2626
27__metaclass__ = type27__metaclass__ = type
28__all__ = [28__all__ = [
29 'urlpatterns',29 'urlpatterns',
30 ]30]
3131
3232
33urlpatterns = patterns('webcatalog.views',33urlpatterns = patterns(
34 'webcatalog.views',
34 url(r'^$', 'index', name='wc-index'),35 url(r'^$', 'index', name='wc-index'),
35 url(r'^department/(?P<distro>[-.+\w]+)/(?P<dept_slug_or_id>[\w\d-]+)/$',36 url(r'^department/(?P<distro>[-.+\w]+)/(?P<dept_slug_or_id>[\w\d-]+)/$',
36 'department_overview', name='wc-department'),37 'department_overview', name='wc-department'),
@@ -45,8 +46,7 @@
45 url(r'^applications/(?P<package_name>[-.+:\w]+)/$', 'application_detail',46 url(r'^applications/(?P<package_name>[-.+:\w]+)/$', 'application_detail',
46 name="wc-package-detail"),47 name="wc-package-detail"),
47 url(r'^applications/(?P<distro>[-.+\w]+)/(?P<package_name>[-.+:\w]+)/'48 url(r'^applications/(?P<distro>[-.+\w]+)/(?P<package_name>[-.+:\w]+)/'
48 r'reviews/$',49 r'reviews/$', 'application_reviews', name="wc-package-reviews"),
49 'application_reviews', name="wc-package-reviews"),
50 url(r'^applications/(?P<distro>[-.+\w]+)/(?P<package_name>[-.+:\w]+)/'50 url(r'^applications/(?P<distro>[-.+\w]+)/(?P<package_name>[-.+:\w]+)/'
51 r'reviews-ajax/$', 'application_reviews', kwargs={'ajax': True},51 r'reviews-ajax/$', 'application_reviews', kwargs={'ajax': True},
52 name="wc-package-reviews-ajax"),52 name="wc-package-reviews-ajax"),
5353
=== modified file 'src/webcatalog/utilities.py'
--- src/webcatalog/utilities.py 2012-06-04 10:55:44 +0000
+++ src/webcatalog/utilities.py 2012-06-06 17:47:19 +0000
@@ -26,7 +26,7 @@
26 'UserAgentString',26 'UserAgentString',
27 'WebServices',27 'WebServices',
28 'WebServiceError',28 'WebServiceError',
29 ]29]
3030
31import json31import json
32import logging32import logging
@@ -41,7 +41,7 @@
41from piston_mini_client.auth import (41from piston_mini_client.auth import (
42 BasicAuthorizer,42 BasicAuthorizer,
43 OAuthAuthorizer,43 OAuthAuthorizer,
44 )44)
45from piston_mini_client.failhandlers import APIError45from piston_mini_client.failhandlers import APIError
46from piston_mini_client.validators import ValidationException46from piston_mini_client.validators import ValidationException
47from rnrclient import RatingsAndReviewsAPI47from rnrclient import RatingsAndReviewsAPI
@@ -61,9 +61,10 @@
6161
62 @property62 @property
63 def identity_provider(self):63 def identity_provider(self):
64 return SingleSignOnAPI(service_root=settings.SSO_API_SERVICE_ROOT,64 auth = BasicAuthorizer(settings.SSO_API_AUTH_USERNAME,
65 auth=BasicAuthorizer(settings.SSO_API_AUTH_USERNAME,65 settings.SSO_API_AUTH_PASSWORD)
66 settings.SSO_API_AUTH_PASSWORD))66 return SingleSignOnAPI(
67 service_root=settings.SSO_API_SERVICE_ROOT, auth=auth)
6768
68 @property69 @property
69 def rnr_api(self):70 def rnr_api(self):
@@ -77,8 +78,8 @@
77 return cached_reviews78 return cached_reviews
7879
79 try:80 try:
80 fresh_reviews = self.rnr_api.get_reviews(packagename=package_name,81 fresh_reviews = self.rnr_api.get_reviews(
81 distroseries=distroseries, page=page)82 packagename=package_name, distroseries=distroseries, page=page)
82 except (ValidationException, APIError):83 except (ValidationException, APIError):
83 fresh_reviews = []84 fresh_reviews = []
84 cache.set(key, fresh_reviews, settings.REVIEWS_CACHE_TIMEOUT)85 cache.set(key, fresh_reviews, settings.REVIEWS_CACHE_TIMEOUT)
@@ -112,7 +113,7 @@
112 if response.getcode() == 200:113 if response.getcode() == 200:
113 data = json.loads(response.read())114 data = json.loads(response.read())
114 fresh_screenshots = [entry['large_image_url']115 fresh_screenshots = [entry['large_image_url']
115 for entry in data.get('screenshots', [])]116 for entry in data.get('screenshots', [])]
116 except (IOError, ValueError, TypeError):117 except (IOError, ValueError, TypeError):
117 pass118 pass
118 cache.set(key, fresh_screenshots, settings.REVIEWS_CACHE_TIMEOUT)119 cache.set(key, fresh_screenshots, settings.REVIEWS_CACHE_TIMEOUT)
@@ -150,12 +151,12 @@
150 token=token, consumer_key=openid_identifier)151 token=token, consumer_key=openid_identifier)
151152
152 if result:153 if result:
153 authorizer = OAuthAuthorizer(token_key=result['token'],154 authorizer = OAuthAuthorizer(
154 token_secret=result['token_secret'],155 token_key=result['token'], token_secret=result['token_secret'],
155 consumer_key=result['consumer_key'],156 consumer_key=result['consumer_key'],
156 consumer_secret=result['consumer_secret'])157 consumer_secret=result['consumer_secret'])
157 api = SingleSignOnAPI(service_root=settings.SSO_API_SERVICE_ROOT,158 api = SingleSignOnAPI(service_root=settings.SSO_API_SERVICE_ROOT,
158 auth=authorizer)159 auth=authorizer)
159 me = api.me()160 me = api.me()
160 data = {161 data = {
161 'displayname': me.displayname,162 'displayname': me.displayname,
@@ -176,7 +177,7 @@
176177
177def full_claimed_id(consumer_key):178def full_claimed_id(consumer_key):
178 return '%s/+id/%s' % (settings.OPENID_SSO_SERVER_URL.strip('/'),179 return '%s/+id/%s' % (settings.OPENID_SSO_SERVER_URL.strip('/'),
179 consumer_key)180 consumer_key)
180181
181182
182class UserAgentString(object):183class UserAgentString(object):
183184
=== modified file 'src/webcatalog/views.py'
--- src/webcatalog/views.py 2012-06-06 12:54:15 +0000
+++ src/webcatalog/views.py 2012-06-06 17:47:19 +0000
@@ -20,7 +20,7 @@
20from __future__ import (20from __future__ import (
21 absolute_import,21 absolute_import,
22 with_statement,22 with_statement,
23 )23)
2424
25import json25import json
26import operator26import operator
@@ -35,12 +35,12 @@
35from django.http import (35from django.http import (
36 HttpResponseRedirect,36 HttpResponseRedirect,
37 HttpResponse,37 HttpResponse,
38 )38)
39from django.shortcuts import (39from django.shortcuts import (
40 get_list_or_404,40 get_list_or_404,
41 get_object_or_404,41 get_object_or_404,
42 render_to_response,42 render_to_response,
43 )43)
44from django.template import RequestContext44from django.template import RequestContext
45from django.utils.translation import ugettext as _45from django.utils.translation import ugettext as _
4646
@@ -50,7 +50,7 @@
50 Department,50 Department,
51 DistroSeries,51 DistroSeries,
52 Exhibit,52 Exhibit,
53 )53)
54from webcatalog.utilities import WebServices54from webcatalog.utilities import WebServices
5555
5656
@@ -62,7 +62,7 @@
62 'index',62 'index',
63 'department_overview',63 'department_overview',
64 'search',64 'search',
65 ]65]
6666
6767
68def _get_page_num_from_request(request, paginator):68def _get_page_num_from_request(request, paginator):
@@ -91,9 +91,10 @@
91 apps = Application.objects.filter(is_latest=True)91 apps = Application.objects.filter(is_latest=True)
92 apps = apps.filter(reduce(operator.or_, ors)).order_by('name')92 apps = apps.filter(reduce(operator.or_, ors)).order_by('name')
9393
94 crumbs = [{'name': 'All Apps', 'url': reverse('wc-index')},94 crumbs = [
95 {'name': 'Search results', 'url': request.build_absolute_uri()},95 {'name': 'All Apps', 'url': reverse('wc-index')},
96 ]96 {'name': 'Search results', 'url': request.build_absolute_uri()},
97 ]
9798
98 paginator = Paginator(apps, settings.PAGE_BATCH_SIZE)99 paginator = Paginator(apps, settings.PAGE_BATCH_SIZE)
99 page_num = _get_page_num_from_request(request, paginator)100 page_num = _get_page_num_from_request(request, paginator)
@@ -104,16 +105,15 @@
104 'breadcrumbs': crumbs,105 'breadcrumbs': crumbs,
105 'available_distroseries': DistroSeries.objects.order_by('-code_name'),106 'available_distroseries': DistroSeries.objects.order_by('-code_name'),
106 'distroseries': distro,107 'distroseries': distro,
107 })108 })
108 return render_to_response('webcatalog/search_results.html',109 return render_to_response('webcatalog/search_results.html',
109 context_instance=context)110 context_instance=context)
110111
111112
112def index(request):113def index(request):
113 depts = Department.objects.filter(parent=None).order_by('name')114 depts = Department.objects.filter(parent=None).order_by('name')
114 depts = depts.order_by('name')115 qs = Q(display=True) | Q(display=None, published=True,)
115 exhibits = list(Exhibit.objects.filter(Q(display=True) |116 exhibits = list(Exhibit.objects.filter(qs).order_by('weight'))
116 Q(display=None, published=True,)).order_by('weight'))
117 featured_apps = [Application.objects.find_best(package_name=app)117 featured_apps = [Application.objects.find_best(package_name=app)
118 for app in settings.FEATURED_APPS]118 for app in settings.FEATURED_APPS]
119 featured_apps = [x for x in featured_apps if x]119 featured_apps = [x for x in featured_apps if x]
@@ -138,7 +138,7 @@
138 'top_rated_apps': top_rated,138 'top_rated_apps': top_rated,
139 })139 })
140 return render_to_response('webcatalog/index.html',140 return render_to_response('webcatalog/index.html',
141 context_instance=context)141 context_instance=context)
142142
143143
144def department_overview(request, dept_slug_or_id=None, distro=None):144def department_overview(request, dept_slug_or_id=None, distro=None):
@@ -159,15 +159,16 @@
159 paginator = Paginator(apps, settings.PAGE_BATCH_SIZE)159 paginator = Paginator(apps, settings.PAGE_BATCH_SIZE)
160 page_num = _get_page_num_from_request(request, paginator)160 page_num = _get_page_num_from_request(request, paginator)
161161
162 context = RequestContext(request, dict={'dept': dept,162 context = {
163 'dept': dept,
163 'subdepts': subdepts,164 'subdepts': subdepts,
164 'page': paginator.page(page_num),165 'page': paginator.page(page_num),
165 'breadcrumbs': dept.crumbs(),166 'breadcrumbs': dept.crumbs(),
166 'available_distroseries': DistroSeries.objects.order_by('-code_name'),167 'available_distroseries': DistroSeries.objects.order_by('-code_name'),
167 'distroseries': distro,168 'distroseries': distro,
168 })169 }
169 return render_to_response('webcatalog/department_overview.html',170 return render_to_response('webcatalog/department_overview.html',
170 context_instance=context)171 context_instance=RequestContext(request, context))
171172
172173
173def application_list(request):174def application_list(request):
@@ -185,9 +186,10 @@
185186
186 depts = Department.objects.filter(parent=None).order_by('name')187 depts = Department.objects.filter(parent=None).order_by('name')
187188
189 context = RequestContext(request,
190 dict(applications=applications, depts=depts))
188 return render_to_response('webcatalog/application_list.html',191 return render_to_response('webcatalog/application_list.html',
189 context_instance=RequestContext(request,192 context_instance=context)
190 dict(applications=applications, depts=depts)))
191193
192194
193def application_detail(request, package_name, distro=None):195def application_detail(request, package_name, distro=None):
@@ -212,7 +214,8 @@
212214
213 hib_apps = getattr(settings, 'HIB_APPS', [])215 hib_apps = getattr(settings, 'HIB_APPS', [])
214216
215 atts = {'application': app,217 atts = {
218 'application': app,
216 'available_distroseries': app.available_distroseries(),219 'available_distroseries': app.available_distroseries(),
217 'breadcrumbs': app.crumbs(),220 'breadcrumbs': app.crumbs(),
218 'distroseries': distro,221 'distroseries': distro,
@@ -221,7 +224,7 @@
221 'email_form': form,224 'email_form': form,
222 'debtags': debtags,225 'debtags': debtags,
223 'display_hib_widget': app.package_name in hib_apps226 'display_hib_widget': app.package_name in hib_apps
224 }227 }
225228
226 return render_to_response(229 return render_to_response(
227 'webcatalog/application_detail.html', RequestContext(230 'webcatalog/application_detail.html', RequestContext(
@@ -235,12 +238,12 @@
235 # unity-lens-utilities, probably via a myapps PPA as well as extras?).238 # unity-lens-utilities, probably via a myapps PPA as well as extras?).
236 # Don't break when this happens.239 # Don't break when this happens.
237 apps = get_list_or_404(Application, package_name=package_name,240 apps = get_list_or_404(Application, package_name=package_name,
238 distroseries__code_name=distro)241 distroseries__code_name=distro)
239 app = apps[0]242 app = apps[0]
240243
241 # XXX michaeln 2011-09-15 bug=851662 Better review language options.244 # XXX michaeln 2011-09-15 bug=851662 Better review language options.
242 reviews = WebServices().get_reviews_for_package(package_name,245 reviews = WebServices().get_reviews_for_package(
243 distroseries=distro, page=page)246 package_name, distroseries=distro, page=page)
244247
245 context = dict(application=app, reviews=reviews)248 context = dict(application=app, reviews=reviews)
246 if ajax:249 if ajax:
@@ -277,8 +280,7 @@
277def application_screenshots(request, package_name):280def application_screenshots(request, package_name):
278 app = Application.objects.find_best_or_404(package_name=package_name)281 app = Application.objects.find_best_or_404(package_name=package_name)
279 screenshots = WebServices().get_screenshots_for_package(package_name)282 screenshots = WebServices().get_screenshots_for_package(package_name)
280 return HttpResponse(json.dumps(screenshots),283 return HttpResponse(json.dumps(screenshots), mimetype='application/json')
281 mimetype='application/json')
282284
283285
284def combo_view(request):286def combo_view(request):
@@ -291,8 +293,9 @@
291 content_type = "text/javascript"293 content_type = "text/javascript"
292 elif fnames[0].endswith(".css"):294 elif fnames[0].endswith(".css"):
293 content_type = "text/css"295 content_type = "text/css"
294 content = combine_files(fnames, os.path.abspath(settings.CONVOY_ROOT),296 content = combine_files(
295 resource_prefix=settings.MEDIA_URL, rewrite_urls=True)297 fnames, os.path.abspath(settings.CONVOY_ROOT),
298 resource_prefix=settings.MEDIA_URL, rewrite_urls=True)
296 # We're turning the generator returned by combine_files into a string299 # We're turning the generator returned by combine_files into a string
297 # here since GZipMiddleware would consume it if not. See Bug #822888.300 # here since GZipMiddleware would consume it if not. See Bug #822888.
298 return HttpResponse(301 return HttpResponse(
299302
=== modified file 'src/webcatalog/wsgi.py'
--- src/webcatalog/wsgi.py 2012-03-30 13:22:36 +0000
+++ src/webcatalog/wsgi.py 2012-06-06 17:47:19 +0000
@@ -37,6 +37,6 @@
37 logging.config.fileConfig(settings.WEBAPP_LOGGING_CONFIG)37 logging.config.fileConfig(settings.WEBAPP_LOGGING_CONFIG)
38 oops_dir = getattr(settings, 'OOPS_DIR', '/tmp')38 oops_dir = getattr(settings, 'OOPS_DIR', '/tmp')
39 oops_app = OopsWare(WSGIHandler(), oops_dir=oops_dir,39 oops_app = OopsWare(WSGIHandler(), oops_dir=oops_dir,
40 key=appserver_id, hide_meta=True)40 key=appserver_id, hide_meta=True)
41 oops_app.serial = OOPSRFC822Serializer(appserver_id, oops_dir, None)41 oops_app.serial = OOPSRFC822Serializer(appserver_id, oops_dir, None)
42 return oops_app42 return oops_app

Subscribers

People subscribed via source and target branches