[Blends-commit] [SCM] website branch, master, updated. e06fa1d14646049a641a55b54b7c9445c23dd18c

Ole Streicher olebole at debian.org
Sun Mar 20 13:54:53 UTC 2016


The following commit has been merged in the master branch:
commit e06fa1d14646049a641a55b54b7c9445c23dd18c
Author: Ole Streicher <olebole at debian.org>
Date:   Sun Mar 20 14:54:41 2016 +0100

    Move pkg into properties as 'name'

diff --git a/webtools/blendstasktools.py b/webtools/blendstasktools.py
index bb6f38e..88707d2 100644
--- a/webtools/blendstasktools.py
+++ b/webtools/blendstasktools.py
@@ -718,8 +718,8 @@ class DependantPackage:
     # Hold information about a package that is in dependency list
 
     def __init__(self, name):
-        self.pkg            = name  # Name of dependant package
         self.properties     = {}
+        self.properties['name'] = name
         self.properties['license']     = 'unknown'
         self.properties['pkgstatus']     = 'unknown'
         self.properties['component']     = None
@@ -741,10 +741,10 @@ class DependantPackage:
         if other is None:
             return -2
         # Sort according to package name
-        return cmp(self.pkg, other.pkg)
+        return cmp(self.properties['name'], other.properties['name'])
 
     def __str__(self):
-        ret = "pkg:"    + self.pkg
+        ret = "pkg:"    + self.properties['name']
         if self.dep_strength:
             ret += ", Dep_strength: " + self.dep_strength
         if self.desc:
@@ -796,19 +796,19 @@ class DependantPackage:
                         # emergency brake if algorithm fails to detect non-names like '1000 Genome Project Data Processing Subgroup'
                         if authors_string.count(',') > row[pub].count(' and '):
                             logger.warning("Refuse to change Author string in %s: '%s'(%i) -> '%s'(%i)"
-                                           % (self.pkg, row[pub], row[pub].count(' and '), authors_string, authors_string.count(',')))
+                                           % (self.properties['name'], row[pub], row[pub].count(' and '), authors_string, authors_string.count(',')))
                         else:
                             logger.debug("Author string changed in %s: '%s' -> '%s'"
-                                         % (self.pkg, row[pub], authors_string))
+                                         % (self.properties['name'], row[pub], authors_string))
                             row[pub] = authors_string
                 if 'published' not in self.properties:
                     self.properties['published'] = {}
                 if pub in self.properties['published']:
                     if self.properties['published'][pub] == row[pub]:
-                        rmpub.write("%s: %s: Published-%s: %s" % (taskname, self.pkg, pub, row[pub]))
-                        logger.info("%s/%s: Publication-%s = %s can be removed"  % (taskname, self.pkg, pub, row[pub]))
+                        rmpub.write("%s: %s: Published-%s: %s" % (taskname, self.properties['name'], pub, row[pub]))
+                        logger.info("%s/%s: Publication-%s = %s can be removed"  % (taskname, self.properties['name'], pub, row[pub]))
                     else:
-                        logger.info("%s conflicting fields Publication-%s in tasks file with value '%s' and in UDD with value '%s'" % (self.pkg, pub, self.properties['published'][pub], row[pub]))
+                        logger.info("%s conflicting fields Publication-%s in tasks file with value '%s' and in UDD with value '%s'" % (self.properties['name'], pub, self.properties['published'][pub], row[pub]))
                 self.properties['published'][pub] = row[pub]
 
 
@@ -933,7 +933,7 @@ class Tasks:
             list = []
             for dep in use_dependencystatus:
                 for tdep in tdeps.dependencies[dep]:
-                    list.append(tdep.pkg)
+                    list.append(tdep.properties['name'])
             ret[task] = list
         return ret
 
@@ -950,7 +950,7 @@ class Tasks:
                     if 'outdated' in tdep.properties:
                         # versions are ordered lists      ---v--- last one is needed
                         pkgList.append({
-                            'name': tdep.pkg,
+                            'name': tdep.properties['name'],
                             'debian_version': tdep.properties['version'][-1]['version'],
                             'upstream_version': tdep.properties['outdated']['version'],
                             'maintainer': tdep.properties.get('maintainer'),
@@ -976,11 +976,11 @@ class Tasks:
                 for tdep in tdeps.dependencies[dep]:
                     # add only packages in main, because others do not have DDTP translations
                     if tdep.properties['component'] == 'main':
-                        self.alldeps_in_main.append(tdep.pkg)
-                        self.alldeps_in_main_info[tdep.pkg] = tdep
+                        self.alldeps_in_main.append(tdep.properties['name'])
+                        self.alldeps_in_main_info[tdep.properties['name']] = tdep
             # Also add meta package itself to make use of translated meta package description
-            self.alldeps_in_main.append(self.tasks[task].metapkg.pkg)
-            self.alldeps_in_main_info[self.tasks[task].metapkg.pkg] = self.tasks[task].metapkg
+            self.alldeps_in_main.append(self.tasks[task].metapkg.properties['name'])
+            self.alldeps_in_main_info[self.tasks[task].metapkg.properties['name']] = self.tasks[task].metapkg
         self.alldeps_in_main.sort()
         return self.alldeps_in_main
 
@@ -998,13 +998,13 @@ class Tasks:
             for dependency in tdeps.dependencies:
                 for dep in tdeps.dependencies[dependency]:
                     if dep.properties['Enhances'] != {}:
-                        logger.debug("Package %s is enhanced by:" % dep.pkg)
+                        logger.debug("Package %s is enhanced by:" % dep.properties['name'])
                         for enh in dep.properties['Enhances']:
                             # seek for Enhances on same page
                             found = 0
                             for seek_dependency in tdeps.dependencies:
                                 for enhdep in tdeps.dependencies[seek_dependency]:
-                                    if enh == enhdep.pkg:
+                                    if enh == enhdep.properties['name']:
                                         dep.properties['Enhances'][enh] = '#' + enh
                                         found = 1  # found enhances in same task
                                         break
@@ -1015,7 +1015,7 @@ class Tasks:
                                     enhtdeps = self.tasks[enhtask]
                                     for seek_dependency in enhtdeps.dependencies:
                                         for enhdep in enhtdeps.dependencies[seek_dependency]:
-                                            if enh == enhdep.pkg:
+                                            if enh == enhdep.properties['name']:
                                                 dep.properties['Enhances'][enh] = './' + enhtask + '#' + enh
                                                 found = 1  # found enhances in other task
                                                 break
@@ -1075,7 +1075,7 @@ class TaskDependencies:
                     self.metapkg.desc[lang['ddtp']]['long'] = PrepareMarkdownInput(ddtptranslations['long_description_' + lang['ddtp']])
                 except AttributeError as err:
                     logger.error("===> AttributeError in metapackage long %s (lang='%s'): '%s'; ErrTxt: %s"
-                                 % (self.metapkg.pkg, lang['ddtp'], ddtptranslations['long_description_' + lang['ddtp']], err))
+                                 % (self.metapkg.properties['name'], lang['ddtp'], ddtptranslations['long_description_' + lang['ddtp']], err))
                     self.metapkg.desc[lang['ddtp']]['long'] = 'Missing long description'
 
     def _AppendDependency2List(self, dep, source):
@@ -1084,7 +1084,7 @@ class TaskDependencies:
         if dep is None:
             return
         if dep.dep_strength == 'Ignore' or dep.dep_strength == 'Avoid':
-            logger.debug("Ignore/Avoid package : %s" % dep.pkg)
+            logger.debug("Ignore/Avoid package : %s" % dep.properties['name'])
             return
         if source != 1:
             # In general we can just add the dependency to the list
@@ -1095,7 +1095,7 @@ class TaskDependencies:
         # no duplication occures
         found = False
         for hasdep in self.dependencies[dep.properties['pkgstatus']]:
-            if hasdep.pkg == dep.pkg:
+            if hasdep.properties['name'] == dep.properties['name']:
                 found = True
                 break
         if not found:
@@ -1184,7 +1184,7 @@ class TaskDependencies:
                             tmp_dep_list.append(dep)
                         if not dep_in_line.islower():
                             logger.warning("Package names may not contain upper case letters, so %s is an invalid package name which is turned into %s"
-                                           % (dep_in_line, dep.pkg))
+                                           % (dep_in_line, dep.properties['name']))
                             dep_in_line = dep_in_line.lower()
                         dep = DependantPackage(dep_in_line)
                         # Store the comments in case they might be usefull for later applications
@@ -1373,7 +1373,7 @@ class TaskDependencies:
                     dep.properties['remark'] = remark
                 if fields_obsolete != [] and dep.properties['pkgstatus'] != 'new':
                     logger.info("Package %s is an official package and has information in UDD. The following extra information can be removed from tasks file %s: %s"
-                                % (dep.pkg, self.task, str(fields_obsolete)))
+                                % (dep.properties['name'], self.task, str(fields_obsolete)))
                 self._AppendDependency2List(dep, source)
 
         f.close()
@@ -1381,7 +1381,7 @@ class TaskDependencies:
         alldepends = []
         for status in self.dependencies.keys():
             for dep in self.dependencies[status]:
-                alldepends.append(dep.pkg)
+                alldepends.append(dep.properties['name'])
 
         if 'PrintedName' not in self.metapkg.properties:
             logger.error("Task file %s is lacking field 'Task' - and thus will be ignored" % self.taskfile)
@@ -1399,7 +1399,7 @@ class TaskDependencies:
                 found = False
                 for status in self.dependencies.keys():
                     for dep in self.dependencies[status]:
-                        if dep.pkg == row['package']:
+                        if dep.properties['name'] == row['package']:
                             found = True
                             break
                     if found:
@@ -1434,7 +1434,7 @@ class TaskDependencies:
                 if dep.desc['en'] and dep.desc['en']['short'] and 'debtags' not in dep.properties:
                     # prevent informing about packages which are just duplicated because of a broken query
                     logger.info("WNPP for package %s just closed - extra information can be removed from task file %s."
-                                % (dep.pkg, self.task))
+                                % (dep.properties['name'], self.task))
 
                 dep.properties['license'] = license_in_component[dep.properties['component']]
                 for prop in PROPERTIES:
@@ -1459,7 +1459,7 @@ class TaskDependencies:
                     for rel, ver, arch in zip(row['releases'], row['versions'],
                                               row['architectures']):
                         dep.properties['version'].append({
-                            'url': 'https://packages.debian.org/{0}/{1}'.format(rel, dep.pkg),
+                            'url': 'https://packages.debian.org/{0}/{1}'.format(rel, dep.properties['name']),
                             'release': rel,
                             'version': ver,
                             'archs': arch
@@ -1478,7 +1478,7 @@ class TaskDependencies:
                     # there is no reasonable way that debtags was set before,
                     # so something is wrong here and a warning should be issued 
                     if debtags:
-                        logger.warning("Debtags for package '%s' was just set." % dep.pkg
+                        logger.warning("Debtags for package '%s' was just set." % dep.properties['name']
                                        + " A duplicated result from database query is suspected."
                                        + " Please check the result!")
 
@@ -1515,7 +1515,7 @@ class TaskDependencies:
 
                 # link to packages.debian.org search page to see overview about all
                 # package versions in all releases
-                dep.properties['pkg-url'] = PKGURLMASK % dep.pkg
+                dep.properties['pkg-url'] = PKGURLMASK % dep.properties['name']
 
                 for lang in languages:
                     if row.get('description_' + lang['ddtp']):
@@ -1525,28 +1525,28 @@ class TaskDependencies:
                         if row['long_description_' + lang['ddtp']]:
                             dep.desc[lang['ddtp']]['long'] = PrepareMarkdownInput(row['long_description_' + lang['ddtp']])
                 if 'short' not in dep.desc['en']:
-                    logger.error("Dep has no English short description: %s", dep.pkg)
-                    dep.desc['en']['short'] = "??? missing short description for package %s :-(" % dep.pkg
+                    logger.error("Dep has no English short description: %s", dep.properties['name'])
+                    dep.desc['en']['short'] = "??? missing short description for package %s :-(" % dep.properties['name']
 
                 if row['maintainer']:
                     (_name, _url) = email.utils.parseaddr(row['maintainer'])
                     dep.properties['maintainer'] = {'name': _name, 'email': _url}
 
                 if row.get('edam_topics'):
-                    logger.info("Edam topics found for package %s: %s" % (dep.pkg, str(row['edam_topics'])))
+                    logger.info("Edam topics found for package %s: %s" % (dep.properties['name'], str(row['edam_topics'])))
 
                 # Publications
                 dep.SetPublications(self.task, row)
 
-                pkgs_in_pool.append(dep.pkg)
+                pkgs_in_pool.append(dep.properties['name'])
                 # DEBUG
                 # print dep
 
         pkgs_not_in_pool = []
         for status in self.dependencies.keys():
             for dep in self.dependencies[status]:
-                if dep.pkg not in pkgs_in_pool:
-                    pkgs_not_in_pool.append(dep.pkg)
+                if dep.properties['name'] not in pkgs_in_pool:
+                    pkgs_not_in_pool.append(dep.properties['name'])
 
         # Gather information about packages in NEW
         query = "EXECUTE query_new('%s')" % List2PgArray(pkgs_not_in_pool)
@@ -1559,7 +1559,7 @@ class TaskDependencies:
                 found = False
                 for status in self.dependencies.keys():
                     for dep in self.dependencies[status]:
-                        if dep.pkg == row['package']:
+                        if dep.properties['name'] == row['package']:
                             found = True
                             break
                     if found:
@@ -1579,7 +1579,7 @@ class TaskDependencies:
                 dep.properties['pkg-url'] = 'http://ftp-master.debian.org/new/%s_%s.html' % (row['source'], row['version'])
                 # Warn about remaining information of prospective package
                 if (dep.desc['en'] and dep.desc['en']['short']) or dep.properties['homepage'] != HOMEPAGENONE:
-                    logger.info("The package %s is not yet in Debian but it is just in the new queue. (Task %s)" % (dep.pkg, self.task))
+                    logger.info("The package %s is not yet in Debian but it is just in the new queue. (Task %s)" % (dep.properties['name'], self.task))
                 for prop in PROPERTIES:
                     dep.properties[prop] = row[prop]
                 dep.desc['en']['short'] = row['description_en']
@@ -1594,7 +1594,7 @@ class TaskDependencies:
                         changed = row['changed_by']
                     except TypeError as err:
                         changed = None
-                        logger.warning("Encoding problem for uploader to ftpnew of package '%s' in task %s (%s)" % (dep.pkg, self.task, err))
+                        logger.warning("Encoding problem for uploader to ftpnew of package '%s' in task %s (%s)" % (dep.properties['name'], self.task, err))
                     if changed:
                         (_name, _url) = email.utils.parseaddr(changed)
                         dep.properties['uploader'] = {'name': _name, 'email': _url}
@@ -1607,14 +1607,14 @@ class TaskDependencies:
             virtual_pkgs = RowDictionaries(curs)
             for status in self.dependencies.keys():
                 for dep in self.dependencies[status]:
-                    if dep.pkg not in pkgs_in_pool and dep.pkg not in pkgs_in_new:
+                    if dep.properties['name'] not in pkgs_in_pool and dep.properties['name'] not in pkgs_in_new:
                         found = False
                         for vp in virtual_pkgs:
                             for pr in vp['provides'].split(','):
                                 prs = pr.strip()
-                                if dep.pkg == prs:
+                                if dep.properties['name'] == prs:
                                     pkgs_virtual.append(prs)
-                                    logger.info("Virtual package %s is provided by package %s for task %s" % (dep.pkg, vp['package'], self.task))
+                                    logger.info("Virtual package %s is provided by package %s for task %s" % (dep.properties['name'], vp['package'], self.task))
                                     found = True
                                     break
                             if found:
@@ -1623,8 +1623,8 @@ class TaskDependencies:
         pkgs_not_in_pool = []
         for status in self.dependencies.keys():
             for dep in self.dependencies[status]:
-                if dep.pkg not in pkgs_in_pool and dep.pkg not in pkgs_virtual:
-                    pkgs_not_in_pool.append(dep.pkg)
+                if dep.properties['name'] not in pkgs_in_pool and dep.properties['name'] not in pkgs_virtual:
+                    pkgs_not_in_pool.append(dep.properties['name'])
         # Gather information about packages in Vcs
         query = "EXECUTE query_vcs('%s')" % List2PgArray(pkgs_not_in_pool)
         _execute_udd_query(query)
@@ -1637,7 +1637,7 @@ class TaskDependencies:
                 found = False
                 for status in self.dependencies.keys():
                     for dep in self.dependencies[status]:
-                        if dep.pkg == row['package']:
+                        if dep.properties['name'] == row['package']:
                             found = True
                             break
                     if found:
@@ -1679,7 +1679,7 @@ class TaskDependencies:
                         changed = row['changed_by']
                     except TypeError as err:
                         changed = None
-                        logger.warning("Encoding problem for changelog author in Vcs of package '%s' in task %s (%s)" % (dep.pkg, self.task, err))
+                        logger.warning("Encoding problem for changelog author in Vcs of package '%s' in task %s (%s)" % (dep.properties['name'], self.task, err))
                     if changed:
                         (_name, _url) = email.utils.parseaddr(changed)
                         dep.properties['uploader'] = {'name': _name, 'email': _url}
@@ -1687,20 +1687,20 @@ class TaskDependencies:
         # Verify whether packages which are neither in pool, new, vcs nor virtual have sufficient information in task file
         for status in self.dependencies.keys():
             for dep in self.dependencies[status]:
-                if dep.pkg not in pkgs_in_pool and dep.pkg not in pkgs_in_new and dep.pkg not in pkgs_virtual and dep.properties['pkgstatus'] in ('unknown', 'pkgvcs'):
+                if dep.properties['name'] not in pkgs_in_pool and dep.properties['name'] not in pkgs_in_new and dep.properties['name'] not in pkgs_virtual and dep.properties['pkgstatus'] in ('unknown', 'pkgvcs'):
                     # If only Vcs fields are given than we currently do not know enough to print package information
                     if dep.properties['pkgstatus'] == 'pkgvcs' and (dep.properties['homepage'] == HOMEPAGENONE or dep.desc['en'] == {}):
-                        logger.error("Package %s in task %s has only Vcs information - please provide more information" % (dep.pkg, self.task))
+                        logger.error("Package %s in task %s has only Vcs information - please provide more information" % (dep.properties['name'], self.task))
                         self.dependencies[status].remove(dep)
                         # dep.properties['pkgstatus'] == 'unknown'
                     if dep.properties['homepage'] == HOMEPAGENONE:
                         if dep.desc['en'] == {}:
-                            logger.error("Package %s in task %s neither in pool nor new and is lacking homepage and description - ignored" % (dep.pkg, self.task))
+                            logger.error("Package %s in task %s neither in pool nor new and is lacking homepage and description - ignored" % (dep.properties['name'], self.task))
                         else:
-                            logger.error("Package %s in task %s neither in pool nor new and has no homepage information - ignored (%s)" % (dep.pkg, self.task, dep.properties['pkgstatus']))
+                            logger.error("Package %s in task %s neither in pool nor new and has no homepage information - ignored (%s)" % (dep.properties['name'], self.task, dep.properties['pkgstatus']))
                     else:
                         if dep.desc['en'] == {}:
-                            logger.error("Package %s neither in pool nor new and has no description - ignored" % dep.pkg)
+                            logger.error("Package %s neither in pool nor new and has no description - ignored" % dep.properties['name'])
                 else:
                     # prevent printing WNPP of packages inside Debian
                     if 'wnpp' in dep.properties and dep.properties['pkgstatus'] not in ('wnpp', 'pkgvcs'):
@@ -1714,7 +1714,7 @@ class TaskDependencies:
         return sum(len(dep) for dep in self.dependencies.values())
 
     def _QueryUDD4Package(self, source):
-        query = "EXECUTE pkg_releases ('%s', '%s')" % (self.pkg, self.properties['component'])
+        query = "EXECUTE pkg_releases ('%s', '%s')" % (self.properties['name'], self.properties['component'])
         _execute_udd_query(query)
         has_official = 0
         for rel in curs.fetchall():
@@ -1723,7 +1723,7 @@ class TaskDependencies:
                 has_official = 1
 
         # Version in stable / testing for long table
-        query = "EXECUTE pkg_versions_stable_testing ('%s')" % (self.pkg)
+        query = "EXECUTE pkg_versions_stable_testing ('%s')" % (self.properties['name'])
         _execute_udd_query(query)
         if curs.rowcount > 0:
             prefix = 'Versions: '
@@ -1760,12 +1760,12 @@ class TaskDependencies:
                         vcs['browser'] = BrowserFromVcsURL(vcs['type'], vcs['url'])
             # We are only interested in source packages (for instance for Bugs page)
             if source == 1:
-                self.pkg = self.properties['source']
-            # Stop using source package in self.pkg because we need the source package to obtain latest uploaders and
+                self.properties['name'] = self.properties['source']
+            # Stop using source package in self.properties['name'] because we need the source package to obtain latest uploaders and
             # and bugs should be rendered in the same job - so we need the differentiation anyway
             self.src = self.properties['source']
         else:
-            logger.error("Failed to obtain source for package", self.pkg)
+            logger.error("Failed to obtain source for package", self.properties['name'])
             return
 
         if source == 0:
@@ -1776,7 +1776,7 @@ class TaskDependencies:
             if flag == 0:
                 # If there was no such package found query UDD whether any package provides this name
                 # This is often the case for libraries with versions in the package name
-                query = "EXECUTE query_provides ('%s')" % (dep.pkg)
+                query = "EXECUTE query_provides ('%s')" % (dep.properties['name'])
                 _execute_udd_query(query)
                 if curs.rowcount > 0:
                     has_expilicite = 0
@@ -1784,21 +1784,21 @@ class TaskDependencies:
                     for row in curs.fetchall():
                         VirtProvides.append(row[0])
                         for hasdeps in tmp_dep_list:
-                            if row[0] == hasdeps.pkg:
+                            if row[0] == hasdeps.properties['name']:
                                 logger.error("    --> %s is mentioned explicitely in dependency list" % row[0])
                                 has_expilicite = 1
                     if has_expilicite == 1:
-                        logger.error("Do not keep a record of virtual package %s which has explicite package dependencies" % dep.pkg)
+                        logger.error("Do not keep a record of virtual package %s which has explicite package dependencies" % dep.properties['name'])
                         # ATTENTION: THIS HAS TO BE CHANGED FOR blends-dev BY AN OPTIONAL parameter
 #                        continue
 
-                    logger.error("Use real package %s instead of virtual package %s." % (VirtProvides[0], dep.pkg))
-                    dep.pkg = VirtProvides[0]
+                    logger.error("Use real package %s instead of virtual package %s." % (VirtProvides[0], dep.properties['name']))
+                    dep.properties['name'] = VirtProvides[0]
                     dep._QueryUDD4Package(source)
 
                     if len(VirtProvides) > 1:
                         logger.error("Virtual package %s is provided by more than one package (%s).  Make sure you mention a real package in addition!"
-                                     % (dep.pkg, str(VirtProvides)))
+                                     % (dep.properties['name'], str(VirtProvides)))
 
                         for virt_provides in VirtProvides[1:]:
                             # Add all remaining packages which provide a virtual package to the list
@@ -1815,7 +1815,7 @@ class TaskDependencies:
                             dep.dep_strength   = key
                             dep._QueryUDD4Package(source)
                 else:
-                    logger.warning("Dependency with unknown status: %s (Task %s)" % (dep.pkg, self.task))
+                    logger.warning("Dependency with unknown status: %s (Task %s)" % (dep.properties['name'], self.task))
 
         for dependency in self.dependencies.values():
             dependency.sort()
diff --git a/webtools/blendstasktools_udd.py b/webtools/blendstasktools_udd.py
index 1edd5ea..8237603 100644
--- a/webtools/blendstasktools_udd.py
+++ b/webtools/blendstasktools_udd.py
@@ -674,9 +674,9 @@ class DependantPackage:
     # Hold information about a package that is in dependency list
 
     def __init__(self, name):
-        self.pkg            = name  # Name of dependant package
         self.source         = None  # Name of source package of the dependency
         self.properties     = {}
+        self.properties['name']        = name  # Name of dependant package
         self.properties['license']     = 'unknown'
         self.properties['pkgstatus']   = 'unknown'
         self.properties['component']     = None
@@ -702,10 +702,10 @@ class DependantPackage:
         if other is None:
             return -2
         # Sort according to package name
-        return cmp(self.pkg, other.pkg)
+        return cmp(self.properties['name'], other.properties['name'])
 
     def __str__(self):
-        ret = "pkg:"    + self.pkg
+        ret = "pkg:"    + self.properties['name']
         if self.dep_strength:
             ret += ", Dep_strength: " + self.dep_strength
         if self.desc:
@@ -760,19 +760,19 @@ class DependantPackage:
                         # emergency brake if algorithm fails to detect non-names like '1000 Genome Project Data Processing Subgroup'
                         if authors_string.count(',') > row[pub].count(' and '):
                             logger.warning("Refuse to change Author string in %s: '%s'(%i) -> '%s'(%i)"
-                                           % (self.pkg, row[pub], row[pub].count(' and '), authors_string, authors_string.count(',')))
+                                           % (self.properties['name'], row[pub], row[pub].count(' and '), authors_string, authors_string.count(',')))
                         else:
                             logger.debug("Author string changed in %s: '%s' -> '%s'"
-                                         % (self.pkg, row[pub], authors_string))
+                                         % (self.properties['name'], row[pub], authors_string))
                             row[pub] = authors_string
                 if 'published' not in self.properties:
                     self.properties['published'] = {}
                 if pub in self.properties['published']:
                     if self.properties['published'][pub] == row[pub]:
-                        rmpub.write("%s: %s: Published-%s: %s" % (taskname, self.pkg, pub, row[pub]))
-                        logger.info("%s/%s: Publication-%s = %s can be removed"  % (taskname, self.pkg, pub, row[pub]))
+                        rmpub.write("%s: %s: Published-%s: %s" % (taskname, self.properties['name'], pub, row[pub]))
+                        logger.info("%s/%s: Publication-%s = %s can be removed"  % (taskname, self.properties['name'], pub, row[pub]))
                     else:
-                        logger.info("%s conflicting fields Publication-%s in tasks file with value '%s' and in UDD with value '%s'" % (self.pkg, pub, self.properties['published'][pub], row[pub]))
+                        logger.info("%s conflicting fields Publication-%s in tasks file with value '%s' and in UDD with value '%s'" % (self.properties['name'], pub, self.properties['published'][pub], row[pub]))
                 self.properties['published'][pub] = row[pub]
 
 
@@ -886,7 +886,7 @@ class Tasks:
             list = []
             for dep in use_dependencystatus:
                 for tdep in tdeps.dependencies[dep]:
-                    list.append(tdep.pkg)
+                    list.append(tdep.properties['name'])
             ret[task] = list
         return ret
 
@@ -906,11 +906,11 @@ class Tasks:
                 for tdep in tdeps.dependencies[dep]:
                     # add only packages in main, because others do not have DDTP translations
                     if tdep.properties['component'] == 'main':
-                        self.alldeps_in_main.append(tdep.pkg)
-                        self.alldeps_in_main_info[tdep.pkg] = tdep
+                        self.alldeps_in_main.append(tdep.properties['name'])
+                        self.alldeps_in_main_info[tdep.properties['name']] = tdep
             # Also add meta package itself to make use of translated meta package description
-            self.alldeps_in_main.append(self.tasks[task].metapkg.pkg)
-            self.alldeps_in_main_info[self.tasks[task].metapkg.pkg] = self.tasks[task].metapkg
+            self.alldeps_in_main.append(self.tasks[task].metapkg.properties['name'])
+            self.alldeps_in_main_info[self.tasks[task].metapkg.properties['name']] = self.tasks[task].metapkg
         self.alldeps_in_main.sort()
         return self.alldeps_in_main
 
@@ -928,13 +928,13 @@ class Tasks:
             for dependency in tdeps.dependencies:
                 for dep in tdeps.dependencies[dependency]:
                     if dep.properties['Enhances'] != {}:
-                        logger.debug("Package %s is enhanced by:" % dep.pkg)
+                        logger.debug("Package %s is enhanced by:" % dep.properties['name'])
                         for enh in dep.properties['Enhances']:
                             # seek for Enhances on same page
                             found = 0
                             for seek_dependency in tdeps.dependencies:
                                 for enhdep in tdeps.dependencies[seek_dependency]:
-                                    if enh == enhdep.pkg:
+                                    if enh == enhdep.properties['name']:
                                         dep.properties['Enhances'][enh] = '#' + enh
                                         found = 1  # found enhances in same task
                                         break
@@ -945,7 +945,7 @@ class Tasks:
                                     enhtdeps = self.tasks[enhtask]
                                     for seek_dependency in enhtdeps.dependencies:
                                         for enhdep in enhtdeps.dependencies[seek_dependency]:
-                                            if enh == enhdep.pkg:
+                                            if enh == enhdep.properties['name']:
                                                 dep.properties['Enhances'][enh] = './' + enhtask + '#' + enh
                                                 found = 1  # found enhances in other task
                                                 break
@@ -996,7 +996,7 @@ class TaskDependencies:
                     self.metapkg.desc[lang['ddtp']]['long'] = PrepareMarkdownInput(dtptranslations['long_description_' + lang['ddtp']])
                 except AttributeError as err:
                     logger.error("===> AttributeError in metapackage long %s (lang='%s'): '%s'; ErrTxt: %s"
-                                 % (self.metapkg.pkg, lang, ddtptranslations['long_description_' + lang['ddtp']], err))
+                                 % (self.metapkg.properties['name'], lang, ddtptranslations['long_description_' + lang['ddtp']], err))
                     self.metapkg.desc[lang['ddtp']]['long'] = 'Missing long description'
 
     def _AppendDependency2List(self, dep):
@@ -1005,10 +1005,10 @@ class TaskDependencies:
         if dep is None:
             return
         if dep.dep_strength == 'i' or dep.dep_strength == 'a':
-            logger.debug("Ignore/Avoid package : %s" % dep.pkg)
+            logger.debug("Ignore/Avoid package : %s" % dep.properties['name'])
             return
 
-        logger.debug("Appending package to list : %s" % dep.pkg)
+        logger.debug("Appending package to list : %s" % dep.properties['name'])
         self.dependencies[dep.properties['pkgstatus']].append(dep)
         return
 
@@ -1032,8 +1032,8 @@ class TaskDependencies:
             # seek for package name in list of packages mentioned in tasks file
             found = False
             for dep in dependencies:
-                if dep.pkg == row['package']:
-                    logger.debug("Package : %s" % dep.pkg)
+                if dep.properties['name'] == row['package']:
+                    logger.debug("Package : %s" % dep.properties['name'])
                     found = True
                     break
 	
@@ -1097,7 +1097,7 @@ class TaskDependencies:
                                                  row['architectures']),
                                              key=lambda x: release_order[x[0]]):
                     dep.properties['version'].append({
-                        'url': 'https://packages.debian.org/{0}/{1}'.format(rel, dep.pkg),
+                        'url': 'https://packages.debian.org/{0}/{1}'.format(rel, dep.properties['name']),
                         'release': rel,
                         'version': ver,
                         'archs': arch
@@ -1115,7 +1115,7 @@ class TaskDependencies:
                 # there is no reasonable way that debtags was set before,
                 # so something is wrong here and a warning should be issued 
                 if debtags:
-                    logger.warning("Debtags for package '%s' was just set." % dep.pkg
+                    logger.warning("Debtags for package '%s' was just set." % dep.properties['name']
                                    + " A duplicated result from database query is suspected."
                                    + " Please check the result!")
 
@@ -1152,7 +1152,7 @@ class TaskDependencies:
 
             # link to packages.debian.org search page to see overview about all
             # package versions in all releases
-            dep.properties['pkg-url'] = PKGURLMASK % dep.pkg
+            dep.properties['pkg-url'] = PKGURLMASK % dep.properties['name']
 
             for lang in languages:
                 if row.get('description_' + lang['ddtp']):
@@ -1162,14 +1162,14 @@ class TaskDependencies:
                     if row['long_description_' + lang['ddtp']]:
                         dep.desc[lang['ddtp']]['long'] = PrepareMarkdownInput(row['long_description_' + lang['ddtp']])
             if 'short' not in dep.desc['en']:
-                logger.error("Dep has no English short description: %s", dep.pkg)
-                dep.desc['en']['short'] = "??? missing short description for package %s :-(" % dep.pkg
+                logger.error("Dep has no English short description: %s", dep.properties['name'])
+                dep.desc['en']['short'] = "??? missing short description for package %s :-(" % dep.properties['name']
                     
             (_name, _url) = email.utils.parseaddr(row['maintainer'])
             dep.properties['maintainer'] = {'name': _name, 'email': _url}
 
             if row.get('edam_topics'):
-                logger.info("Edam topics found for package %s: %s" % (dep.pkg, str(row['edam_topics'])))
+                logger.info("Edam topics found for package %s: %s" % (dep.properties['name'], str(row['edam_topics'])))
 
             if row.get('remark'):
                 (shortDesc, longDesc) = SplitDescription(row['remark'])
@@ -1213,7 +1213,7 @@ class TaskDependencies:
                 # dep.license
                 dep.dep_strength = each_dep[1]  # Depends: 'd' or Suggests: 's'
                
-                alldepends.append(dep.pkg)
+                alldepends.append(dep.properties['name'])
                 dependencies.append(dep)
                 #self.dependencies[dep.pkgstat].append(dep)
 
@@ -1239,7 +1239,7 @@ class TaskDependencies:
                 dep.properties['license'] = each_pros[1]
                 dep.dep_strength = each_pros[2]
                 
-                alldepends.append(dep.pkg)
+                alldepends.append(dep.properties['name'])
                 dependencies.append(dep)
 	 
         query = "EXECUTE query_vcs('%s')" % List2PgArray(alldepends)
@@ -1262,7 +1262,7 @@ class TaskDependencies:
             for each_new_pkg in pkgs_new:
                 dep = DependantPackage(each_new_pkg[0])
                 
-                alldepends.append(dep.pkg)
+                alldepends.append(dep.properties['name'])
                 dependencies.append(dep)
 
         query = "EXECUTE query_new('%s')" % List2PgArray(alldepends)
diff --git a/webtools/tasks.py b/webtools/tasks.py
index 8328f2d..ae5f3ec 100755
--- a/webtools/tasks.py
+++ b/webtools/tasks.py
@@ -213,7 +213,7 @@ for lang in languages:
                     # unknown status but only once and not per language
                     for dep in tasks.tasks[task].dependencies[status]:
                         stderr.write("Warning: Dependency with unknown status: %s\n"
-                                     % dep.pkg)
+                                     % dep.properties['name'])
         # Keep the Project lists per task to be able to loop over all tasks in plain package list
         data['projects'][task] = tasks.tasks[task].dependencies
         data['othertasks']     = _("Links to other tasks")
diff --git a/webtools/tasks_udd.py b/webtools/tasks_udd.py
index 84bc572..e069afc 100755
--- a/webtools/tasks_udd.py
+++ b/webtools/tasks_udd.py
@@ -213,7 +213,7 @@ for lang in languages:
                     # unknown status but only once and not per language
                     for dep in tasks.tasks[task].dependencies[status]:
                         stderr.write("Warning: Dependency with unknown status: %s\n"
-                                     % dep.pkg)
+                                     % dep.properties['name'])
         # Keep the Project lists per task to be able to loop over all tasks in plain package list
         data['projects'][task] = tasks.tasks[task].dependencies
         data['othertasks']     = _("Links to other tasks")
diff --git a/webtools/templates/debian-astro_idx.xhtml b/webtools/templates/debian-astro_idx.xhtml
index 7482c47..8775b5b 100644
--- a/webtools/templates/debian-astro_idx.xhtml
+++ b/webtools/templates/debian-astro_idx.xhtml
@@ -59,7 +59,7 @@
                        deps = []
                        for d in task.dependencies.values():
                           deps += d
-                       pkg = (dep for dep in deps if dep.pkg == pkg_name).next()
+                       pkg = (dep for dep in deps if dep.properties['name'] == pkg_name).next()
                    except:
                        pkg = None
                 ?>
diff --git a/webtools/templates/packagelist.xhtml b/webtools/templates/packagelist.xhtml
index 4acbb9f..3ac0b7b 100644
--- a/webtools/templates/packagelist.xhtml
+++ b/webtools/templates/packagelist.xhtml
@@ -57,11 +57,11 @@
 	  <dl>
 	  <py:for each="project in projects[task][pstatus]">
 		  <dt><span py:choose="project.properties['homepage']">
-		    <span py:when="'#'">${project.pkg.capitalize()}</span>
-		    <span py:otherwise=""><a href="${project.properties['homepage']}">${project.pkg.capitalize()}</a></span>
+		    <span py:when="'#'">${project.properties['name'].capitalize()}</span>
+		    <span py:otherwise=""><a href="${project.properties['homepage']}">${project.properties['name'].capitalize()}</a></span>
 		  </span>
                   <span py:choose="">
-		    <span py:when="len(project.properties['stable_testing_version'])>0">(<py:for each="version in project.properties['stable_testing_version']">${version[3]} <a href="http://packages.debian.org/${version[0]}/${project.pkg}">${version[2]}</a></py:for>)</span>
+		    <span py:when="len(project.properties['stable_testing_version'])>0">(<py:for each="version in project.properties['stable_testing_version']">${version[3]} <a href="http://packages.debian.org/${version[0]}/${project.properties['name']}">${version[2]}</a></py:for>)</span>
                   </span>
 		  </dt>
 		  <dd><span py:choose="">
diff --git a/webtools/templates/packages.xhtml b/webtools/templates/packages.xhtml
index 89ddb59..7d6f0c3 100644
--- a/webtools/templates/packages.xhtml
+++ b/webtools/templates/packages.xhtml
@@ -223,13 +223,13 @@ function show_fulldesc(hash) {
 	</em>
 	<py:choose>
 	  <py:when test="lang in tasks[task].metapkg.desc">
-	    <a class="editlink" title="${fixtranslation}" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.pkg}" py:if="lang != 'en'">
+	    <a class="editlink" title="${fixtranslation}" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.properties['name']}" py:if="lang != 'en'">
 	      ✏
 	    </a>
 	    ${render_longdesc(tasks[task].metapkg.desc[lang].get('long', ''))}
 	  </py:when>
 	  <py:otherwise>
-	    <a class="editlink" title="${translatedesc}" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.pkg}" py:if="lang != 'en'">
+	    <a class="editlink" title="${translatedesc}" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.properties['name']}" py:if="lang != 'en'">
 	      ✏
 	    </a>
 	    ${render_longdesc(tasks[task].metapkg.desc['en'].get('long', ''))}
@@ -262,19 +262,19 @@ function show_fulldesc(hash) {
 	      <th>Description</th>
 	    </tr>
 	    <py:for each="line, project in enumerate(projects[task][pstatus])">
-	      <tr id="${project.pkg}.short"
+	      <tr id="${project.properties['name']}.short"
 		  class="pkgdesc-short ${'alternate-color' if line % 2 == 1
 			 else ''}">
 		<td>
-		  <a onclick="toggle_visibility('${project.pkg}');"
+		  <a onclick="toggle_visibility('${project.properties['name']}');"
 		     style="cursor:pointer;" title="Click to toggle details">
 		    ▾
 		  </a>
 		</td>
 		<td style="text-transform:capitalize;">
-		  <a onclick="toggle_visibility('${project.pkg}');"
+		  <a onclick="toggle_visibility('${project.properties['name']}');"
 		     style="cursor:pointer;" title="Click to toggle details">
-		    ${project.pkg}
+		    ${project.properties['name']}
 		  </a>
 		</td>
 		<td>
@@ -317,7 +317,7 @@ function show_fulldesc(hash) {
 		  </py:if>
 		</td>
 		<td>
-		  <a onclick="toggle_visibility('${project.pkg}');"
+		  <a onclick="toggle_visibility('${project.properties['name']}');"
 		     style="cursor:pointer;" title="Click to toggle details">
 		    <py:choose>
 	              <py:when test="lang in project.desc">${project.desc[lang]['short']}</py:when>
@@ -326,11 +326,11 @@ function show_fulldesc(hash) {
 		  </a>
 		</td>
 	      </tr>
-	      <tr id="${project.pkg}" style="display:none;"
+	      <tr id="${project.properties['name']}" style="display:none;"
 		  class="pkgdesc-full ${'alternate-color' if line % 2 == 1 else ''}">
 		<td colspan="4">
 		  <h3>
-		    ${project.pkg.capitalize()}:
+		    ${project.properties['name'].capitalize()}:
 		    <py:choose>
 	              <py:when test="lang in project.desc">${project.desc[lang]['short']}</py:when>
 	              <py:otherwise>${project.desc['en']['short']}</py:otherwise>
@@ -340,13 +340,13 @@ function show_fulldesc(hash) {
 		    <py:choose>
 		      <py:when test="'screenshot' in project.properties">
 			<dt class="screenshot">
-			  <a class="tooltip" href="http://screenshots.debian.net/package/${project.pkg}">
+			  <a class="tooltip" href="http://screenshots.debian.net/package/${project.properties['name']}">
 			    <img src="${project.properties['screenshot']['icon']}" alt="Description:" />
 			    <span class="tooltip centered">
 			      <img src="${project.properties['screenshot']['image']}" />
 			      <table py:if="'screenshots' in project.properties['screenshot']" class="versionclass">
 				<tr><th colspan="3"
-					class="versionclass"><strong>Other screenshots of package ${project.pkg}</strong></th></tr>
+					class="versionclass"><strong>Other screenshots of package ${project.properties['name']}</strong></th></tr>
 				<tr><th class="version">Version</th><th class="archs">URL</th></tr>
 				<py:for each="screenshot in project.properties['screenshot']['screenshots']">
 				  <tr><td class="version">${screenshot['version']}</td><td class="archs"><a href="${screenshot['url']}">${screenshot['url']}</a></td></tr>
@@ -363,7 +363,7 @@ function show_fulldesc(hash) {
 		    <dd>
 		      <py:choose>
 			<py:when test="lang != 'en' and lang in project.desc">
-			  <a class="editlink" title="${fixtranslation}" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">
+			  <a class="editlink" title="${fixtranslation}" href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.properties['name']}">
 			    ✏
 			  </a>
 			  ${render_longdesc(project.desc[lang].get('long', ''))}
@@ -468,7 +468,7 @@ function show_fulldesc(hash) {
 		    <py:if test="'debtags' in project.properties">
 		      <dt>Tags</dt>
 		      <dd>
-			<a class="editlink" title="Edit tags" href="https://debtags.debian.org/edit/${project.pkg}">
+			<a class="editlink" title="Edit tags" href="https://debtags.debian.org/edit/${project.properties['name']}">
 			  ✏
 			</a>
 			<dl class="debtags desc-inline">
@@ -527,14 +527,14 @@ function show_fulldesc(hash) {
 			</py:if>
 			<py:if test="project.properties['pkgstatus'] in ('official_high', 'official_low', 'non-free', 'experimental')">
 			  <li>
-			    <a href="https://tracker.debian.org/pkg/${project.pkg}">
+			    <a href="https://tracker.debian.org/pkg/${project.properties['name']}">
 			      Maintainer page
 			    </a>
 			  </li>
 			</py:if>
 			<py:if test="project.properties['pkgstatus'] in ('official_high', 'official_low', 'non-free', 'experimental')">
 			  <li>
-			    <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?repeatmerged=no&src=${project.pkg}">
+			    <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?repeatmerged=no&src=${project.properties['name']}">
 			      Bugs
 			    </a>
 			  </li>
@@ -607,17 +607,17 @@ function show_fulldesc(hash) {
 		      <dd>
 			<ul class="desc-inline">
 			  <li py:if="'screenshot' not in  project.properties">
-			    <a href="http://screenshots.debian.net/uploadfile?packagename=${project.pkg}">
+			    <a href="http://screenshots.debian.net/uploadfile?packagename=${project.properties['name']}">
 			      Upload Screenshot
 			    </a>
 			  </li>
 			  <li py:if="'debtags' not in project.properties">
-			    <a href="https://debtags.debian.org/edit/${project.pkg}">
+			    <a href="https://debtags.debian.org/edit/${project.properties['name']}">
 			      Create tags
 			    </a>
 			  </li>
 			  <li py:if="lang != 'en' and lang not in project.desc">
-			    <a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.pkg}">
+			    <a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.properties['name']}">
 			      ${translatedesc}
 			    </a>
 			  </li>
@@ -626,7 +626,7 @@ function show_fulldesc(hash) {
 		    </py:if>
 		  </dl>
 		  <div style="position:relative;">
-		    <a style="position:absolute; right:0; bottom:1em; cursor:pointer;" onclick="toggle_visibility('${project.pkg}');"
+		    <a style="position:absolute; right:0; bottom:1em; cursor:pointer;" onclick="toggle_visibility('${project.properties['name']}');"
 		       title="Click to close details">Close</a></div>
 		</td>
 	      </tr>
diff --git a/webtools/templates/tasks.xhtml b/webtools/templates/tasks.xhtml
index d178ec8..7444e5d 100644
--- a/webtools/templates/tasks.xhtml
+++ b/webtools/templates/tasks.xhtml
@@ -36,10 +36,10 @@
 				</div>
 				<p><span py:choose="">
 	           <span py:when="lang in tasks[task].metapkg.desc">${render_longdesc(tasks[task].metapkg.desc[lang].get('long', ''))}
-                     <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.pkg}">${fixtranslation}</a></div>
+                     <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${tasks[task].metapkg.properties['name']}">${fixtranslation}</a></div>
                    </span>
 	           <span py:otherwise="">${render_longdesc(tasks[task].metapkg.desc['en'].get('long', ''))}
-                     <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.pkg}">${translatedesc}</a></div>
+                     <div class="transmpkg" py:if="lang != 'en'"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${tasks[task].metapkg.properties['name']}">${translatedesc}</a></div>
                    </span>
                  </span></p>
 			</div>
@@ -76,12 +76,12 @@
 <py:for each="pstatus in dependencies[task]">
 			<h2><a id="${pstatus}-debs" name="${pstatus}-debs"/>${headline[pstatus]}</h2>
    <py:for each="project in projects[task][pstatus]">
-     <table class="project" summary="${project.pkg}">
+     <table class="project" summary="${project.properties['name']}">
        <tbody>
 	 <tr class="deb-${pstatus}">
 	   <td class="project-name">
-	     <a name="${project.pkg}" id="${project.pkg}"/>
-	     <div class="pkgname">${project.pkg.capitalize()}
+	     <a name="${project.properties['name']}" id="${project.properties['name']}"/>
+	     <div class="pkgname">${project.properties['name'].capitalize()}
 	       <span class="wnpp" py:if="'wnpp' in project.properties"> - <a href="http://bugs.debian.org/${project.properties['wnpp']}">wnpp</a></span>
 	     </div>
 	     <div class="pkgdesc" py:choose="">
@@ -97,9 +97,9 @@
              </div>
 	   </td>
 	   <td py:if="'component' in project.properties and project.properties['pkgstatus'] != 'new' and project.properties['pkgstatus'] != 'pkgvcs'" class="project-info">
-	     <span py:if="project.properties['version']" class="tooltip" id="${project.pkg}-versions">
+	     <span py:if="project.properties['version']" class="tooltip" id="${project.properties['name']}-versions">
 	       <table class="versionclass">
-		 <tr><th colspan="3" class="versionclass"><strong>Versions of package ${project.pkg}</strong></th></tr>
+		 <tr><th colspan="3" class="versionclass"><strong>Versions of package ${project.properties['name']}</strong></th></tr>
 		 <tr><th class="release">Release</th><th class="version">Version</th><th class="archs">Architectures</th></tr>
 		 <py:for each="version in project.properties['version']">
 		   <tr><td class="release">${version['release']}</td><td class="version">${version['version']}</td><td class="archs">${version['archs']}</td></tr>
@@ -108,27 +108,27 @@
                  </tr>
 	       </table>
 	     </span>
-	     <span py:if="'debtags' in project.properties" class="tooltip" id="${project.pkg}-debtags">
+	     <span py:if="'debtags' in project.properties" class="tooltip" id="${project.properties['name']}-debtags">
 	       <table class="versionclass">
-		 <tr><th colspan="2" class="versionclass"><strong>Debtags of package ${project.pkg}:</strong></th></tr>
+		 <tr><th colspan="2" class="versionclass"><strong>Debtags of package ${project.properties['name']}:</strong></th></tr>
 		 <py:for each="tag, values in sorted(project.properties['debtags'].items())">
 		   <tr><td class="release">${tag}</td><td class="version">${', '.join(values)}</td></tr>
 		 </py:for>
 	       </table>
 	     </span>
 	     <div py:if="'popcon' in project.properties"
-	     class="popcon"><a href="http://qa.debian.org/popcon-png.php?packages=${project.pkg}%26show_vote=on%26show_recent=on%26want_legend=on">Popcon</a>:
+	     class="popcon"><a href="http://qa.debian.org/popcon-png.php?packages=${project.properties['name']}%26show_vote=on%26show_recent=on%26want_legend=on">Popcon</a>:
 	     ${project.properties['popcon']['vote']} users (${project.properties['popcon']['recent']} upd.)<sup><a href="#popconexplanation">*</a></sup></div>
 	     <div py:if="project.properties['version']">
 	       <div py:choose="">
-		 <div py:when="'outdated' not in project.properties" class="project-info" onmouseover="TagToTip('${project.pkg}-versions', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Versions and Archs</div>
-		 <div py:otherwise="" class="project-infomissing" onmouseover="TagToTip('${project.pkg}-versions', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()">Newer upstream!</div>
+		 <div py:when="'outdated' not in project.properties" class="project-info" onmouseover="TagToTip('${project.properties['name']}-versions', FIX, ['${project.properties['name']}', 0, 0])" onmouseout="UnTip()">Versions and Archs</div>
+		 <div py:otherwise="" class="project-infomissing" onmouseover="TagToTip('${project.properties['name']}-versions', FIX, ['${project.properties['name']}', 0, 0])" onmouseout="UnTip()">Newer upstream!</div>
 	       </div>
 	     </div>
 	     <div py:choose="">
-	       <div py:when="'debtags' in project.properties" class="project-info" onmouseover="TagToTip('${project.pkg}-debtags', FIX, ['${project.pkg}', 0, 0])" onmouseout="UnTip()"><a href="https://debtags.debian.org/edit/${project.pkg}">Edit Debtags</a></div>
+	       <div py:when="'debtags' in project.properties" class="project-info" onmouseover="TagToTip('${project.properties['name']}-debtags', FIX, ['${project.properties['name']}', 0, 0])" onmouseout="UnTip()"><a href="https://debtags.debian.org/edit/${project.properties['name']}">Edit Debtags</a></div>
                <div py:otherwise="">
-		 <div class="project-infomissing"><a href="https://debtags.debian.org/edit/${project.pkg}">Go tagging</a></div>
+		 <div class="project-infomissing"><a href="https://debtags.debian.org/edit/${project.properties['name']}">Go tagging</a></div>
 	       </div>
 	     </div>
            </td>
@@ -146,8 +146,8 @@
 	     </div>
             <div py:if="lang != 'en' and project.properties['component'] == 'main' and project.properties['pkgstatus'] != 'new' and project.properties['pkgstatus'] != 'pkgvcs'">
 	       <div py:choose="">
-	           <div class="trans" py:when="lang in project.desc"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.pkg}">${fixtranslation}</a></div>
-	           <div class="trans-missing" py:otherwise=""><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.pkg}">${translatedesc}</a></div>
+	           <div class="trans" py:when="lang in project.desc"><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/forexternalreview/${project.properties['name']}">${fixtranslation}</a></div>
+	           <div class="trans-missing" py:otherwise=""><a href="http://ddtp.debian.net/ddtss/index.cgi/${lang}/fetch?package=${project.properties['name']}">${translatedesc}</a></div>
                </div>
             </div>
             <div class="language" py:if="'language' in project.properties and project.properties['component'] != 'main'">Language: ${project.properties['language']}</div>
@@ -166,7 +166,7 @@
 	     </div>
 	     <div class="registration" py:if="'registration' in project.properties">
 	       <span class="registrationlink" >Please register by following <a
-	       href="${project.properties['registration']}">this link</a></span> if you are using ${project.pkg}.
+	       href="${project.properties['registration']}">this link</a></span> if you are using ${project.properties['name']}.
 	     </div>
 	     <div class="published"
 	     py:if="'published' in project.properties">Please cite:
@@ -200,20 +200,20 @@
 	   <td py:if="'component' in project.properties and project.properties['pkgstatus'] != 'new' and project.properties['pkgstatus'] != 'pkgvcs'" class="project-icon">
 	     <div py:choose="">
 	       <div py:when="'screenshot' in project.properties">
-		 <span class="tooltip" id="${project.pkg}-screenshot">
+		 <span class="tooltip" id="${project.properties['name']}-screenshot">
 		   <img src="${project.properties['screenshot']['image']}" />
 		   <table py:if="'screenshots' in project.properties['screenshot']" class="versionclass">
 		     <tr><th colspan="3"
-		     class="versionclass"><strong>Other screenshots of package ${project.pkg}</strong></th></tr>
+		     class="versionclass"><strong>Other screenshots of package ${project.properties['name']}</strong></th></tr>
 		     <tr><th class="version">Version</th><th class="archs">URL</th></tr>
 		     <py:for each="screenshot in project.properties['screenshot']['screenshots']">
 		       <tr><td class="version">${screenshot['version']}</td><td class="archs"><a href="${screenshot['url']}">${screenshot['url']}</a></td></tr>
 		     </py:for>
 		   </table>
 		 </span>
-                 <a href="http://screenshots.debian.net/package/${project.pkg}"><img class="icon" src="${project.properties['screenshot']['icon']}" width="300" alt="Screenshots of package ${project.pkg}" onmouseover="TagToTip('${project.pkg}-screenshot', FIX, ['${project.pkg}', 80, -100])" onmouseout="UnTip()" /></a>
+                 <a href="http://screenshots.debian.net/package/${project.properties['name']}"><img class="icon" src="${project.properties['screenshot']['icon']}" width="300" alt="Screenshots of package ${project.properties['name']}" onmouseover="TagToTip('${project.properties['name']}-screenshot', FIX, ['${project.properties['name']}', 80, -100])" onmouseout="UnTip()" /></a>
                </div>
-	       <div py:otherwise="" class="project-infomissing"><a href="http://screenshots.debian.net/uploadfile?packagename=${project.pkg}">Upload screenshot</a></div>
+	       <div py:otherwise="" class="project-infomissing"><a href="http://screenshots.debian.net/uploadfile?packagename=${project.properties['name']}">Upload screenshot</a></div>
              </div>
            </td>
          </tr>

-- 
Static and dynamic websites for Debian Pure Blends



More information about the Blends-commit mailing list