diff --git a/smash/web/models/worker.py b/smash/web/models/worker.py
index d77c4919ff9392010448797938adc9a007b3e667..86e2304dd544cadf224bec751e49b62f874301e6 100644
--- a/smash/web/models/worker.py
+++ b/smash/web/models/worker.py
@@ -193,19 +193,6 @@ class Worker(models.Model):
         return Worker.objects.filter(roles__study_id=study_id,
                                      roles__role__in=roles_by_worker_type(worker_type))
 
-    @staticmethod
-    def get_details(the_user):
-        persons = Worker.objects.filter(user=the_user)
-
-        if len(persons) == 0:
-            return the_user.get_full_name(), '<No worker information>'
-        else:
-            person = persons[0]
-            role = "N/A"
-            if person.roles.filter(study=GLOBAL_STUDY_ID).count() > 0:
-                role = person.role
-            return unicode(person), role
-
     def __str__(self):
         if self.name != '':
             if self.first_name == '':
diff --git a/smash/web/views/__init__.py b/smash/web/views/__init__.py
index ea4b446f84fe402a7b2abbbd9c082040646ea121..f6bf65ef44b5481037ce3c5ebbf04036cdcc3dc6 100644
--- a/smash/web/views/__init__.py
+++ b/smash/web/views/__init__.py
@@ -41,7 +41,14 @@ def wrap_response(request, template, params):
 
 
 def extend_context(params, request):
-    person, role = Worker.get_details(request.user)
+    person = Worker.get_by_user(request.user) # None if AnonymousUser or no Worker associated
+    if person is not None:
+        role = person.role
+        person = unicode(person)
+    else:
+        #use full name if available, username otherwise
+        person = request.user.get_full_name() if len(request.user.get_full_name()) > 1 else request.user.get_username()
+        role   = '<No worker information>'
     notifications = get_notifications(request.user)
     final_params = params.copy()
     final_params.update({