chiark / gitweb /
update: always include name/summary/desc in index.xml if available
authorHans-Christoph Steiner <hans@eds.org>
Wed, 19 Jul 2017 08:59:05 +0000 (10:59 +0200)
committerHans-Christoph Steiner <hans@eds.org>
Wed, 19 Jul 2017 13:07:50 +0000 (15:07 +0200)
With the new localization support, the name/summary/description in the
metadata file becomes the global override.  So most apps are not going to
have those fields present in their metadata file.  This fixes the index.xml
generation to fall back to the localized versions of those fields when they
are not set in the metadata field.

https://forum.f-droid.org/t/what-has-happend-to-osmand

fdroidserver/index.py
tests/metadata/info.guardianproject.checkey.txt
tests/metadata/info.guardianproject.checkey/en-US/description.txt [new file with mode: 0644]
tests/metadata/info.guardianproject.checkey/en-US/summary.txt [new file with mode: 0644]

index b0de43251bdb871f72a3732b4220b04779831945..53d2787aa58fbda5d350fcf0cd40f4032e6c9f72 100644 (file)
@@ -258,6 +258,35 @@ def make_v0(apps, apks, repodir, repodict, requestsdict):
         el.appendChild(doc.createCDATASection(value))
         parent.appendChild(el)
 
+    def addElementCheckLocalized(name, app, key, doc, parent, default=''):
+        '''Fill in field from metadata or localized block
+
+        For name/summary/description, they can come only from the app source,
+        or from a dir in fdroiddata.  They can be entirely missing from the
+        metadata file if there is localized versions.  This will fetch those
+        from the localized version if its not available in the metadata file.
+        '''
+
+        el = doc.createElement(name)
+        value = app.get(key)
+        lkey = key[:1].lower() + key[1:]
+        localized = app.get('localized')
+        if not value and localized:
+            for lang in ['en-US'] + [x for x in localized.keys()]:
+                if not lang.startswith('en'):
+                    continue
+                if lang in localized:
+                    value = localized[lang].get(lkey)
+                    if value:
+                        break
+        if not value and localized and len(localized) > 1:
+            lang = list(localized.keys())[0]
+            value = localized[lang].get(lkey)
+        if not value:
+            value = default
+        el.appendChild(doc.createTextNode(value))
+        parent.appendChild(el)
+
     root = doc.createElement("fdroid")
     doc.appendChild(root)
 
@@ -312,16 +341,16 @@ def make_v0(apps, apks, repodir, repodict, requestsdict):
             addElement('added', app.added.strftime('%Y-%m-%d'), doc, apel)
         if app.lastUpdated:
             addElement('lastupdated', app.lastUpdated.strftime('%Y-%m-%d'), doc, apel)
-        addElement('name', app.Name, doc, apel)
-        addElement('summary', app.Summary, doc, apel)
+
+        addElementCheckLocalized('name', app, 'Name', doc, apel)
+        addElementCheckLocalized('summary', app, 'Summary', doc, apel)
+
         if app.icon:
             addElement('icon', app.icon, doc, apel)
 
-        if app.get('Description'):
-            description = app.Description
-        else:
-            description = '<p>No description available</p>'
-        addElement('desc', description, doc, apel)
+        addElementCheckLocalized('desc', app, 'Description', doc, apel,
+                                 '<p>No description available</p>')
+
         addElement('license', app.License, doc, apel)
         if app.Categories:
             addElement('categories', ','.join(app.Categories), doc, apel)
index eea6c7be8e601fcfc33a180022bd542cae83938a..4beeec897aa8291d93ec7b90e0463c71acdac580 100644 (file)
@@ -6,16 +6,6 @@ Issue Tracker:https://dev.guardianproject.info/projects/checkey/issues
 Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk
 
 Auto Name:Checkey
-Summary:Info on local apps
-Description:
-Checkey is a utility for getting information about the APKs that are installed
-on your device. Starting with a list of all of the apps that you have
-installed on your device, it will show you the APK signature with a single
-touch, and provides links to virustotal.com and androidobservatory.org to
-easily access the profiles of that APK. It will also let you export the
-signing certificate and generate ApkSignaturePin pin files for use with the
-TrustedIntents library.
-.
 
 
 Current Version Code:9999999
diff --git a/tests/metadata/info.guardianproject.checkey/en-US/description.txt b/tests/metadata/info.guardianproject.checkey/en-US/description.txt
new file mode 100644 (file)
index 0000000..568b949
--- /dev/null
@@ -0,0 +1 @@
+Checkey is a utility for getting information about the APKs that are installed on your device. Starting with a list of all of the apps that you have installed on your device, it will show you the APK signature with a single touch, and provides links to virustotal.com and androidobservatory.org to easily access the profiles of that APK. It will also let you export the signing certificate and generate ApkSignaturePin pin files for use with the TrustedIntents library.
diff --git a/tests/metadata/info.guardianproject.checkey/en-US/summary.txt b/tests/metadata/info.guardianproject.checkey/en-US/summary.txt
new file mode 100644 (file)
index 0000000..a4642ad
--- /dev/null
@@ -0,0 +1 @@
+Info on local apps