rapidpro / casepro

Case management dashboard for RapidPro
BSD 3-Clause "New" or "Revised" License
21 stars 31 forks source link

Can't get to the user management page when logged in as a superuser #13

Closed tobiasmcnulty closed 8 years ago

tobiasmcnulty commented 9 years ago
Environment:

Request Method: GET
Request URL: http://localhost:8000/user/

Django Version: 1.8
Python Version: 2.7.6
Installed Applications:
(u'django.contrib.auth',
 u'django.contrib.contenttypes',
 u'django.contrib.sessions',
 u'django.contrib.sites',
 u'django.contrib.messages',
 u'django.contrib.staticfiles',
 u'django.contrib.humanize',
 u'guardian',
 u'reversion',
 u'django.contrib.admin',
 u'compressor',
 u'sorl.thumbnail',
 u'smartmin',
 u'smartmin.csv_imports',
 u'smartmin.users',
 u'djcelery',
 u'dash.orgs',
 u'dash.utils',
 u'casepro.cases',
 u'casepro.orgs_ext',
 u'casepro.profiles',
 u'django_nose',
 u'debug_toolbar.apps.DebugToolbarConfig')
Installed Middleware:
(u'django.contrib.sessions.middleware.SessionMiddleware',
 u'django.middleware.locale.LocaleMiddleware',
 u'django.middleware.common.CommonMiddleware',
 u'django.middleware.csrf.CsrfViewMiddleware',
 u'django.contrib.auth.middleware.AuthenticationMiddleware',
 u'django.contrib.messages.middleware.MessageMiddleware',
 u'dash.orgs.middleware.SetOrgMiddleware',
 u'casepro.profiles.middleware.ForcePasswordChangeMiddleware',
 u'debug_toolbar.middleware.DebugToolbarMiddleware')

Template error:
In template /Users/tobias/.virtualenvs/casepro/src/smartmin-master/smartmin/templates/smartmin/list.html, error at line 52
   User has no profile.

   42 :           {% for field in fields %}

   43 :           <th class="header-{{field}} {% if view|field_orderable:field %}header {% if field == order %}{% if order_asc %}headerSortUp{% else %}headerSortDown{% endif %}{% endif %}{% endif %}" id="header-{{field}}">{% get_label field %}</th>

   44 :           {% endfor %}

   45 :         </tr>

   46 :       </thead>

   47 :       <tbody>

   48 :         {% for obj in object_list %}

   49 :         <tr class="{% cycle 'row2' 'row1' %} {% if not obj.is_active and obj|is_smartobject %}inactive{% endif %}">

   50 :           {% for field in fields %}

   51 :           <td class="value-{{field}} {% get_class field obj %}{% if field in link_fields %} clickable{% endif %}">

   52 :             {% if field in link_fields %}<a {% if pjax %}data-pjax='{{ pjax }}'{% endif %} href="{% get_field_link field obj %}">{% endif %} {% get_value obj field %} {% if field in link_fields %}</a>{% endif %}

   53 :           </td>

   54 :           {% endfor %}

   55 :         </tr>

   56 :         {% empty %}

   57 :         <tr class="empty_list">

   58 :           {% for field in fields %}

   59 :           <td></td>

   60 :           {% endfor %}

   61 :         </tr>

   62 :         {% endfor %}

Traceback:
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  164.                 response = response.render()
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/response.py" in render
  158.             self.content = self.rendered_content
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/response.py" in rendered_content
  135.         content = template.render(context, self._request)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/backends/django.py" in render
  74.         return self.template.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  209.                     return self._render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  135.         return compiled_parent._render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  135.         return compiled_parent._render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  135.         return compiled_parent._render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  135.         return compiled_parent._render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
  96.     return self.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  903.                 bit = self.render_node(node, context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/debug.py" in render_node
  79.             return node.render(context)
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/defaulttags.py" in render
  217.                             nodelist.append(node.render(context))
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/defaulttags.py" in render
  217.                             nodelist.append(node.render(context))
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/template/base.py" in render
  1195.                     return func(*resolved_args, **resolved_kwargs)
File "/Users/tobias/.virtualenvs/casepro/src/smartmin-master/smartmin/templatetags/smartmin.py" in get_value
  69.     value = view.lookup_field_value(context, obj, field)
File "/Users/tobias/.virtualenvs/casepro/src/smartmin-master/smartmin/views.py" in lookup_field_value
  202.                 return view_method(obj)
File "/Users/tobias/caktus/casepro/casepro/profiles/views.py" in get_full_name
  107.         return obj.profile.full_name
File "/Users/tobias/.virtualenvs/casepro/lib/python2.7/site-packages/django/db/models/fields/related.py" in __get__
  462.                     self.related.get_accessor_name()

Exception Type: RelatedObjectDoesNotExist at /user/
Exception Value: User has no profile.
bruskiza commented 8 years ago

Manual insert into db:

casepro=# insert into profiles_profile (id, full_name, change_password, partner_id, user_id) values (1, 'Joe Bloggs', 'f', null, 1);

lets you get to http://127.0.0.1:8000/user/read/1/ but http://127.0.0.1:8000/user/ still gives the "User has no profile" error.

Progress.

nicpottier commented 8 years ago

Can you tell me what you are trying to do exactly? Definitely shouldn't need to do any manual inserts besides creating the first superuser account.

bruskiza commented 8 years ago

When doing a fresh install:

casepro_error

nicpottier commented 8 years ago

Oh sorry, my mistake, I thought this was on the RapidPro repo, not CasePro.

rowanseymour commented 8 years ago

@bruskiza can you check the id of your superuser. The user list page is supposed to exclude the root user who doesn't have a profile object, and does this with pk__gt=1

bruskiza commented 8 years ago

still issue.

• Added a 2nd user definitely not id = 1. • still get "User has no profile" error

database output here:

 id |                                   password                                    |          last_login           | is_superuser | username | first_name | last_name |       email        | is_staff | is_active |          date_joined          
----+-------------------------------------------------------------------------------+-------------------------------+--------------+----------+------------+-----------+--------------------+----------+-----------+-------------------------------
  4 | pbkdf2_sha256$20000$3TFkIoCBE2RE$QNYJvHqBpMopXCia1dY4ytd7fmyplRaiX1XZSl7h+UA= | 2015-11-17 20:46:17.797848+02 | t            | bruce2   |            |           | bruce@xxx.com | t        | t         | 2015-11-17 20:45:39.996651+02
(1 row)
rowanseymour commented 8 years ago

Are you saying the superuser doesn't have id 1 or the new user? I think this is a simple fix - just replace pk__gt=1 with is_superuser=True

bruskiza commented 8 years ago

it happens with neither.

user id = 1 or user id = 4,

it gives an error.

rowanseymour commented 8 years ago

Ok can you try that fix I suggested?

rowanseymour commented 8 years ago

Should be fixed by https://github.com/rapidpro/casepro/commit/cf4bd227139fad2527ac2457b6596fed7523ca65. Please say if this is not the case.

bruskiza commented 8 years ago

Confirmed working! :+1: