Bug 7406 - Searching in the all compatible targets page throws an error
Summary: Searching in the all compatible targets page throws an error
Status: VERIFIED FIXED
Alias: None
Product: Toaster
Classification: Build System, Metadata & Runtime
Component: toaster (show other bugs)
Version: unspecified
Hardware: x86 Multiple
: Medium+ normal
Target Milestone: 1.8 M4
Assignee: Alexandru Damian
QA Contact: Mihail Stanciu
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2015-03-05 18:58 UTC by Belen Barros Pena
Modified: 2015-03-25 10:33 UTC (History)
6 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: No (bug/feature does not impact docs)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Belen Barros Pena 2015-03-05 18:58:07 UTC
On master:bef8558f0e1a73107743417d8b2b772744ed9c28

Steps to reproduce:

1. With Toaster in managed mode, create a project using the master release
2. Go to the all compatible targets page
3. Search for something 

The page returns this error

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/toastergui/targets/?orderby=name%3A%2B&count=100&search=bash&page=1

Django Version: 1.6
Python Version: 2.7.6
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.staticfiles',
'django.contrib.humanize',
'orm',
'toastermain',
'south',
'bldviewer',
'toastergui',
'bldcontrol')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')


Template error:
In template /home/yocto/master/bitbake/lib/toaster/toastergui/templates/targets.html,
error at line 63
   'NoneType' object has no attribute 'name'
   53 :     {% for o in objects %}


   54 :     <tr class="data">


   55 :         <td class="target">


   56 :                 {{o.name}}


   57 :                 <a target="_blank"
href="{{o.get_layersource_view_url}}"><i class="icon-share
get-info"></i></a>


   58 :         </td>


   59 :         <td class="version">{{o.version}}</td>


   60 :         <td class="description">{% if o.description
%}{{o.description}}{% else %}{{o.summary}}{%endif%}</td>


   61 :         <td class="recipe-file">


   62 :                 <code>{{o.file_path}}</code>


   63 :                 <a href=" {{o.get_vcs_link_url}}
{{o.file_path}}" target="_blank"><i class="icon-share
get-info"></i></a>


   64 :         </td>


   65 :         <td class="target-section">{{o.section}}</td>


   66 :         <td class="license">{{o.license}}</td>


   67 :         <td class="layer"><a href="{% url 'layerdetails'
o.preffered_layerversion.id%}">{{o.preffered_layerversion.layer.name}}</a></td>


   68 :         <td class="branch">


   69 :         {% if o.preffered_layerversion.up_branch %}


   70 :             {{o.preffered_layerversion.up_branch.name}}


   71 :         {% else %}


   72 :         <a class="btn"


   73 :                 data-content="<ul class='unstyled'>


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py"
in get_response
  114.                     response = wrapped_callback(request,
*callback_args, **callback_kwargs)
File "/home/yocto/master/bitbake/lib/toaster/toastergui/views.py" in targets
  2758.         response = render(request, template, context)
File "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py"
in render
  53.     return HttpResponse(loader.render_to_string(*args, **kwargs),
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py"
in render_to_string
  169.         return t.render(context_instance)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  140.             return self._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py"
in render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py"
in render
  123.         return compiled_parent._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py"
in render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py"
in render
  123.         return compiled_parent._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py"
in render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py"
in render
  62.             result = block.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py"
in render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py"
in render
  62.             result = block.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py"
in render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py"
in render
  305.                 return nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py"
in render_node
  78.             return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py"
in render
  196.                         nodelist.append(node.render(context))
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render
  88.             output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve
  585.                 obj = self.var.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve
  735.             value = self._resolve_lookup(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py"
in _resolve_lookup
  789.                             current = current()
File "/home/yocto/master/bitbake/lib/toaster/orm/models.py" in get_vcs_link_url
  557.         return
self.layer_version.layer.vcs_web_file_base_url.replace('%path%',
self.file_path).replace('%branch%', self.layer_version.up_branch.name)

Exception Type: AttributeError at /toastergui/targets/
Exception Value: 'NoneType' object has no attribute 'name'
Comment 1 Alexandru Damian 2015-03-12 15:37:13 UTC
Cannot reproduce on top of adamian/20150309_bugz which was submitted upstream.

Must have been fixed by the performance improvements in the targets page.
Comment 2 Belen Barros Pena 2015-03-13 11:08:44 UTC
Yep: it's working in master:7f30749fe026e9ceb75d73b89271145a45a60763
Comment 3 Mihail Stanciu 2015-03-25 10:33:56 UTC
Verified on master: bbc139617637392a9b0fb2e9332a42ad64a4a556