diff options
-rw-r--r-- | fig.yml | 3 | ||||
-rw-r--r-- | omaha_server/.coveragerc | 2 | ||||
-rw-r--r-- | omaha_server/omaha/models.py | 7 | ||||
-rw-r--r-- | omaha_server/omaha/tests/test_models.py | 3 | ||||
-rw-r--r-- | omaha_server/omaha/tests/test_views.py | 2 | ||||
-rw-r--r-- | omaha_server/omaha_server/settings.py | 1 | ||||
-rw-r--r-- | omaha_server/omaha_server/settings_prod.py | 15 | ||||
-rw-r--r-- | requirements-test.txt | 1 | ||||
-rw-r--r-- | requirements.txt | 2 |
9 files changed, 34 insertions, 2 deletions
@@ -16,3 +16,6 @@ web: HOST_NAME: '*' SECRET_KEY: 'SECRET_KEY' DJANGO_SETTINGS_MODULE: 'omaha_server.settings' + AWS_ACCESS_KEY_ID: 'AWS_ACCESS_KEY_ID' + AWS_SECRET_ACCESS_KEY: 'AWS_SECRET_ACCESS_KEY' + AWS_STORAGE_BUCKET_NAME: 'AWS_STORAGE_BUCKET_NAME' diff --git a/omaha_server/.coveragerc b/omaha_server/.coveragerc index 0ee6670..a46321b 100644 --- a/omaha_server/.coveragerc +++ b/omaha_server/.coveragerc @@ -1,3 +1,3 @@ [run] -omit = *settings*, *wsgi*, *urls.py* +omit = *settings*, *wsgi*, *urls.py*, *migrations*, *admin.py* data_file = ../.coverage
\ No newline at end of file diff --git a/omaha_server/omaha/models.py b/omaha_server/omaha/models.py index 3125f3b..8610932 100644 --- a/omaha_server/omaha/models.py +++ b/omaha_server/omaha/models.py @@ -48,13 +48,18 @@ class Channel(TimeStampedModel): return self.name +def version_upload_to(obj, filename): + return os.path.join('build', obj.app.name, obj.channel.name, + obj.platform.name, filename) + + class Version(TimeStampedModel): app = models.ForeignKey(Application) platform = models.ForeignKey(Platform) channel = models.ForeignKey(Channel) version = VersionField(help_text='Format: 255.255.65535.65535', number_bits=(8, 8, 16, 16)) release_notes = models.TextField(blank=True, null=True) - file = models.FileField() + file = models.FileField(upload_to=lambda o, f: version_upload_to(o, f)) file_hash = models.CharField(verbose_name='Hash', max_length=140, null=True, blank=True) class Meta: diff --git a/omaha_server/omaha/tests/test_models.py b/omaha_server/omaha/tests/test_models.py index 4e63297..6e865f7 100644 --- a/omaha_server/omaha/tests/test_models.py +++ b/omaha_server/omaha/tests/test_models.py @@ -3,6 +3,8 @@ from django import test from django.core.files.uploadedfile import SimpleUploadedFile +from mock import patch + from omaha.models import Application, Channel, Platform, Version, Action, EVENT_DICT_CHOICES from omaha.factories import ApplicationFactory, ChannelFactory, PlatformFactory, VersionFactory from omaha.tests.utils import temporary_media_root @@ -33,6 +35,7 @@ class VersionModelTest(test.TestCase): self.assertTrue(Version.objects.get(id=version.id)) @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/') + @patch('omaha.models.version_upload_to', lambda o, f: f) def test_property(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', '')) self.assertEqual(version.file_absolute_url, diff --git a/omaha_server/omaha/tests/test_views.py b/omaha_server/omaha/tests/test_views.py index 2543c15..faed0b2 100644 --- a/omaha_server/omaha/tests/test_views.py +++ b/omaha_server/omaha/tests/test_views.py @@ -7,6 +7,7 @@ from django.core.files.uploadedfile import SimpleUploadedFile from xmlunittest import XmlTestMixin from freezegun import freeze_time +from mock import patch import fixtures from utils import temporary_media_root @@ -32,6 +33,7 @@ class UpdateViewTest(TestCase, XmlTestMixin): @freeze_time('2014-01-01 15:41:48') # 56508 sec @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/') + @patch('omaha.models.version_upload_to', lambda o, f: f) def test_updatecheck_positive(self): app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome') platform = PlatformFactory.create(name='win') diff --git a/omaha_server/omaha_server/settings.py b/omaha_server/omaha_server/settings.py index c0757b9..700e1b8 100644 --- a/omaha_server/omaha_server/settings.py +++ b/omaha_server/omaha_server/settings.py @@ -50,6 +50,7 @@ INSTALLED_APPS = ( 'django.contrib.messages', 'django.contrib.staticfiles', + 'storages', 'django_extensions', 'versionfield', diff --git a/omaha_server/omaha_server/settings_prod.py b/omaha_server/omaha_server/settings_prod.py index 26c5ac7..1e31e84 100644 --- a/omaha_server/omaha_server/settings_prod.py +++ b/omaha_server/omaha_server/settings_prod.py @@ -1,8 +1,23 @@ # coding: utf8 +import os + from settings import * DEBUG = False ALLOWED_HOSTS = (os.environ['HOST_NAME'],) SECRET_KEY = (os.environ['SECRET_KEY'],) + +STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' +DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' + +AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') +AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') +AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME') +S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME + +STATIC_URL = S3_URL +AWS_PRELOAD_METADATA = True +AWS_QUERYSTRING_AUTH = False +AWS_IS_GZIPPED = True
\ No newline at end of file diff --git a/requirements-test.txt b/requirements-test.txt index e0a69d9..6957d93 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -9,3 +9,4 @@ coverage==3.7.1 coveralls freezegun==0.1.19 factory-boy==2.4.1 +mock==1.0.1 diff --git a/requirements.txt b/requirements.txt index 15c729f..8766e07 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,5 @@ Django==1.7 django-extensions==1.4.0 django-suit==0.2.11 jsonfield==1.0.0 +boto==2.33.0 +django-storages==1.1.8 |