summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fig.yml3
-rw-r--r--omaha_server/.coveragerc2
-rw-r--r--omaha_server/omaha/models.py7
-rw-r--r--omaha_server/omaha/tests/test_models.py3
-rw-r--r--omaha_server/omaha/tests/test_views.py2
-rw-r--r--omaha_server/omaha_server/settings.py1
-rw-r--r--omaha_server/omaha_server/settings_prod.py15
-rw-r--r--requirements-test.txt1
-rw-r--r--requirements.txt2
9 files changed, 34 insertions, 2 deletions
diff --git a/fig.yml b/fig.yml
index a102b4d..933ed97 100644
--- a/fig.yml
+++ b/fig.yml
@@ -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