[buildinfo.debian.net] 04/07: Load data from S3 if we don't have it locally.

Chris Lamb chris at chris-lamb.co.uk
Sat Jan 28 21:58:58 UTC 2017


This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository buildinfo.debian.net.

commit 75bc50bbfc0dc4bfe0b043fc726ab882bc68040e
Author: Chris Lamb <lamby at debian.org>
Date:   Sun Jan 29 10:26:08 2017 +1300

    Load data from S3 if we don't have it locally.
    
    Signed-off-by: Chris Lamb <lamby at debian.org>
---
 bidb/buildinfo/buildinfo_submissions/models.py | 8 ++++++++
 bidb/buildinfo/buildinfo_submissions/views.py  | 8 +++++++-
 bidb/buildinfo/models.py                       | 8 ++++++++
 bidb/buildinfo/views.py                        | 8 +++++++-
 4 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/bidb/buildinfo/buildinfo_submissions/models.py b/bidb/buildinfo/buildinfo_submissions/models.py
index dc3231a..22d7103 100644
--- a/bidb/buildinfo/buildinfo_submissions/models.py
+++ b/bidb/buildinfo/buildinfo_submissions/models.py
@@ -21,6 +21,7 @@ class Submission(models.Model):
 
     key = models.ForeignKey('keys.Key', related_name='submissions')
 
+    # Deprecated
     raw_text = models.TextField()
 
     created = models.DateTimeField(default=datetime.datetime.utcnow)
@@ -42,3 +43,10 @@ class Submission(models.Model):
             self.buildinfo.get_filename(),
             self.slug,
         )
+
+    def get_storage_name(self):
+        return 'buildinfo_submissions.Submission/{}/{}/{}'.format(
+            self.slug[:2],
+            self.slug[2:4],
+            self.slug,
+        )
diff --git a/bidb/buildinfo/buildinfo_submissions/views.py b/bidb/buildinfo/buildinfo_submissions/views.py
index 104c78a..222f8ec 100644
--- a/bidb/buildinfo/buildinfo_submissions/views.py
+++ b/bidb/buildinfo/buildinfo_submissions/views.py
@@ -1,5 +1,6 @@
 from django.http import HttpResponse
 from django.shortcuts import redirect, get_object_or_404
+from django.core.files.storage import default_storage
 
 from .models import Submission
 
@@ -14,4 +15,9 @@ def view(request, sha1, filename, slug):
     if submission.buildinfo.get_filename() != filename:
         return redirect(submission)
 
-    return HttpResponse(submission.raw_text, content_type='text/plain')
+    # Legacy
+    if submission.raw_text:
+        return HttpResponse(submission.raw_text, content_type='text/plain')
+
+    with default_storage.open(submission.get_storage_name()) as f:
+        return HttpResponse(f, content_type='text/plain')
diff --git a/bidb/buildinfo/models.py b/bidb/buildinfo/models.py
index 6914a51..31f0fde 100644
--- a/bidb/buildinfo/models.py
+++ b/bidb/buildinfo/models.py
@@ -27,6 +27,7 @@ class Buildinfo(models.Model):
 
     environment = models.TextField()
 
+    # Deprecated
     raw_text = models.TextField()
 
     created = models.DateTimeField(default=datetime.datetime.utcnow)
@@ -52,6 +53,13 @@ class Buildinfo(models.Model):
             self.architecture.name,
         )
 
+    def get_storage_name(self):
+        return 'buildinfo.Buildinfo/{}/{}/{}'.format(
+            self.sha1[:2],
+            self.sha1[2:4],
+            self.sha1,
+        )
+
 class Binary(models.Model):
     buildinfo = models.ForeignKey(
         Buildinfo,
diff --git a/bidb/buildinfo/views.py b/bidb/buildinfo/views.py
index 05f115c..c4fbff7 100644
--- a/bidb/buildinfo/views.py
+++ b/bidb/buildinfo/views.py
@@ -1,5 +1,6 @@
 from django.http import HttpResponse
 from django.shortcuts import render, get_object_or_404, redirect
+from django.core.files.storage import default_storage
 
 from .models import Buildinfo
 
@@ -22,4 +23,9 @@ def view(request, sha1, filename=None):
 def raw_text(request, sha1, filename=None):
     buildinfo = get_object_or_404(Buildinfo, sha1=sha1)
 
-    return HttpResponse(buildinfo.raw_text, content_type='text/plain')
+    # Legacy
+    if buildinfo.raw_text:
+        return HttpResponse(buildinfo.raw_text, content_type='text/plain')
+
+    with default_storage.open(buildinfo.get_storage_name()) as f:
+        return HttpResponse(f, content_type='text/plain')

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/buildinfo.debian.net.git



More information about the Reproducible-commits mailing list