Commit 4c69935e authored by Joseph Nuthalapati's avatar Joseph Nuthalapati Committed by James Valleroy

Remove unnecessary attributes in manifest files

- Other minor refactoring
- Fix ejabberd and jsxc Client Apps listing
Signed-off-by: Joseph Nuthalapati's avatarJoseph Nuthalapati <njoseph@thoughtworks.com>
Reviewed-by: James Valleroy's avatarJames Valleroy <jvalleroy@mailbox.org>
parent 82e739d8
......@@ -31,11 +31,9 @@ clients = [{
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'os_version': '>4.2.0',
'store_name': Store.F_DROID.value,
'url': 'https://f-droid.org/repository/browse/?fdid=com'
'.github.dfa.diaspora_android ',
'fully_qualified_name': 'com.github.dfa.diaspora_android'
}]
}, {
'name':
......
......@@ -19,17 +19,20 @@ from django.utils.translation import ugettext_lazy as _
from plinth.modules.jsxc import manifest as jsxc_manifest
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import play_store_url
clients = [{
yaxim_package_id = 'org.yaxim.androidclient'
bruno_package_id = 'org.yaxim.bruno'
conversations_package_id = 'eu.siacs.conversations'
_clients = [{
'name':
_('yaxim'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'org.yaxim.androidclient',
'url': 'https://play.google.com/store/apps/details?id=org'
'.yaxim.androidclient '
'url': play_store_url(yaxim_package_id),
}]
}, {
'name':
......@@ -41,9 +44,7 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'org.yaxim.bruno',
'url': 'https://play.google.com/store/apps/details?id'
'=org.yaxim.bruno '
'url': play_store_url(bruno_package_id)
}]
}, {
'name':
......@@ -70,49 +71,30 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id'
'=eu.siacs.conversations ',
'fully_qualified_name': 'eu.siacs.conversations'
'url': play_store_url(conversations_package_id)
}]
}, {
'name':
_('Dino'),
'platforms': [{
'type': 'download',
'os': 'Debian',
'url': 'https://download.opensuse.org/repositories/network'
':/messaging:/xmpp:/dino/Debian_9.0/amd64/dino_0.0'
'~git178.9d8e1e8_amd64.deb',
'os': Desktop_OS.GNU_LINUX,
'url': 'https://github.com/dino/dino/wiki/Distribution-Packages',
}]
}, {
'name':
_('Gajim'),
'platforms': [{
'type': 'apt',
'type': 'package',
'os': 'Debian',
'package_name': 'gajim'
}, {
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'url': 'https://gajim.org/downloads/0.16/gajim-0.16.8-2.exe'
}]
}, {
'name':
_('OneTeam'),
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'url': 'https://download.process-one.net/oneteam/release'
'-installers/OneTeam.msi'
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://download.process-one.net/oneteam/release'
'-installers/OneTeam.dmg '
}, {
'type': 'download',
'os': 'Linux',
'url': 'https://download.process-one.net/oneteam/release'
'-installers/oneteam.tar.bz2 '
'url': 'https://gajim.org/downloads.php'
}]
}].append(jsxc_manifest.clients)
}]
_clients.extend(jsxc_manifest.clients)
clients = _clients
......@@ -36,7 +36,7 @@ clients = [{
'os': Desktop_OS.WINDOWS.value,
'url': 'http://releases.0x539.de/gobby/gobby-stable.exe'
}, {
'type': 'apt',
'type': 'package',
'os': 'Debian',
'package_name': 'gobby'
}]
......
......@@ -17,15 +17,15 @@
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('JSXC'),
'platforms': [
{
'type': 'apt',
'os': 'Debian',
'package_name': 'libjs-jsxc'
}
]
}
]
clients = [{
'name':
_('JSXC'),
'platforms': [{
'type': 'package',
'os': 'Debian',
'package_name': 'libjs-jsxc'
}, {
'type': 'web',
'url': '/jsxc'
}]
}]
......@@ -18,6 +18,10 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import f_droid_url, play_store_url
android_package_id = 'im.vector.alpha'
riot_desktop_download_url = 'https://riot.im/desktop.html'
clients = [{
'name':
......@@ -27,17 +31,13 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'im.vector.alpha',
'url': 'https://play.google.com/store/apps/details?id=im'
'.vector.alpha '
'url': play_store_url(android_package_id)
},
{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'os_version': '>=6.0',
'store_name': Store.F_DROID.value,
'fully_qualified_name': 'im.vector.alpha',
'url': 'https://f-droid.org/packages/im.vector.alpha/'
'url': f_droid_url(android_package_id)
},
{
'type': 'web',
......@@ -46,18 +46,17 @@ clients = [{
{
'type': 'download',
'os': Desktop_OS.GNU_LINUX.value,
'url': 'https://riot.im/desktop.html'
'url': riot_desktop_download_url,
},
{
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://riot.im/desktop.html'
'url': riot_desktop_download_url,
},
{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'os_version': '>=7',
'url': 'https://riot.im/desktop.html'
'url': riot_desktop_download_url,
},
]
}]
......@@ -25,22 +25,18 @@ clients = [{
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'arch': 'amd64',
'os_version': 'XP, Vista, >=7',
'url': 'https://github.com/minetest/minetest/releases'
'/download/0.4.16/minetest-0.4.16-win64.zip '
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'net.minetest.minetest',
'url': 'https://play.google.com/store/apps/details?id=net'
'.minetest.minetest '
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'fully_qualified_name': 'net.minetest.minetest',
'url': 'https://f-droid.org/packages/net.minetest.minetest/ '
}, {
'type': 'package',
......
......@@ -18,6 +18,9 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import f_droid_url, play_store_url
plumble_package_id = 'com.morlunk.mumbleclient.free'
clients = [{
'name':
......@@ -25,14 +28,11 @@ clients = [{
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'arch': 'amd64',
'url': 'https://dl.mumble.info/mumble-1.3.0~2569~gd196a4b'
'~snapshot.winx64.msi '
'url': 'https://wiki.mumble.info/wiki/Main_Page'
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://github.com/mumble-voip/mumble/releases'
'/download/1.2.19/Mumble-1.2.19.dmg '
'url': 'https://wiki.mumble.info/wiki/Main_Page'
}, {
'type': 'package',
'format': 'deb',
......@@ -40,7 +40,6 @@ clients = [{
}, {
'type': 'store',
'os': Mobile_OS.IOS.value,
'os_version': '>=8.0',
'store_name': Store.APP_STORE.value,
'url': 'https://itunes.apple.com/us/app/mumble/id443472808'
}]
......@@ -51,16 +50,12 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=com'
'.morlunk.mumbleclient.free ',
'fully_qualified_name': 'com.morlunk.mumbleclient'
'url': play_store_url(plumble_package_id)
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': 'https://play.google.com/store/apps/details?id=com'
'.morlunk.mumbleclient.free ',
'fully_qualified_name': 'com.morlunk.mumbleclient'
'url': f_droid_url(plumble_package_id)
}]
}, {
'name':
......@@ -68,7 +63,6 @@ clients = [{
'platforms': [{
'type': 'store',
'os': Mobile_OS.IOS.value,
'os_version': '>=7.0',
'store_name': Store.APP_STORE.value,
'url': 'https://itunes.apple.com/dk/app/mumblefy/id858752232'
}]
......
......@@ -18,6 +18,10 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import play_store_url
quasseldroid_package_id = 'com.iskrembilen.quasseldroid',
quassel_download_url = 'http://quassel-irc.org/downloads'
clients = [{
'name':
......@@ -25,12 +29,11 @@ clients = [{
'platforms': [{
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'http://quassel-irc.org/pub/QuasselClient_MacOSX'
'-x86_64_0.12.4.dmg'
'url': quassel_download_url,
}, {
'type': 'apt',
'type': 'package',
'os': 'Debian',
'package_name': 'quassel-client'
'package_name': 'quassel-client',
}]
}, {
'name':
......@@ -39,8 +42,6 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=com'
'.iskrembilen.quasseldroid',
'fully_qualified_name': 'com.iskrembilen.quasseldroid'
'url': play_store_url(quasseldroid_package_id),
}]
}]
......@@ -18,6 +18,9 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Mobile_OS, Store
from plinth.utils import play_store_url
davdroid_package_id = 'at.bitfire.davdroid'
clients = [{
'name':
......@@ -31,15 +34,13 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=at'
'.bitfire.davdroid',
'fully_qualified_name': 'at.bitfire.davdroid'
'url': play_store_url(davdroid_package_id),
}]
}, {
'name':
_('GNOME Calendar'),
'platforms': [{
'type': 'apt',
'type': 'package',
'os': 'Debian',
'package-name': 'gnome-calendar'
}]
......@@ -57,7 +58,7 @@ clients = [{
'Clicking on the search button will list the existing '
'calendars and address books.'),
'platforms': [{
'type': 'apt',
'type': 'package',
'os': 'Debian',
'package-name': 'gnome-calendar'
}]
......
......@@ -18,6 +18,12 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import play_store_url
jitsi_package_id = 'org.jitsi.meet'
csipsimple_package_id = 'com.csipsimple'
jitsi_download_url = 'https://download.jitsi.org/jitsi/'
clients = [{
'name':
......@@ -35,9 +41,7 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'org.jitsi.meet',
'url': 'https://play.google.com/store/apps/details?id=org'
'.jitsi.meet '
'url': play_store_url(jitsi_package_id)
}, {
'type': 'store',
'os': Mobile_OS.IOS.value,
......@@ -46,7 +50,7 @@ clients = [{
}, {
'type': 'download',
'os': Desktop_OS.GNU_LINUX.value,
'url': 'https://download.jitsi.org/jitsi/debian/'
'url': jitsi_download_url
}, {
'type': 'package',
'format': 'deb',
......@@ -54,13 +58,11 @@ clients = [{
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://download.jitsi.org/jitsi/macosx/jitsi-latest'
'.dmg '
'url': jitsi_download_url
}, {
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'url': 'https://download.jitsi.org/jitsi/windows/jitsi-latest'
'-x86.exe '
'url': jitsi_download_url
}]
}, {
'name':
......@@ -69,8 +71,6 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'com.csipsimple',
'url': 'https://play.google.com/store/apps/details?id=com'
'.csipsimple '
'url': play_store_url(csipsimple_package_id)
}]
}]
......@@ -18,13 +18,10 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import f_droid_url, play_store_url
metadata = {
'syncthing': {
'version': '0.14.39',
'android-package-id': 'com.nutomic.syncthingandroid',
},
}
syncthing_package_id = 'com.nutomic.syncthingandroid'
syncthing_download_url = 'https://syncthing.net/'
clients = [{
'name':
......@@ -40,48 +37,25 @@ clients = [{
}, {
'type': 'download',
'os': Desktop_OS.GNU_LINUX.value,
'arch': 'amd64',
'url': 'https://github.com/syncthing/syncthing/releases/'
'download/v{0}/syncthing-linux-amd64-v{0}.tar.gz'
.format(metadata['syncthing']['version']),
'url': syncthing_download_url,
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'arch': 'amd64',
'url': 'https://github.com/syncthing/syncthing/releases/'
'download/v{0}/syncthing-macosx-amd64-v{0}.tar.gz'
.format(metadata['syncthing']['version']),
'url': syncthing_download_url,
}, {
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'arch': 'amd64',
'url': 'https://github.com/syncthing/syncthing/releases/'
'download/v{0}/syncthing-windows-amd64-v{0}.zip'
.format(metadata['syncthing']['version']),
'url': syncthing_download_url,
}, {
'type':
'store',
'os':
Mobile_OS.ANDROID.value,
'store_name':
Store.GOOGLE_PLAY.value,
'fully_qualified_name':
metadata['syncthing']['android-package-id'],
'url':
'https://play.google.com/store/apps/details?id={}'
.format(metadata['syncthing']['android-package-id'])
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': play_store_url(syncthing_package_id)
}, {
'type':
'store',
'os':
Mobile_OS.ANDROID.value,
'store_name':
Store.F_DROID.value,
'fully_qualified_name':
metadata['syncthing']['android-package-id'],
'url':
'https://f-droid.org/packages/{}'
.format(metadata['syncthing']['android-package-id'])
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': f_droid_url(syncthing_package_id)
}, {
'type': 'web',
'url': '/syncthing'
......
......@@ -18,8 +18,10 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
from plinth.utils import f_droid_url, play_store_url
version = '7.0.6'
orbot_package_id = 'org.torproject.android'
tor_browser_download_url = 'https://www.torproject.org/download/download-easy.html'
clients = [{
'name':
......@@ -27,20 +29,15 @@ clients = [{
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'os_version': 'Windows XP, Vista, >=7',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/torbrowser-install-{v}_en-US.exe '.format(v=version)
'url': tor_browser_download_url,
}, {
'type': 'download',
'os': Desktop_OS.GNU_LINUX.value,
'url': 'https://www.torproject.org/dist/torbrowser/{v}/tor'
'-browser-linux64-{v} _en-US.tar.xz'.format(v=version)
'url': tor_browser_download_url,
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'arch': 'amd64',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/TorBrowser-{v}-osx64_en-US.dmg'.format(v=version)
'url': tor_browser_download_url,
}]
}, {
'name':
......@@ -49,15 +46,11 @@ clients = [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
'url': play_store_url(orbot_package_id)
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
'url': f_droid_url(orbot_package_id)
}]
}]
......@@ -28,13 +28,11 @@ clients = [{
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=org'
'.ttrssreader',
'fully_qualified_name': 'org.ttrssreader'
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': 'https://f-droid.org/packages/org.ttrssreader/',
'fully_qualified_name': 'org.ttrssreader'
}, {
'type': 'web',
'url': '/tt-rss'
......
......@@ -40,7 +40,7 @@ class Store(Enum):
GOOGLE_PLAY = 'google-play'
def string_values(enum):
def enum_values(enum):
return [x.value for x in list(enum)]
......@@ -94,14 +94,14 @@ def __check(clients, cond):
def has_desktop_clients(clients):
"""Filter to find out whether an application has desktop clients"""
return __check(clients,
lambda x: x.get('os', '') in string_values(Desktop_OS))
lambda x: x.get('os', '') in enum_values(Desktop_OS))
@register.filter(name='has_mobile_clients')
def has_mobile_clients(clients):
"""Filter to find out whether an application has mobile clients"""
return __check(clients,
lambda x: x.get('os', '') in string_values(Mobile_OS))
lambda x: x.get('os', '') in enum_values(Mobile_OS))
@register.filter(name='has_web_clients')
......@@ -112,12 +112,10 @@ def has_web_clients(clients):
@register.filter(name='of_type')
def of_type(clients, typ):
"""Filter clients of a particular type"""
if typ == 'mobile':
return list(filter(has_mobile_clients, clients))
elif typ == 'desktop':
return list(filter(has_desktop_clients, clients))
elif typ == 'web':
return list(filter(has_web_clients, clients))
else:
return clients
"""Filter and get clients of a particular type"""
filters = {
'mobile': has_mobile_clients,
'desktop': has_desktop_clients,
'web': has_web_clients
}
return list(filter(filters.get(typ, lambda x: x), clients))
......@@ -14,15 +14,16 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""
Miscellaneous utility methods.
"""
import importlib
import os
import ruamel.yaml
from django.utils.functional import lazy
import ruamel.yaml
from plinth.modules import names
......@@ -83,12 +84,14 @@ def get_domain_names():
class YAMLFile(object):
"""A context management class for updating YAML files"""
def __init__(self, yaml_file, post_exit=None):
"""Return a context object for the YAML file.
Parameters:
yaml_file - the YAML file to update.
post_exit - a function that will be called after updating the YAML file.
post_exit - a function that will be called after
updating the YAML file.
"""
self.yaml_file = yaml_file
self.post_exit = post_exit
......@@ -112,3 +115,12 @@ class YAMLFile(object):
def is_file_empty(self):
return os.stat(self.yaml_file).st_size == 0
def play_store_url(package_id):
return 'https://play.google.com/store/apps/details?id={}'.format(
package_id)
def f_droid_url(package_id):
return 'https://f-droid.org/packages/{}'.format(package_id)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment