diff bio/management/commands/bio_image_check.py @ 1012:fc528d4509b0

Prevent mixed content in UserProfiles. Modified sslimages to update UserProfiles. Added another command to check/re-save UserProfiles.
author Brian Neal <bgneal@gmail.com>
date Fri, 27 Nov 2015 16:56:33 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bio/management/commands/bio_image_check.py	Fri Nov 27 16:56:33 2015 -0600
@@ -0,0 +1,51 @@
+"""bio_image_check
+
+A management command to check profiles for non-secure images.
+"""
+from optparse import make_option
+
+from django.core.management.base import NoArgsCommand
+
+from bio.models import UserProfile
+from core.html import image_check
+from core.html import ImageCheckError
+
+
+def _image_check(html):
+    try:
+        image_check(html)
+    except ImageCheckError:
+        return False
+    return True
+
+
+class Command(NoArgsCommand):
+    help = "Checks user profiles for non-secure images"
+    option_list = NoArgsCommand.option_list + (
+            make_option('--resave',
+                action='store_true',
+                dest='resave',
+                default=False,
+                help='Re-save profile if issue found'),
+    )
+
+    def handle_noargs(self, **options):
+
+        resave = options.get('resave', False)
+
+        count = 0
+        for p in UserProfile.objects.iterator():
+            issue_found = False
+            if p.profile_html and not _image_check(p.profile_html):
+                self.stdout.write("%s: profile_text\n" % p.user.username)
+                count += 1
+                issue_found = True
+            if p.signature_html and not _image_check(p.signature_html):
+                self.stdout.write("%s: signature\n" % p.user.username)
+                count += 1
+                issue_found = True
+
+            if issue_found and resave:
+                p.save(content_update=True)
+
+        self.stdout.write("%d problem field(s) found\n" % count)