Forked from
trisquel / package-helpers
1846 commits behind the upstream repository.
-
Ruben Rodriguez authoredRuben Rodriguez authored
gnome-app-install_Ubuntu.py 9.11 KiB
import Default
from AppInstall.Menu import SHOW_ALL, SHOW_ONLY_SUPPORTED, SHOW_ONLY_FREE, SHOW_ONLY_MAIN, SHOW_ONLY_PROPRIETARY, SHOW_ONLY_THIRD_PARTY, SHOW_ONLY_INSTALLED
from AppInstall.Util import *
import datetime
import locale
from gettext import gettext as _
class Distribution(Default.Distribution):
def __init__(self):
Default.Distribution.__init__(self)
# Dictonary of all available filters with corresponding choser name
# and tooltip
# The installed filter will be automatically added in non-installer mode
# The primary and secondary filters are separated
self.filters_primary = {
SHOW_ALL : (_("All available applications"), ""),
SHOW_ONLY_FREE : (_("All Open Source applications"), ""),
}
self.filters_secondary = {
SHOW_ONLY_SUPPORTED : (_("Canonical-maintained applications"), ""),
SHOW_ONLY_THIRD_PARTY :(_("Third party applications"), ""),
}
# List of components whose applications should not be installed
# before asking for a confirmation
self.components_ask = ["universe", "multiverse"]
# Dictonary that provides dialog messages that are shown,
# before a component gets activated or when it requires to be confirmed
self.components_activation = {
# Fallback
None : [_("Enable the installation of software from the %s "
"component of Ubuntu?"),
# %s is the name of the component
_("%s is not officially supported with security "
"updates.")],
"main" : [_("Enable the installaion of officially "
"supported Ubuntu software?"),
# %s is the name of the application
_("%s is part of the Ubuntu main distribution. "
"Canonical Ltd. provides support and security "
"updates, which will be enabled too.")],
"universe" : [_("Enable the installation of community maintained "
"software?"),
# %s is the name of the application
_("%s is maintained by the Ubuntu community. "
"The Ubuntu community provides support and "
"security updates, which will be enabled too.")],
"multiverse" : [_("Enable the installation of unsupported and "
"restricted software?"),
# %s is the name of the application
_("The use, modification and distribution of %s "
"is restricted by copyright or by legal terms in "
"some countries.")]
}
self.dependencies_map = [
# KDE
(("kdelibs5","python-kde4","libqtgui4"),
# %s is the name of an application
None,
"application-kde"),
# GNOME
(("libgnome2-0","python-gnome2","libgtk2.0-0","python-gtk2"),
# %s is the name of an application
None,
"application-gnome"),
# XUBUNTU
# FIXME: get an icon from xubuntu
(("libxfce4util4",),
# %s is the name of an application
None,
None)]
self.comp_depend_map = { "universe":["main"],
"multiverse":["main", "universe"]}
def get_app_emblems(self, app, cache):
# A short statement about the freedom, legal status and level of
# support of the application
emblems = []
icon_name = None
tooltip = None
if app.channel.endswith("-partner") and app.supported:
tooltip = _("%s is provided by a third party vendor "
"from the Canonical partner repository.") % app.name
icon_name = "application-partner"
emblems.append((icon_name, tooltip))
elif app.component == "main" or app.supported:
tooltip = _("Canonical Ltd. provides technical support and "
"security updates for %s") % app.name
icon_name = "application-supported"
emblems.append((icon_name, tooltip))
elif app.thirdparty or app.channel:
tooltip = ("%s is provided by a third party vendor "
"and is therefore not an official part "
"of Ubuntu. The third party vendor is "
"responsible for support and security "
"updates.") % app.name
icon_name = "application-proprietary"
emblems.append((icon_name, tooltip))
if app.component == "universe":
tooltip =_("This application is provided by the "
"Ubuntu community.")
icon_name = "application-community"
emblems.append((icon_name, tooltip))
if app.component == "multiverse" or app.thirdparty:
tooltip = _("The use, modification and distribution "
"of %s is restricted by copyright or by "
"legal terms in some countries.") % app.name
icon_name = "application-proprietary"
emblems.append((icon_name, tooltip))
# Add an emblem corresponding to the dependencies of the app
if cache.has_key(app.pkgname):
for (deps, tooltip, icon_name) in self.dependencies_map:
for dep in deps:
if cache.pkgDependsOn(app.pkgname, dep):
if type(tooltip) == str:
tooltip = tooltip % app.name
emblems.append((icon_name, tooltip))
break
icon_name = None
tooltip = None
return emblems
def get_codec_information_link(self):
url = "https://codecs.canonical.com"
label = _("Buy Licensed Plug-ins...")
return (label, url)
def get_maintenance_status(self, app, cache):
# try to figure out the support dates of the release and make
# sure to look only for stuff in "Ubuntu" and "distro_codename"
# (to exclude stuff in ubuntu-updates for the support time
# calculation because the "Release" file time for that gets
# updated regularly)
releasef = get_release_filename_for_pkg(cache, app.pkgname,
"Ubuntu", self.get_codename())
time_t = get_release_date_from_release_file(releasef)
# check the release date and show support information
# based on this
if time_t:
release_date = datetime.datetime.fromtimestamp(time_t)
#print "release_date: ", release_date
now = datetime.datetime.now()
release_age = (now - release_date).days
#print "release age: ", release_age
# mvo: we do not define the end date very precisely
# currently this is why it will just display a end
# range
(support_end_year, support_end_month) = get_maintenance_end_date(release_date, 18)
support_end_month_str = locale.nl_langinfo(getattr(locale,"MON_%d" % support_end_month))
# check if the support has ended
support_ended = (now.year >= support_end_year and
now.month > support_end_month)
if app.component == "main":
if support_ended:
return _("Canonical does no longer provide "
"updates for %s in Ubuntu %s. "
"Updates may be available in a newer version of "
"Ubuntu.") % (app.name, self.get_distro_release())
else:
return _("Canonical provides critical updates for "
"%(appname)s until %(support_end_month_str)s "
"%(support_end_year)s.") % {'appname' : app.name,
'support_end_month_str' : support_end_month_str,
'support_end_year' : support_end_year}
elif app.component == "restricted":
if support_ended:
return _("Canonical does no longer provide "
"updates for %s in Ubuntu %s. "
"Updates may be available in a newer version of "
"Ubuntu.") % (app.name, self.get_distro_release())
else:
return _("Canonical provides critical updates supplied "
"by the developers of %(appname)s until "
"%(support_end_month_str)s "
"%(support_end_year)s.") % {'appname' : app.name,
'support_end_month_str' : support_end_month_str,
'support_end_year' : support_end_year}
return _("") % app.name