]> git.ipfire.org Git - people/shoehn/ipfire.org.git/commitdiff
i-use: Fix error images when the profile is disabled or not found
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 28 Apr 2015 08:57:15 +0000 (10:57 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 28 Apr 2015 08:57:15 +0000 (10:57 +0200)
webapp/backend/fireinfo.py
webapp/handlers_iuse.py

index a194282200327b4dd293a5e4370d1c2806358928..b4b742481263cf2d8e3320ee29835b77aade3cea 100644 (file)
@@ -1504,6 +1504,14 @@ class Fireinfo(Object):
                if res:
                        return Profile(self.backend, res.id, res)
 
+       def get_profile_with_data(self, public_id, when=None):
+               res = self.db.get("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
+                       SELECT * FROM profiles JOIN fireinfo_profiles ON profiles.id = fireinfo_profiles.id \
+                               WHERE public_id = %s ORDER BY time_updated DESC LIMIT 1", when, public_id)
+
+               if res:
+                       return Profile(self.backend, res.id, res)
+
        def get_profiles(self, public_id):
                res = self.db.query("SELECT * FROM fireinfo_profiles \
                        WHERE public_id = %s ORDER BY time_created DESC", public_id)
index fe7f26ed278d446981d54e7b166447ad6b2c63e3..b93552451864924f7467f96bb5d2432c8f401ef4 100644 (file)
@@ -50,14 +50,14 @@ class IUseImage(BaseHandler):
                else:
                        logging.info("Rendering new image for profile: %s" % profile_id)
 
+                       profile = self.fireinfo.get_profile_with_data(profile_id, when=when)
+                       if not profile:
+                               raise tornado.web.HTTPError(404, "Profile '%s' was not found." % profile_id)
+
                        image_cls = self.iuse.get_imagetype(image_id)
                        if not image_cls:
                                raise tornado.web.HTTPError(404, "Image class is unknown: %s" % image_id)
 
-                       profile = self.fireinfo.get_profile(profile_id, when=when)
-                       if not profile:
-                               raise tornado.web.HTTPError(404, "Profile '%s' was not found." % profile_id)
-
                        # Render the image
                        image = image_cls(self.backend, self, profile).to_string()
 
@@ -66,4 +66,3 @@ class IUseImage(BaseHandler):
 
                self.set_header("Content-Type", "image/png")
                self.write(image)
-