Merge branch 'master' into develop
[archive/20170607/tools/tic-core.git] / tic / parser / view_parser.py
index 59603b4..73ef588 100644 (file)
@@ -1,3 +1,21 @@
+#!/usr/bin/python
+# Copyright (c) 2016 Samsung Electronics Co., Ltd
+#
+# Licensed under the Flora License, Version 1.1 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://floralicense.org/license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Contributors:
+# - S-Core Co., Ltd
+
 import logging
 import requests
 import re
@@ -58,7 +76,7 @@ def make_view_data(pkg_group):
 
                             if pkg.get('meta'):
                                 if not pkg['name'] in children:
-                                    meta_nodes.append(make_linked_meta_node(pkg['name'], pkg['summary']))
+                                    meta_nodes.append(make_linked_meta_node(pkg['name'], pkg['summary'], meta_info['category']))
                             else:
                                 meta_nodes.append(make_node(pkg, meta_info.get('category')))
         # Added 'zz' to non meta-package because they are to be listed last
@@ -73,8 +91,8 @@ def make_view_data(pkg_group):
         return n
     def make_meta_node(pkgname, viewtext):
         return dict(text=viewtext, metaname=pkgname, nodes=[])
-    def make_linked_meta_node(pkgname, viewtext):
-        return dict(text='<i>'+viewtext+'</i>', metaname=pkgname, nodes=[])
+    def make_linked_meta_node(pkgname, viewtext, cat):
+        return dict(text='<i>'+viewtext+'</i>', metaname=pkgname, nodes=[], category=cat)
     def is_blank_ui_meta_node(pkgname):
         return (pkgname[-8:-2] == '__UI__')
     def handle_ui_meta_node(tag, node):
@@ -112,18 +130,24 @@ def make_view_data(pkg_group):
                 # e.g., Convert http://a.com/a/ to https://a.com/a/blahblah.ks
                 # Works for file-indexing html
                 if ksURL[-3:].lower() != ".ks":
+                    error = 0
                     if ksURL[-1:] != "/":
                         ksURL += "/"
                     r = requests.get(ksURL)
-                    m = re.search('>([^<]*\\.ks)\\s*<', r.text)
-                    if not m.group(1):
+                    if r.status_code == requests.codes.ok:
+                        m = re.search('>([^<]*\\.ks)\\s*<', r.text)
+                    else:
+                        error = 1
+                    if error == 0 and not m.group(1):
                         m = re.search('"([^"]*\\.ks)\\s*"', r.text)
                         if not m.group(1):
                             m = re.search("'([^']*\\.ks)\\s*'", r.text)
                             if not m.group(1):
-                                node['icon'] = 'glyphicon glyphicon-remove-sign'
-                                node['tooltip'] = 'Cannot find image base from' + ksURL
-                                return node
+                                error = 1
+                    if error == 1:
+                        node['icon'] = 'glyphicon glyphicon-remove-sign'
+                        node['tooltip'] = 'Cannot find image base from' + ksURL
+                        return node
                     ksURL += m.group(1)
                 node['tooltip'] = 'Image base from '+ksURL
                 node['ks'] = ksURL
@@ -225,8 +249,8 @@ def make_view_data(pkg_group):
     misc_info['text'] = 'Advanced (individual packages)'
     misc_info['nodes'] = []
     for k, v in pkg_dict.iteritems():
-        # Pkg is not referenced from Meta-pkg
-        if not v.get('meta') and refer_count[v['id']] == 0:
+        # Add ALL non-block packages
+        if v['name'][0:15] != 'building-blocks':
             misc_info['nodes'].append(make_node(v))
     misc_info['nodes'] = sorted(misc_info['nodes'], key = lambda k: k['metaname'] if 'metaname' in k else k['text'])