chiark / gitweb /
Also skip unmodified fields in the regex checks
authorDaniel Martí <mvdan@mvdan.cc>
Thu, 3 Dec 2015 15:49:35 +0000 (16:49 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Thu, 3 Dec 2015 16:02:24 +0000 (17:02 +0100)
Now it's close to 1s.

fdroidserver/metadata.py

index 6115fed6d3b4da01f35cea716b2f26c98ff879f5..bcc410968a38efe510a94ddfca62a9582f828ba3 100644 (file)
@@ -437,7 +437,7 @@ valuetypes = {
 
     FieldValidator("HTTP link",
                    r'^http[s]?://', None,
-                   ["Web Site", "Source Code", "Issue Tracker", "Changelog", "Donate"], []),
+                   ["WebSite", "SourceCode", "IssueTracker", "Changelog", "Donate"], []),
 
     FieldValidator("Bitcoin address",
                    r'^[a-zA-Z0-9]{27,34}$', None,
@@ -451,7 +451,7 @@ valuetypes = {
 
     FieldValidator("Repo Type",
                    ['git', 'git-svn', 'svn', 'hg', 'bzr', 'srclib'], None,
-                   ["Repo Type"],
+                   ["RepoType"],
                    []),
 
     FieldValidator("Binaries",
@@ -461,7 +461,7 @@ valuetypes = {
 
     FieldValidator("Archive Policy",
                    r'^[0-9]+ versions$', None,
-                   ["Archive Policy"],
+                   ["ArchivePolicy"],
                    []),
 
     FieldValidator("Anti-Feature",
@@ -471,12 +471,12 @@ valuetypes = {
 
     FieldValidator("Auto Update Mode",
                    r"^(Version .+|None)$", None,
-                   ["Auto Update Mode"],
+                   ["AutoUpdateMode"],
                    []),
 
     FieldValidator("Update Check Mode",
                    r"^(Tags|Tags .+|RepoManifest|RepoManifest/.+|RepoTrunk|HTTP|Static|None)$", None,
-                   ["Update Check Mode"],
+                   ["UpdateCheckMode"],
                    [])
 }
 
@@ -484,11 +484,15 @@ valuetypes = {
 # Check an app's metadata information for integrity errors
 def check_metadata(app):
     for v in valuetypes:
-        for f in v.fields:
-            v.check(app.get_field(f), app.id)
+        for k in v.fields:
+            if k not in app._modified:
+                continue
+            v.check(app.__dict__[k], app.id)
         for build in app.builds:
-            for f in v.flags:
-                v.check(build.get_flag(f), app.id)
+            for k in v.flags:
+                if k not in build._modified:
+                    continue
+                v.check(build.__dict__[k], app.id)
 
 
 # Formatter for descriptions. Create an instance, and call parseline() with