Merge lp:~lukasz-czyzykowski/ubuntu-webcatalog/upgrade-to-django-1.5 into lp:ubuntu-webcatalog

Proposed by Łukasz Czyżykowski
Status: Merged
Approved by: Łukasz Czyżykowski
Approved revision: 199
Merged at revision: 179
Proposed branch: lp:~lukasz-czyzykowski/ubuntu-webcatalog/upgrade-to-django-1.5
Merge into: lp:ubuntu-webcatalog
Diff against target: 743 lines (+96/-76)
34 files modified
django_project/config/main.cfg (+4/-5)
django_project/urls.py (+4/-3)
fabtasks/django.py (+3/-9)
setup.py (+3/-2)
src/webcatalog/api/__init__.py (+14/-0)
src/webcatalog/api/handlers.py (+7/-0)
src/webcatalog/auth.py (+3/-1)
src/webcatalog/management/commands/cleanup.py (+3/-0)
src/webcatalog/management/commands/import_ratings_stats.py (+4/-2)
src/webcatalog/migrations/0015_add_applicationmedia.py (+2/-2)
src/webcatalog/migrations/0016_populate_application_media.py (+1/-1)
src/webcatalog/models/applications.py (+2/-2)
src/webcatalog/schema.py (+1/-3)
src/webcatalog/templates/404.html (+1/-1)
src/webcatalog/templates/light/index.1col.html (+1/-1)
src/webcatalog/templates/webcatalog/app_carousel_widget.html (+2/-2)
src/webcatalog/templates/webcatalog/application_detail.html (+7/-7)
src/webcatalog/templates/webcatalog/application_list_snippet.html (+2/-2)
src/webcatalog/templates/webcatalog/base.html (+3/-3)
src/webcatalog/templates/webcatalog/department_overview.html (+1/-1)
src/webcatalog/templates/webcatalog/department_overview_snippet.html (+1/-1)
src/webcatalog/templates/webcatalog/exhibits_widget.html (+1/-1)
src/webcatalog/templates/webcatalog/featured_apps_widget.html (+1/-1)
src/webcatalog/templates/webcatalog/index.html (+3/-3)
src/webcatalog/templates/webcatalog/recommended_apps_widget.html (+1/-1)
src/webcatalog/templates/webcatalog/search_results.html (+1/-1)
src/webcatalog/templates/webcatalog/task_list.html (+2/-2)
src/webcatalog/templates/webcatalog/top_rated_apps_widget.html (+1/-1)
src/webcatalog/tests/factory.py (+3/-1)
src/webcatalog/tests/test_commands.py (+10/-8)
src/webcatalog/tests/test_preflight.py (+1/-1)
src/webcatalog/tests/test_views.py (+1/-1)
src/webcatalog/views.py (+2/-2)
test_requirements.txt (+0/-5)
To merge this branch: bzr merge lp:~lukasz-czyzykowski/ubuntu-webcatalog/upgrade-to-django-1.5
Reviewer Review Type Date Requested Status
Michael Nelson (community) Approve
Review via email: mp+158009@code.launchpad.net

Commit message

Upgrade to Django 1.5.1

Description of the change

Upgrade to Django 1.5.1

To post a comment you must log in.
Revision history for this message
Michael Nelson (michael.nelson) wrote :

12:54 <noodles> Hey there. Just looking at https://code.launchpad.net/~lukasz-czyzykowski/ubuntu-webcatalog/upgrade-to-django-1.5/+merge/158009
12:54 <noodles> Did you have that same piston surgery in the sca branch? I think I saw it and had a thought, but forgot to comment...
12:55 <noodles> Why wouldn't we fix that it piston instead? (I mean, update piston to use json rather than simplejson). Rather than doing patch-work on all of our apps?
12:58 <lukasz> noodles: I did that for all apps
12:58 <lukasz> noodles: patching seemed a quicker way to the end result than fixing piston
12:58 <lukasz> noodles: but I would really like to fix that dead project
13:01 <noodles> Yeah, it sounds quicker initially, but looks like more work in the long run.
13:01 <noodles> Also, what's the private attribute setting for 'HttpResponse._is_string = True' around line 152-54
13:02 <lukasz> another piston backward compatibility
13:03 <noodles> Hrm... do you mean, we could include the fix in an updated piston also?
13:03 <lukasz> it expects this attribute on the response object, and we never return response with iterator content, so that's why it's hardcoded
13:03 <lukasz> noodles: yup
13:03 <noodles> Do you want me to update piston?
13:04 <lukasz> noodles: I can do it, patches for all of the problems are on bitbucket
13:04 <noodles> Ah, sweet.
13:04 <noodles> Ah of course...
13:04 <lukasz> where do we store patched version?
13:04 <noodles> I was thinking we were talking about piston-mini-client (which is easy for us to update)....
13:04 <lukasz> no, that's django-piston
13:04 <noodles> Yeah,
13:05 <lukasz> which needs to be fixed
13:05 <lukasz> https://bitbucket.org/jespern/django-piston/pull-requests
13:05 <noodles> In which case, +1 for your work-arounds, just include a comment on that previous one.
13:05 <noodles> l152-154
13:05 <lukasz> HttpResponse?
13:05 <lukasz> ok

review: Approve
199. By Łukasz Czyżykowski

Added comment about _is_string attribute on http responses in the api module.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'django_project/config/main.cfg'
--- django_project/config/main.cfg 2013-02-28 16:23:58 +0000
+++ django_project/config/main.cfg 2013-04-15 13:23:28 +0000
@@ -37,6 +37,9 @@
37 webcatalog.middleware.exception.LogExceptionMiddleware37 webcatalog.middleware.exception.LogExceptionMiddleware
38 django.middleware.cache.FetchFromCacheMiddleware38 django.middleware.cache.FetchFromCacheMiddleware
39fixture_dirs =39fixture_dirs =
40template_loaders = django.template.loaders.filesystem.Loader
41 django.template.loaders.app_directories.Loader
42 django.template.loaders.eggs.Loader
4043
41secret_key = eepu9Av5ixage9ahhodovahfaiFoorodahf6keip3eichaeW9f44secret_key = eepu9Av5ixage9ahhodovahfaiFoorodahf6keip3eichaeW9f
42template_debug = %(debug)s45template_debug = %(debug)s
@@ -58,15 +61,11 @@
58admin_media_prefix = /assets/admin/61admin_media_prefix = /assets/admin/
59test_runner = djcelery.contrib.test_runner.CeleryTestSuiteRunner62test_runner = djcelery.contrib.test_runner.CeleryTestSuiteRunner
6063
61# Django-1.1 backwards compatibility
62database_engine = sqlite3
63database_name = webcatalog.db
64
65[django_databases]64[django_databases]
66default = default_database65default = default_database
6766
68[default_database]67[default_database]
69engine = sqlite368engine = django.db.backends.sqlite3
70name = webcatalog.db69name = webcatalog.db
7170
72[django_logging]71[django_logging]
7372
=== modified file 'django_project/urls.py'
--- django_project/urls.py 2013-02-28 16:23:58 +0000
+++ django_project/urls.py 2013-04-15 13:23:28 +0000
@@ -16,11 +16,12 @@
16# along with this program. If not, see <http://www.gnu.org/licenses/>.16# along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
18import preflight18import preflight
19from django.conf.urls.defaults import patterns, include, url19
20from django.conf.urls import patterns, include, url
20from django.conf import settings21from django.conf import settings
21from django.contrib import admin22from django.contrib import admin
22from django.contrib.auth.views import logout23from django.contrib.auth.views import logout
23from django.views.generic.simple import redirect_to24from django.views.generic import RedirectView
2425
25admin.autodiscover()26admin.autodiscover()
26preflight.autodiscover()27preflight.autodiscover()
@@ -33,7 +34,7 @@
33 url(r'^cat/', include('webcatalog.urls')),34 url(r'^cat/', include('webcatalog.urls')),
34 url(r'^admin/', include(admin.site.urls)),35 url(r'^admin/', include(admin.site.urls)),
35 (r'^preflight/$', include('preflight.urls')),36 (r'^preflight/$', include('preflight.urls')),
36 url(r'^$', redirect_to, {'url': '/cat/'}),37 url(r'^$', RedirectView.as_view(url='/cat/')),
3738
38 # OpenID views39 # OpenID views
39 (r'^openid/', include('django_openid_auth.urls')),40 (r'^openid/', include('django_openid_auth.urls')),
4041
=== modified file 'fabtasks/django.py'
--- fabtasks/django.py 2011-09-12 13:37:24 +0000
+++ fabtasks/django.py 2013-04-15 13:23:28 +0000
@@ -23,6 +23,7 @@
23from ConfigParser import ConfigParser23from ConfigParser import ConfigParser
24from xml.etree import ElementTree as et24from xml.etree import ElementTree as et
2525
26
26def manage(command, *args):27def manage(command, *args):
27 """Run manage.py command"""28 """Run manage.py command"""
28 local("virtualenv/bin/python django_project/manage.py {0} {1}".format(29 local("virtualenv/bin/python django_project/manage.py {0} {1}".format(
@@ -34,15 +35,10 @@
34 spec = "webcatalog"35 spec = "webcatalog"
35 if pg:36 if pg:
36 local("virtualenv/bin/pip install psycopg2==2.4.1")37 local("virtualenv/bin/pip install psycopg2==2.4.1")
37 conf = {
38 'database_name': "uwc",
39 'database_engine': "postgresql_psycopg2",
40 'database_user': "postgres",
41 }
42 conf_db = {38 conf_db = {
43 'engine': "postgresql_psycopg2",39 'engine': "django.db.backends.postgresql_psycopg2",
44 'name': "uwc",40 'name': "uwc",
45 'database_user': "postgres"41 'user': "postgres"
46 }42 }
47 conf_file = "django_project/local.cfg"43 conf_file = "django_project/local.cfg"
48 parser = ConfigParser()44 parser = ConfigParser()
@@ -51,8 +47,6 @@
51 parser.read([conf_file])47 parser.read([conf_file])
52 if not parser.has_section('django'):48 if not parser.has_section('django'):
53 parser.add_section('django')49 parser.add_section('django')
54 for name, value in conf.items():
55 parser.set('django', name, value)
56 if not parser.has_section('default_database'):50 if not parser.has_section('default_database'):
57 parser.add_section('default_database')51 parser.add_section('default_database')
58 for name, value in conf_db.items():52 for name, value in conf_db.items():
5953
=== modified file 'setup.py'
--- setup.py 2013-02-28 16:23:58 +0000
+++ setup.py 2013-04-15 13:23:28 +0000
@@ -1,6 +1,7 @@
1import os1import os
2from setuptools import setup, find_packages2from setuptools import setup, find_packages
33
4
4def find_packages_data(start_dir):5def find_packages_data(start_dir):
5 packages = {}6 packages = {}
6 for package_name in os.listdir(start_dir):7 for package_name in os.listdir(start_dir):
@@ -35,9 +36,9 @@
35 install_requires = [36 install_requires = [
36 'django',37 'django',
37 'setuptools',38 'setuptools',
38 'south==0.7.3',39 'south==0.7.6',
39 'configglue==1.0.1',40 'configglue==1.0.1',
40 'django-configglue==0.6.1',41 'django-configglue==0.7',
41 'django-openid-auth==0.2',42 'django-openid-auth==0.2',
42 'django-piston==0.2.3',43 'django-piston==0.2.3',
43 'django-preflight',44 'django-preflight',
4445
=== modified file 'src/webcatalog/api/__init__.py'
--- src/webcatalog/api/__init__.py 2011-09-12 13:37:24 +0000
+++ src/webcatalog/api/__init__.py 2013-04-15 13:23:28 +0000
@@ -13,3 +13,17 @@
13#13#
14# You should have received a copy of the GNU Affero General Public License14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17# Bit of surgery on pison internals, this fixes
18# https://github.com/simplejson/simplejson/issues/37
19
20import json
21import simplejson
22
23from piston.utils import Mimer
24from piston import emitters
25
26emitters.simplejson = json
27
28Mimer.unregister(simplejson.loads)
29Mimer.register(json.loads, ('application/json',))
1630
=== modified file 'src/webcatalog/api/handlers.py'
--- src/webcatalog/api/handlers.py 2012-09-17 15:55:15 +0000
+++ src/webcatalog/api/handlers.py 2013-04-15 13:23:28 +0000
@@ -41,6 +41,13 @@
41)41)
42from .forms import MachineCreateUpdateForm, MachineUpdatePackagesForm42from .forms import MachineCreateUpdateForm, MachineUpdatePackagesForm
4343
44# django-piston (outdated bit of software) expects those attributes to
45# determine if the resonse content is iterator or not. Here we never
46# use that possibliblit, so hardcoding the attribute.
47HttpResponse._is_string = True
48HttpResponseNotFound._is_string = True
49HttpResponseBadRequest._is_string = True
50
4451
45class ServerStatusHandler(BaseHandler):52class ServerStatusHandler(BaseHandler):
46 allowed_methods = ('GET',)53 allowed_methods = ('GET',)
4754
=== modified file 'src/webcatalog/auth.py'
--- src/webcatalog/auth.py 2012-06-30 00:09:12 +0000
+++ src/webcatalog/auth.py 2013-04-15 13:23:28 +0000
@@ -24,6 +24,7 @@
24__all__ = [24__all__ = [
25 'SSOOAuthAuthentication',25 'SSOOAuthAuthentication',
26]26]
27import pytz
2728
28from datetime import datetime, timedelta29from datetime import datetime, timedelta
29from django.conf import settings30from django.conf import settings
@@ -100,7 +101,8 @@
100 tokens = Token.objects.filter(token=oauthtoken,101 tokens = Token.objects.filter(token=oauthtoken,
101 consumer__key=consumer_key)102 consumer__key=consumer_key)
102 if (len(tokens) == 0 or103 if (len(tokens) == 0 or
103 tokens[0].updated_at < datetime.now() - TOKEN_CACHE_EXPIRY):104 tokens[0].updated_at < (
105 datetime.now(pytz.utc) - TOKEN_CACHE_EXPIRY)):
104 pieces = web_services.get_data_for_account(106 pieces = web_services.get_data_for_account(
105 token=oauthtoken, openid_identifier=consumer_key,107 token=oauthtoken, openid_identifier=consumer_key,
106 signature=request.get_parameter('oauth_signature'))108 signature=request.get_parameter('oauth_signature'))
107109
=== modified file 'src/webcatalog/management/commands/cleanup.py'
--- src/webcatalog/management/commands/cleanup.py 2012-09-11 14:19:39 +0000
+++ src/webcatalog/management/commands/cleanup.py 2013-04-15 13:23:28 +0000
@@ -27,6 +27,7 @@
2727
28try:28try:
29 import psycopg229 import psycopg2
30 psycopg2
30 psycopg2_available = True31 psycopg2_available = True
31except ImportError:32except ImportError:
32 psycopg2_available = False33 psycopg2_available = False
@@ -165,6 +166,8 @@
165 batch_size -= batch_size_wobble166 batch_size -= batch_size_wobble
166 elif actual_batch_time < target_batch_time * 0.9:167 elif actual_batch_time < target_batch_time * 0.9:
167 batch_size += batch_size_wobble168 batch_size += batch_size_wobble
169 if batch_size < 1:
170 batch_size = 1
168171
169 def output(self, message, level=None, flush=False):172 def output(self, message, level=None, flush=False):
170 if hasattr(self, 'stdout'):173 if hasattr(self, 'stdout'):
171174
=== modified file 'src/webcatalog/management/commands/import_ratings_stats.py'
--- src/webcatalog/management/commands/import_ratings_stats.py 2012-12-03 16:25:55 +0000
+++ src/webcatalog/management/commands/import_ratings_stats.py 2013-04-15 13:23:28 +0000
@@ -18,6 +18,8 @@
18"""Management command to import review statistics for a distroseries."""18"""Management command to import review statistics for a distroseries."""
1919
20import json20import json
21import pytz
22
21from datetime import (23from datetime import (
22 datetime,24 datetime,
23 timedelta,25 timedelta,
@@ -87,7 +89,7 @@
87 def update_last_import_timestamp(self, distroseries):89 def update_last_import_timestamp(self, distroseries):
88 review_stats_import, created = ReviewStatsImport.objects.get_or_create(90 review_stats_import, created = ReviewStatsImport.objects.get_or_create(
89 distroseries=distroseries)91 distroseries=distroseries)
90 review_stats_import.last_import = datetime.utcnow()92 review_stats_import.last_import = datetime.now(pytz.utc)
91 review_stats_import.save()93 review_stats_import.save()
9294
93 def download_review_stats(self, distroseries):95 def download_review_stats(self, distroseries):
@@ -99,7 +101,7 @@
99 if other_imports:101 if other_imports:
100 stats_import = other_imports[0]102 stats_import = other_imports[0]
101 time_since_last_import = (103 time_since_last_import = (
102 datetime.utcnow() - stats_import.last_import)104 datetime.now(pytz.utc) - stats_import.last_import)
103 if time_since_last_import < timedelta(days=1):105 if time_since_last_import < timedelta(days=1):
104 num_days = 1106 num_days = 1
105 elif time_since_last_import < timedelta(days=3):107 elif time_since_last_import < timedelta(days=3):
106108
=== modified file 'src/webcatalog/migrations/0015_add_applicationmedia.py'
--- src/webcatalog/migrations/0015_add_applicationmedia.py 2012-03-19 08:18:57 +0000
+++ src/webcatalog/migrations/0015_add_applicationmedia.py 2013-04-15 13:23:28 +0000
@@ -16,7 +16,7 @@
16 self.gf('django.db.models.fields.CharField')(max_length=16)),16 self.gf('django.db.models.fields.CharField')(max_length=16)),
17 ('url',17 ('url',
18 self.gf('django.db.models.fields.URLField')(18 self.gf('django.db.models.fields.URLField')(
19 max_length=200, verify_exists=False)),19 max_length=200)),
20 ))20 ))
21 db.send_create_signal('webcatalog', ['ApplicationMedia'])21 db.send_create_signal('webcatalog', ['ApplicationMedia'])
2222
@@ -66,7 +66,7 @@
66 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),66 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
67 'media_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),67 'media_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
68 'url': ('django.db.models.fields.URLField', [],68 'url': ('django.db.models.fields.URLField', [],
69 {'max_length': '200', 'verify_exists': 'False'})69 {'max_length': '200'})
70 },70 },
71 'webcatalog.application': {71 'webcatalog.application': {
72 'Meta': {'unique_together': "(('distroseries', 'archive_id'),)", 'object_name': 'Application'},72 'Meta': {'unique_together': "(('distroseries', 'archive_id'),)", 'object_name': 'Application'},
7373
=== modified file 'src/webcatalog/migrations/0016_populate_application_media.py'
--- src/webcatalog/migrations/0016_populate_application_media.py 2012-03-19 08:18:57 +0000
+++ src/webcatalog/migrations/0016_populate_application_media.py 2013-04-15 13:23:28 +0000
@@ -94,7 +94,7 @@
94 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),94 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
95 'media_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),95 'media_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
96 'url': ('django.db.models.fields.URLField', [],96 'url': ('django.db.models.fields.URLField', [],
97 {'max_length': '200', 'verify_exists': 'False'})97 {'max_length': '200'})
98 },98 },
99 'webcatalog.consumer': {99 'webcatalog.consumer': {
100 'Meta': {'object_name': 'Consumer'},100 'Meta': {'object_name': 'Consumer'},
101101
=== modified file 'src/webcatalog/models/applications.py'
--- src/webcatalog/models/applications.py 2012-09-06 14:07:55 +0000
+++ src/webcatalog/models/applications.py 2013-04-15 13:23:28 +0000
@@ -226,7 +226,7 @@
226226
227 application = models.ForeignKey(Application)227 application = models.ForeignKey(Application)
228 media_type = models.CharField(max_length=16, choices=MEDIA_CHOICES)228 media_type = models.CharField(max_length=16, choices=MEDIA_CHOICES)
229 url = models.URLField(verify_exists=False)229 url = models.URLField()
230230
231 def __unicode__(self):231 def __unicode__(self):
232 return "{0} for {1}".format(self.media_type, self.application)232 return "{0} for {1}".format(self.media_type, self.application)
@@ -286,7 +286,7 @@
286 sca_id = models.IntegerField()286 sca_id = models.IntegerField()
287 package_names = models.CharField(max_length=1024)287 package_names = models.CharField(max_length=1024)
288 banner_url = models.CharField(max_length=1024)288 banner_url = models.CharField(max_length=1024)
289 click_url = models.URLField(verify_exists=False, default='')289 click_url = models.URLField(default='')
290 distroseries = models.ManyToManyField(DistroSeries)290 distroseries = models.ManyToManyField(DistroSeries)
291 html = models.TextField()291 html = models.TextField()
292 date_created = models.DateTimeField(auto_now_add=True)292 date_created = models.DateTimeField(auto_now_add=True)
293293
=== modified file 'src/webcatalog/schema.py'
--- src/webcatalog/schema.py 2013-02-28 16:23:58 +0000
+++ src/webcatalog/schema.py 2013-04-15 13:23:28 +0000
@@ -17,13 +17,11 @@
1717
18"""configglue schema for the Apps Directory."""18"""configglue schema for the Apps Directory."""
1919
20
21import django
22from configglue import schema20from configglue import schema
23from django_configglue.schema import schemas21from django_configglue.schema import schemas
24from oops_dictconfig.configglue_options import OopsOption22from oops_dictconfig.configglue_options import OopsOption
2523
26DjangoSchema = schemas.get('1.3.1')24DjangoSchema = schemas.get('1.5.1')
2725
2826
29class WebCatalogSchema(DjangoSchema):27class WebCatalogSchema(DjangoSchema):
3028
=== modified file 'src/webcatalog/templates/404.html'
--- src/webcatalog/templates/404.html 2012-03-19 15:17:36 +0000
+++ src/webcatalog/templates/404.html 2013-04-15 13:23:28 +0000
@@ -11,7 +11,7 @@
11{% block header %}{% endblock %}11{% block header %}{% endblock %}
1212
13{% block head_extra %}13{% block head_extra %}
14 <link rel="stylesheet" type="text/css" href="{% url wc-combo %}?light/css/reset.css&light/css/styles.css&light/css/404.css&light/css/forms.css"/>14 <link rel="stylesheet" type="text/css" href="{% url 'wc-combo' %}?light/css/reset.css&light/css/styles.css&light/css/404.css&light/css/forms.css"/>
15{% endblock %}15{% endblock %}
1616
17{% block content_container %}17{% block content_container %}
1818
=== modified file 'src/webcatalog/templates/light/index.1col.html'
--- src/webcatalog/templates/light/index.1col.html 2012-06-09 02:15:00 +0000
+++ src/webcatalog/templates/light/index.1col.html 2013-04-15 13:23:28 +0000
@@ -6,7 +6,7 @@
6 <link rel="shortcut icon" href="{{ STATIC_URL }}images/favicon.ico" type="image/x-icon" />6 <link rel="shortcut icon" href="{{ STATIC_URL }}images/favicon.ico" type="image/x-icon" />
7 <link rel="stylesheet" type="text/css" media="all" href="https://fonts.googleapis.com/css?family=Ubuntu:300,300italic,400,400italic" />7 <link rel="stylesheet" type="text/css" media="all" href="https://fonts.googleapis.com/css?family=Ubuntu:300,300italic,400,400italic" />
8 {% block head_extra %}8 {% block head_extra %}
9 <link rel="stylesheet" type="text/css" href="{% url wc-combo %}?light/css/reset.css&light/css/styles.css&light/css/forms.css"/>9 <link rel="stylesheet" type="text/css" href="{% url 'wc-combo' %}?light/css/reset.css&light/css/styles.css&light/css/forms.css"/>
10 {% endblock %}10 {% endblock %}
11 </head>11 </head>
12 <body {% block body_extra %}{% endblock %}>12 <body {% block body_extra %}{% endblock %}>
1313
=== modified file 'src/webcatalog/templates/webcatalog/app_carousel_widget.html'
--- src/webcatalog/templates/webcatalog/app_carousel_widget.html 2012-04-19 09:49:41 +0000
+++ src/webcatalog/templates/webcatalog/app_carousel_widget.html 2013-04-15 13:23:28 +0000
@@ -14,8 +14,8 @@
14 <table class="apps"><tr>14 <table class="apps"><tr>
15 {% for app in apps %}15 {% for app in apps %}
16 <td{% if forloop.counter|divisibleby:3 %} class="lastcol"{% endif %}>16 <td{% if forloop.counter|divisibleby:3 %} class="lastcol"{% endif %}>
17 <a href="{% url wc-package-detail package_name=app.package_name %}"><img class="icon64" src="{{ app.icon_url_or_default }}"/></a>17 <a href="{% url 'wc-package-detail' package_name=app.package_name %}"><img class="icon64" src="{{ app.icon_url_or_default }}"/></a>
18 <h4><a href="{% url wc-package-detail package_name=app.package_name %}">{{ app.name }}</a></h4>18 <h4><a href="{% url 'wc-package-detail' package_name=app.package_name %}">{{ app.name }}</a></h4>
19 <p>{{ app.departments.all.0.name }} | <b>{% if app.price %}${{ app.price }}{% else %}FREE{% endif %}</b></p>19 <p>{{ app.departments.all.0.name }} | <b>{% if app.price %}${{ app.price }}{% else %}FREE{% endif %}</b></p>
20 <p>{{ app.comment }}</p>20 <p>{{ app.comment }}</p>
21 {% if ratings %}21 {% if ratings %}
2222
=== modified file 'src/webcatalog/templates/webcatalog/application_detail.html'
--- src/webcatalog/templates/webcatalog/application_detail.html 2012-09-06 10:38:18 +0000
+++ src/webcatalog/templates/webcatalog/application_detail.html 2013-04-15 13:23:28 +0000
@@ -5,13 +5,13 @@
5{% block title %}{{ application.name }} &mdash; Ubuntu Apps Directory{% endblock %}5{% block title %}{{ application.name }} &mdash; Ubuntu Apps Directory{% endblock %}
6{% block header %}{{ application.name }}{% endblock %}6{% block header %}{{ application.name }}{% endblock %}
7{% block head_extra %}7{% block head_extra %}
8<link rel="stylesheet" type="text/css" href="{% url wc-combo %}?light/css/reset.css&light/css/styles.css&css/webcatalog.css&light/css/forms.css&css/carousel.css"/>8<link rel="stylesheet" type="text/css" href="{% url 'wc-combo' %}?light/css/reset.css&light/css/styles.css&css/webcatalog.css&light/css/forms.css&css/carousel.css"/>
9<script src="{% url wc-combo %}?yui/3.4.0/build/yui/yui-min.js&js/carousel.js&js/screenshots.js"></script>9<script src="{% url 'wc-combo' %}?yui/3.4.0/build/yui/yui-min.js&js/carousel.js&js/screenshots.js"></script>
10<script>10<script>
11YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('io-base', 'node-base', function (Y) {11YUI({combine: true, comboBase: '{% url 'wc-combo' %}?', root: 'yui/3.4.0/build/'}).use('io-base', 'node-base', function (Y) {
1212
13 // XXX michaeln 2011-09-16 bug=851660 Autoload further batches of results.13 // XXX michaeln 2011-09-16 bug=851660 Autoload further batches of results.
14 var reviews_uri = "{% url wc-package-reviews-ajax application.distroseries.code_name application.package_name %}";14 var reviews_uri = "{% url 'wc-package-reviews-ajax' application.distroseries.code_name application.package_name %}";
15 Y.io(reviews_uri, {15 Y.io(reviews_uri, {
16 on: {16 on: {
17 complete: function(id, response){17 complete: function(id, response){
@@ -25,7 +25,7 @@
25 });25 });
26 var recommends_div = Y.one('.portlet.recommendedportlet');26 var recommends_div = Y.one('.portlet.recommendedportlet');
27 if (recommends_div){27 if (recommends_div){
28 var recommendations_uri = "{% url wc-package-recommends application.package_name %}";28 var recommendations_uri = "{% url 'wc-package-recommends' application.package_name %}";
29 Y.io(recommendations_uri, {29 Y.io(recommendations_uri, {
30 on: {30 on: {
31 complete: function(id, response){31 complete: function(id, response){
@@ -59,7 +59,7 @@
59 {% ifequal distroseries.code_name requested_series_codename %}59 {% ifequal distroseries.code_name requested_series_codename %}
60 <span>{% include "webcatalog/distroseries_snippet.html" %}</span>60 <span>{% include "webcatalog/distroseries_snippet.html" %}</span>
61 {% else %}61 {% else %}
62 <a href="{% url wc-package-detail distroseries.code_name application.package_name %}">{% include "webcatalog/distroseries_snippet.html" %}</a>62 <a href="{% url 'wc-package-detail' distroseries.code_name application.package_name %}">{% include "webcatalog/distroseries_snippet.html" %}</a>
63 {% endifequal %}</li>63 {% endifequal %}</li>
64 {% endfor %}64 {% endfor %}
65 </ul>65 </ul>
@@ -142,7 +142,7 @@
142 <div class="reviews">142 <div class="reviews">
143 <h2>{% trans "Reviews" %}</h2>143 <h2>{% trans "Reviews" %}</h2>
144 <div id="reviews_placeholder">144 <div id="reviews_placeholder">
145 <a href="{% url wc-package-reviews application.distroseries.code_name application.package_name %}">145 <a href="{% url 'wc-package-reviews' application.distroseries.code_name application.package_name %}">
146 {% blocktrans %}View the reviews for this app{% endblocktrans %}</a>146 {% blocktrans %}View the reviews for this app{% endblocktrans %}</a>
147 </div>147 </div>
148 </div>148 </div>
149149
=== modified file 'src/webcatalog/templates/webcatalog/application_list_snippet.html'
--- src/webcatalog/templates/webcatalog/application_list_snippet.html 2012-05-08 06:42:38 +0000
+++ src/webcatalog/templates/webcatalog/application_list_snippet.html 2013-04-15 13:23:28 +0000
@@ -4,11 +4,11 @@
4 <tr>4 <tr>
5 <td class="app-icon">5 <td class="app-icon">
6 6
7 <a href="{% if distroseries %}{% url wc-package-detail app.distroseries.code_name app.package_name %}{% else %}{% url wc-package-detail app.package_name %}{% endif %}"><img src="{{ app.icon_url_or_default }}" class="icon32"/></a>7 <a href="{% if distroseries %}{% url 'wc-package-detail' app.distroseries.code_name app.package_name %}{% else %}{% url 'wc-package-detail' app.package_name %}{% endif %}"><img src="{{ app.icon_url_or_default }}" class="icon32"/></a>
8 </td>8 </td>
9 <td class="app-description">9 <td class="app-description">
10 <h3>10 <h3>
11 <a href="{% if distroseries %}{% url wc-package-detail app.distroseries.code_name app.package_name %}{% else %}{% url wc-package-detail app.package_name %}{% endif %}">{{ app.name }}</a>11 <a href="{% if distroseries %}{% url 'wc-package-detail' app.distroseries.code_name app.package_name %}{% else %}{% url 'wc-package-detail' app.package_name %}{% endif %}">{{ app.name }}</a>
12 </h3>12 </h3>
13 <p>{{ app.comment }}</p>13 <p>{{ app.comment }}</p>
14 </td>14 </td>
1515
=== modified file 'src/webcatalog/templates/webcatalog/base.html'
--- src/webcatalog/templates/webcatalog/base.html 2012-06-28 14:27:43 +0000
+++ src/webcatalog/templates/webcatalog/base.html 2013-04-15 13:23:28 +0000
@@ -4,12 +4,12 @@
4{% block menus %}{% endblock %}4{% block menus %}{% endblock %}
55
6{% block head_extra %}6{% block head_extra %}
7 <link rel="stylesheet" type="text/css" href="{% url wc-combo %}?light/css/reset.css&light/css/styles.css&css/webcatalog.css&light/css/forms.css"/>7 <link rel="stylesheet" type="text/css" href="{% url 'wc-combo' %}?light/css/reset.css&light/css/styles.css&css/webcatalog.css&light/css/forms.css"/>
8{% endblock %}8{% endblock %}
99
10{% block search %}10{% block search %}
11<div id="search-box">11<div id="search-box">
12 <form id="sitesearch" action="{% url wc-search %}" method="get">12 <form id="sitesearch" action="{% url 'wc-search' %}" method="get">
13 <input type="text" maxlength="128" name="q" id="search-box-input"13 <input type="text" maxlength="128" name="q" id="search-box-input"
14 placeholder="Search for an app" title="Add some words that describe the app or the app's name."14 placeholder="Search for an app" title="Add some words that describe the app or the app's name."
15 />15 />
@@ -22,7 +22,7 @@
22<div class="footer-div">22<div class="footer-div">
23 <p class="footer-title">Legal</p>23 <p class="footer-title">Legal</p>
24 <ul>24 <ul>
25 <li><a href="{% url wc-tos %}">Terms of Service</a></li>25 <li><a href="{% url 'wc-tos' %}">Terms of Service</a></li>
26 <li><a href="https://one.ubuntu.com/privacy/">Privacy Policy</a></li>26 <li><a href="https://one.ubuntu.com/privacy/">Privacy Policy</a></li>
27 </ul>27 </ul>
28</div>28</div>
2929
=== modified file 'src/webcatalog/templates/webcatalog/department_overview.html'
--- src/webcatalog/templates/webcatalog/department_overview.html 2012-05-08 06:42:38 +0000
+++ src/webcatalog/templates/webcatalog/department_overview.html 2013-04-15 13:23:28 +0000
@@ -26,7 +26,7 @@
26 {% ifequal ds.code_name distroseries %}26 {% ifequal ds.code_name distroseries %}
27 <span>Ubuntu {{ ds.version }} ({{ ds.code_name }})</span>27 <span>Ubuntu {{ ds.version }} ({{ ds.code_name }})</span>
28 {% else %}28 {% else %}
29 <a href="{% url wc-department distro=ds.code_name dept_slug_or_id=dept.slug %}">Ubuntu {{ ds.version }} ({{ ds.code_name }})</a>29 <a href="{% url 'wc-department' distro=ds.code_name dept_slug_or_id=dept.slug %}">Ubuntu {{ ds.version }} ({{ ds.code_name }})</a>
30 {% endifequal %}</li>30 {% endifequal %}</li>
31 {% endfor %}31 {% endfor %}
32 </ul>32 </ul>
3333
=== modified file 'src/webcatalog/templates/webcatalog/department_overview_snippet.html'
--- src/webcatalog/templates/webcatalog/department_overview_snippet.html 2012-04-05 01:09:37 +0000
+++ src/webcatalog/templates/webcatalog/department_overview_snippet.html 2013-04-15 13:23:28 +0000
@@ -1,5 +1,5 @@
1<li class="department">1<li class="department">
2 <a href="{% url wc-department dept_slug_or_id=dept.slug %}">2 <a href="{% url 'wc-department' dept_slug_or_id=dept.slug %}">
3 <div class="dept-icon">3 <div class="dept-icon">
4 <img width="24" height="24"4 <img width="24" height="24"
5 src="{{ STATIC_URL }}images/dept_icons/{{ dept.slug }}.png"/>5 src="{{ STATIC_URL }}images/dept_icons/{{ dept.slug }}.png"/>
66
=== modified file 'src/webcatalog/templates/webcatalog/exhibits_widget.html'
--- src/webcatalog/templates/webcatalog/exhibits_widget.html 2012-08-21 13:47:14 +0000
+++ src/webcatalog/templates/webcatalog/exhibits_widget.html 2013-04-15 13:23:28 +0000
@@ -20,7 +20,7 @@
20 </div>20 </div>
21</div>21</div>
22<script type="text/javascript">22<script type="text/javascript">
23YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('uwc-carousel', function(Y) {23YUI({combine: true, comboBase: '{% url 'wc-combo' %}?', root: 'yui/3.4.0/build/'}).use('uwc-carousel', function(Y) {
24 var caro = new Y.uwc.Carousel({24 var caro = new Y.uwc.Carousel({
25 nodeContainer: "#exhibits-carousel",25 nodeContainer: "#exhibits-carousel",
26 controlsContainer: "#exhibits-carousel",26 controlsContainer: "#exhibits-carousel",
2727
=== modified file 'src/webcatalog/templates/webcatalog/featured_apps_widget.html'
--- src/webcatalog/templates/webcatalog/featured_apps_widget.html 2012-04-18 15:15:56 +0000
+++ src/webcatalog/templates/webcatalog/featured_apps_widget.html 2013-04-15 13:23:28 +0000
@@ -6,7 +6,7 @@
6{% endwith %}6{% endwith %}
7</div>7</div>
8<script type="text/javascript">8<script type="text/javascript">
9YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('uwc-carousel', function(Y) {9YUI({combine: true, comboBase: '{% url 'wc-combo' %}?', root: 'yui/3.4.0/build/'}).use('uwc-carousel', function(Y) {
10 var caro = new Y.uwc.Carousel({10 var caro = new Y.uwc.Carousel({
11 nodeContainer: "#featured-carousel .carousel",11 nodeContainer: "#featured-carousel .carousel",
12 controlsContainer: "#featured-carousel .carousel-controls",12 controlsContainer: "#featured-carousel .carousel-controls",
1313
=== modified file 'src/webcatalog/templates/webcatalog/index.html'
--- src/webcatalog/templates/webcatalog/index.html 2012-04-18 10:38:33 +0000
+++ src/webcatalog/templates/webcatalog/index.html 2013-04-15 13:23:28 +0000
@@ -6,8 +6,8 @@
6{% block search %}{% endblock %}6{% block search %}{% endblock %}
77
8{% block head_extra %}8{% block head_extra %}
9 <link rel="stylesheet" type="text/css" href="{% url wc-combo %}?light/css/reset.css&light/css/styles.css&css/webcatalog.css&light/css/forms.css&css/carousel.css"/>9 <link rel="stylesheet" type="text/css" href="{% url 'wc-combo' %}?light/css/reset.css&light/css/styles.css&css/webcatalog.css&light/css/forms.css&css/carousel.css"/>
10 <script src="{% url wc-combo %}?yui/3.4.0/build/yui/yui-min.js&js/carousel.js"></script>10 <script src="{% url 'wc-combo' %}?yui/3.4.0/build/yui/yui-min.js&js/carousel.js"></script>
11{% endblock %}11{% endblock %}
1212
1313
@@ -35,7 +35,7 @@
35<h3>{% trans "Search for an app" %}:</h3>35<h3>{% trans "Search for an app" %}:</h3>
3636
37<div id="search-box" class="main">37<div id="search-box" class="main">
38 <form id="sitesearch" action="{% url wc-search %}" method="get">38 <form id="sitesearch" action="{% url 'wc-search' %}" method="get">
39 <input type="text" maxlength="128" name="q" id="search-box-input"39 <input type="text" maxlength="128" name="q" id="search-box-input"
40 title="Add some words that describe the app or the app's name."/>40 title="Add some words that describe the app or the app's name."/>
41 <button type="submit" name="op" id="search-box-button"><span>go</span></button>41 <button type="submit" name="op" id="search-box-button"><span>go</span></button>
4242
=== modified file 'src/webcatalog/templates/webcatalog/recommended_apps_widget.html'
--- src/webcatalog/templates/webcatalog/recommended_apps_widget.html 2012-04-20 18:33:58 +0000
+++ src/webcatalog/templates/webcatalog/recommended_apps_widget.html 2013-04-15 13:23:28 +0000
@@ -4,7 +4,7 @@
4<ul class="portletactions">4<ul class="portletactions">
5{% for app in recommended_apps %}5{% for app in recommended_apps %}
6 <li>6 <li>
7 <a href="{% url wc-package-detail package_name=app.package_name %}">7 <a href="{% url 'wc-package-detail' package_name=app.package_name %}">
8 <div class="top-rated-stars">8 <div class="top-rated-stars">
9 {% rating_summary app.ratings_average 'small' app.ratings_total %}9 {% rating_summary app.ratings_average 'small' app.ratings_total %}
10 </div>10 </div>
1111
=== modified file 'src/webcatalog/templates/webcatalog/search_results.html'
--- src/webcatalog/templates/webcatalog/search_results.html 2012-05-08 06:42:38 +0000
+++ src/webcatalog/templates/webcatalog/search_results.html 2013-04-15 13:23:28 +0000
@@ -15,7 +15,7 @@
15 {% ifequal ds.code_name distroseries %}15 {% ifequal ds.code_name distroseries %}
16 <span>Ubuntu {{ ds.version }} ({{ ds.code_name }})</span>16 <span>Ubuntu {{ ds.version }} ({{ ds.code_name }})</span>
17 {% else %}17 {% else %}
18 <a href="{% url wc-search ds.code_name %}?q={{query}}">Ubuntu {{ ds.version }} ({{ ds.code_name }})</a>18 <a href="{% url 'wc-search' ds.code_name %}?q={{query}}">Ubuntu {{ ds.version }} ({{ ds.code_name }})</a>
19 {% endifequal %}</li>19 {% endifequal %}</li>
20 {% endfor %}20 {% endfor %}
21 </ul>21 </ul>
2222
=== modified file 'src/webcatalog/templates/webcatalog/task_list.html'
--- src/webcatalog/templates/webcatalog/task_list.html 2012-06-29 19:51:06 +0000
+++ src/webcatalog/templates/webcatalog/task_list.html 2013-04-15 13:23:28 +0000
@@ -5,7 +5,7 @@
5{% block header %}{% trans "Schedule asynchronous tasks" %}{% endblock %}5{% block header %}{% trans "Schedule asynchronous tasks" %}{% endblock %}
6{% block head_extra %}6{% block head_extra %}
7 {{ block.super }}7 {{ block.super }}
8<script src="{% url wc-combo %}?yui/3.4.0/build/yui/yui-min.js"></script>8<script src="{% url 'wc-combo' %}?yui/3.4.0/build/yui/yui-min.js"></script>
9<style type="text/css">9<style type="text/css">
10div.task button {10div.task button {
11 width: 200px;11 width: 200px;
@@ -22,7 +22,7 @@
22}22}
23</style>23</style>
24<script>24<script>
25YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('io-base', 'node-base', function (Y) {25YUI({combine: true, comboBase: '{% url 'wc-combo' %}?', root: 'yui/3.4.0/build/'}).use('io-base', 'node-base', function (Y) {
26 var check_status = function(task_id, message) {26 var check_status = function(task_id, message) {
27 var check_uri = "/cat/task_status/" + task_id + '/';27 var check_uri = "/cat/task_status/" + task_id + '/';
28 var UNREADY_STATES = ["PENDING", "RECEIVED", "STARTED", "RETRY"];28 var UNREADY_STATES = ["PENDING", "RECEIVED", "STARTED", "RETRY"];
2929
=== modified file 'src/webcatalog/templates/webcatalog/top_rated_apps_widget.html'
--- src/webcatalog/templates/webcatalog/top_rated_apps_widget.html 2012-04-18 15:15:56 +0000
+++ src/webcatalog/templates/webcatalog/top_rated_apps_widget.html 2013-04-15 13:23:28 +0000
@@ -6,7 +6,7 @@
6{% endwith %}6{% endwith %}
7</div>7</div>
8<script type="text/javascript">8<script type="text/javascript">
9YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('uwc-carousel', function(Y) {9YUI({combine: true, comboBase: '{% url 'wc-combo' %}?', root: 'yui/3.4.0/build/'}).use('uwc-carousel', function(Y) {
10 var caro = new Y.uwc.Carousel({10 var caro = new Y.uwc.Carousel({
11 nodeContainer: "#top-rated-carousel .carousel",11 nodeContainer: "#top-rated-carousel .carousel",
12 controlsContainer: "#top-rated-carousel .carousel-controls",12 controlsContainer: "#top-rated-carousel .carousel-controls",
1313
=== modified file 'src/webcatalog/tests/factory.py'
--- src/webcatalog/tests/factory.py 2012-09-06 10:08:33 +0000
+++ src/webcatalog/tests/factory.py 2013-04-15 13:23:28 +0000
@@ -20,6 +20,8 @@
20from __future__ import absolute_import20from __future__ import absolute_import
2121
22import os22import os
23import pytz
24
23from datetime import (25from datetime import (
24 datetime,26 datetime,
25 timedelta,27 timedelta,
@@ -244,7 +246,7 @@
244 def make_session(self, expire_date=None):246 def make_session(self, expire_date=None):
245 if expire_date is None:247 if expire_date is None:
246 secs = self.get_unique_integer()248 secs = self.get_unique_integer()
247 expire_date = datetime.now() + timedelta(seconds=secs)249 expire_date = datetime.now(pytz.utc) + timedelta(seconds=secs)
248 return Session.objects.create(250 return Session.objects.create(
249 session_key=self.get_unique_string(prefix='key-'),251 session_key=self.get_unique_string(prefix='key-'),
250 session_data=self.get_unique_string(prefix='session-data-'),252 session_data=self.get_unique_string(prefix='session-data-'),
251253
=== modified file 'src/webcatalog/tests/test_commands.py'
--- src/webcatalog/tests/test_commands.py 2013-02-18 21:55:09 +0000
+++ src/webcatalog/tests/test_commands.py 2013-04-15 13:23:28 +0000
@@ -22,8 +22,10 @@
22import apt22import apt
23import json23import json
24import os24import os
25import pytz
25import shutil26import shutil
26import tempfile27import tempfile
28
27from datetime import (29from datetime import (
28 datetime,30 datetime,
29 timedelta,31 timedelta,
@@ -760,7 +762,7 @@
760762
761 def test_updates_last_import_record(self):763 def test_updates_last_import_record(self):
762 onion = self.factory.make_distroseries(code_name='onion')764 onion = self.factory.make_distroseries(code_name='onion')
763 orig_timestamp = datetime(2011, 07, 18, 14, 43)765 orig_timestamp = datetime(2011, 07, 18, 14, 43, tzinfo=pytz.utc)
764 ReviewStatsImport.objects.create(766 ReviewStatsImport.objects.create(
765 distroseries=onion, last_import=orig_timestamp)767 distroseries=onion, last_import=orig_timestamp)
766768
@@ -784,7 +786,7 @@
784 # If there has been a recent import, we'll only grab the786 # If there has been a recent import, we'll only grab the
785 # relevant stats.787 # relevant stats.
786 onion = self.factory.make_distroseries(code_name='onion')788 onion = self.factory.make_distroseries(code_name='onion')
787 orig_timestamp = datetime.utcnow() - timedelta(2)789 orig_timestamp = datetime.now(pytz.utc) - timedelta(2)
788 ReviewStatsImport.objects.create(790 ReviewStatsImport.objects.create(
789 distroseries=onion, last_import=orig_timestamp)791 distroseries=onion, last_import=orig_timestamp)
790792
@@ -797,8 +799,8 @@
797 # If the download_all option is used, all stats are799 # If the download_all option is used, all stats are
798 # downloaded, rather than the optimised last X days.800 # downloaded, rather than the optimised last X days.
799 onion = self.factory.make_distroseries(code_name='onion')801 onion = self.factory.make_distroseries(code_name='onion')
800 orig_timestamp = datetime.utcnow() - timedelta(2)802 orig_timestamp = datetime.now(pytz.utc) - timedelta(2)
801 import_record = ReviewStatsImport.objects.create(803 ReviewStatsImport.objects.create(
802 distroseries=onion, last_import=orig_timestamp)804 distroseries=onion, last_import=orig_timestamp)
803805
804 call_command('import_ratings_stats', 'onion', download_all=True)806 call_command('import_ratings_stats', 'onion', download_all=True)
@@ -1093,12 +1095,12 @@
1093All done.1095All done.
1094'''1096'''
1095 actual_output = ''.join(1097 actual_output = ''.join(
1096 str(call[0][0]) for call in self.mock_stdout.write.call_args_list)1098 str(c[0][0]) for c in self.mock_stdout.write.call_args_list)
1097 self.assertEqual(expected_output, actual_output)1099 self.assertEqual(expected_output, actual_output)
10981100
1099 @skipUnless(connection.vendor == 'postgresql', "Requires postgresql")1101 @skipUnless(connection.vendor == 'postgresql', "Requires postgresql")
1100 def test_cleanup_nonces(self):1102 def test_cleanup_nonces(self):
1101 now = datetime.now()1103 now = datetime.now(pytz.utc)
1102 for i in range(8):1104 for i in range(8):
1103 created_at = now - timedelta(seconds=5000 * i)1105 created_at = now - timedelta(seconds=5000 * i)
1104 self.factory.make_nonce(created_at=created_at)1106 self.factory.make_nonce(created_at=created_at)
@@ -1120,7 +1122,7 @@
1120 self.check_expected_output()1122 self.check_expected_output()
11211123
1122 def create_django_sessions(self):1124 def create_django_sessions(self):
1123 now = datetime.now()1125 now = datetime.now(pytz.utc)
1124 for i in range(8):1126 for i in range(8):
1125 expire_date = now + timedelta(seconds=5000 * (4 - i))1127 expire_date = now + timedelta(seconds=5000 * (4 - i))
1126 self.factory.make_session(expire_date=expire_date)1128 self.factory.make_session(expire_date=expire_date)
@@ -1131,7 +1133,7 @@
11311133
1132 call_command('cleanup', 'django_session', batch_secs=0)1134 call_command('cleanup', 'django_session', batch_secs=0)
11331135
1134 self.assertEqual(0, Session.objects.count())1136 self.assertEqual(4, Session.objects.count())
11351137
11361138
1137class ImportAllAppInstallDataTestCase(TestCaseWithFactory):1139class ImportAllAppInstallDataTestCase(TestCaseWithFactory):
11381140
=== modified file 'src/webcatalog/tests/test_preflight.py'
--- src/webcatalog/tests/test_preflight.py 2012-10-17 07:46:31 +0000
+++ src/webcatalog/tests/test_preflight.py 2013-04-15 13:23:28 +0000
@@ -85,7 +85,7 @@
85 'preflight',85 'preflight',
86 ])86 ])
87 expected_checks = set([87 expected_checks = set([
88 ('validate_config', True),88 ('validate_config', False),
89 ('database', True),89 ('database', True),
90 ('rnr_available', True),90 ('rnr_available', True),
91 ('identity_provider_available', True),91 ('identity_provider_available', True),
9292
=== modified file 'src/webcatalog/tests/test_views.py'
--- src/webcatalog/tests/test_views.py 2013-03-01 16:28:52 +0000
+++ src/webcatalog/tests/test_views.py 2013-04-15 13:23:28 +0000
@@ -399,7 +399,7 @@
399399
400 self.assertNotContains(response,400 self.assertNotContains(response,
401 'Success. Your download link has been sent.')401 'Success. Your download link has been sent.')
402 self.assertContains(response, 'Enter a valid e-mail address.')402 self.assertContains(response, 'Enter a valid email address.')
403403
404 def test_version_and_label_displayed(self):404 def test_version_and_label_displayed(self):
405 app = self.factory.make_application(405 app = self.factory.make_application(
406406
=== modified file 'src/webcatalog/views.py'
--- src/webcatalog/views.py 2013-03-01 12:49:55 +0000
+++ src/webcatalog/views.py 2013-04-15 13:23:28 +0000
@@ -109,7 +109,7 @@
109 paginator = Paginator(apps, settings.PAGE_BATCH_SIZE)109 paginator = Paginator(apps, settings.PAGE_BATCH_SIZE)
110 page_num = _get_page_num_from_request(request, paginator)110 page_num = _get_page_num_from_request(request, paginator)
111111
112 context = RequestContext(request, dict={112 context = RequestContext(request, {
113 'query': query,113 'query': query,
114 'page': paginator.page(page_num),114 'page': paginator.page(page_num),
115 'breadcrumbs': crumbs,115 'breadcrumbs': crumbs,
@@ -140,7 +140,7 @@
140 if len(top_rated) == settings.NUMBER_TOP_RATED_APPS:140 if len(top_rated) == settings.NUMBER_TOP_RATED_APPS:
141 break141 break
142142
143 context = RequestContext(request, dict={143 context = RequestContext(request, {
144 'depts': depts,144 'depts': depts,
145 'exhibits': exhibits,145 'exhibits': exhibits,
146 'featured_apps': featured_apps,146 'featured_apps': featured_apps,
147147
=== modified file 'test_requirements.txt'
--- test_requirements.txt 2012-03-26 16:29:35 +0000
+++ test_requirements.txt 2013-04-15 13:23:28 +0000
@@ -1,9 +1,4 @@
1# django should not be required here, but without it `python setup.py develop`
2# complains with:
3# Installed /.../virtualenv/lib/python2.6/site-packages/django_preflight-0.1-py2.6.egg
4# error: Could not find required distribution django
5-f bzr+http://bazaar.launchpad.net/~elachuni/canonical-identity-provider/ssoclient#egg=ssoclient-1.01-f bzr+http://bazaar.launchpad.net/~elachuni/canonical-identity-provider/ssoclient#egg=ssoclient-1.0
6django<1.4
7coverage2coverage
8mock3mock
9piston-mini-client4piston-mini-client

Subscribers

People subscribed via source and target branches