#5041 Add a full_url to the JSON representation of our main objects
Merged 2 months ago by pingou. Opened 2 months ago by pingou.

file modified
+15
@@ -2214,6 +2214,21 @@ 

  

  

  

+ NOGITHOOKS

+ ~~~~~~~~~~

+ 

+ This configuration key should not be touched. It is used in the test suite as a

+ way to prevent all the git hooks from running (which includes checking if the

+ user is allowed to push). Using this mechanism we are able to check some

+ behavior in the test suite that in a deployed pagure instance are happening in

+ a different process.

+ 

+ **Do not change this option in production**

+ 

+ Defaults to: ``None``.

+ 

+ 

+ 

  Deprecated configuration keys

  -----------------------------

  

file modified
+46
@@ -276,6 +276,12 @@ 

          """ Ensures the settings are properly saved. """

          self._settings = json.dumps(settings)

  

+     @property

+     def full_url(self):

+         """ Returns the default status of the board. """

+         base_url = pagure_config["APP_URL"].rstrip("/")

+         return "/".join([base_url, "user", self.user])

+ 

      def __repr__(self):

          """ Return a string representation of this object. """

  
@@ -287,6 +293,7 @@ 

              "name": self.user,

              "fullname": self.fullname,

              "url_path": self.url_path,

+             "full_url": self.full_url,

          }

  

          if not public:
@@ -653,6 +660,12 @@ 

          return path

  

      @property

+     def full_url(self):

+         """ Returns the default status of the board. """

+         base_url = pagure_config["APP_URL"].rstrip("/")

+         return "/".join([base_url, self.url_path])

+ 

+     @property

      def tags_text(self):

          """ Return the list of tags in a simple text form. """

          return [tag.tag for tag in self.tags]
@@ -1105,6 +1118,7 @@ 

              "name": self.name,

              "fullname": self.fullname,

              "url_path": self.url_path,

+             "full_url": self.full_url,

              "description": self.description,

              "namespace": self.namespace,

              "parent": self.parent.to_json(public=public, api=api)
@@ -1540,6 +1554,14 @@ 

              out.append(status_board.board.name)

          return out

  

+     @property

+     def full_url(self):

+         """ Returns the default status of the board. """

+         base_url = pagure_config["APP_URL"].rstrip("/")

+         return "/".join(

+             [base_url, self.project.url_path, "issue", str(self.id)]

+         )

+ 

      def to_json(self, public=False, with_comments=True, with_project=False):

          """ Returns a dictionary representation of the issue.

  
@@ -1582,6 +1604,7 @@ 

              ]

              if self.related_prs

              else [],

+             "full_url": self.full_url,

          }

  

          comments = []
@@ -2259,6 +2282,14 @@ 

              comment for comment in self.comments if not comment.notification

          ]

  

+     @property

+     def full_url(self):

+         """ Returns the default status of the board. """

+         base_url = pagure_config["APP_URL"].rstrip("/")

+         return "/".join(

+             [base_url, self.project.url_path, "pull-request", str(self.id)]

+         )

+ 

      def to_json(self, public=False, api=False, with_comments=True):

          """ Returns a dictionary representation of the pull-request.

  
@@ -2292,6 +2323,7 @@ 

              "cached_merge_status": self.merge_status or "unknown",

              "threshold_reached": self.threshold_reached,

              "tags": self.tags_text,

+             "full_url": self.full_url,

          }

  

          comments = []
@@ -2719,6 +2751,12 @@ 

  

          return "Group: %s - name %s" % (self.id, self.group_name)

  

+     @property

+     def full_url(self):

+         """ Returns the default status of the board. """

+         base_url = pagure_config["APP_URL"].rstrip("/")

+         return "/".join([base_url, "group", self.group_name])

+ 

      def to_json(self, public=False):

          """ Returns a dictionary representation of the pull-request.

  
@@ -2730,6 +2768,7 @@ 

              "group_type": self.group_type,

              "creator": self.creator.to_json(public=public),

              "date_created": arrow_ts(self.created),

+             "full_url": self.full_url,

              "members": [user.username for user in self.users],

          }

  
@@ -3274,6 +3313,12 @@ 

                  break

          return out

  

+     @property

+     def full_url(self):

+         """ Returns the default status of the board. """

+         base_url = pagure_config["APP_URL"].rstrip("/")

+         return "/".join([base_url, self.project.url_path, "boards", self.name])

+ 

      def __repr__(self):

          """ Return a string representation of this object. """

  
@@ -3286,6 +3331,7 @@ 

              "active": self.active,

              "status": [status.to_json() for status in self.statuses],

              "tag": self.tag.to_json(),

+             "full_url": self.full_url,

          }

  

  

@@ -63,6 +63,7 @@ 

              "boards": [

                  {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [],

                      "tag": {
@@ -263,6 +264,7 @@ 

                  "boards": [

                      {

                          "active": True,

+                         "full_url": "http://localhost.localdomain/test/boards/dev",

                          "name": "dev",

                          "status": [],

                          "tag": {
@@ -299,6 +301,7 @@ 

                  "boards": [

                      {

                          "active": True,

+                         "full_url": "http://localhost.localdomain/test/boards/dev",

                          "name": "dev",

                          "status": [],

                          "tag": {
@@ -309,6 +312,7 @@ 

                      },

                      {

                          "active": True,

+                         "full_url": "http://localhost.localdomain/test/boards/infra",

                          "name": "infra",

                          "status": [],

                          "tag": {
@@ -334,6 +338,7 @@ 

                  "boards": [

                      {

                          "active": True,

+                         "full_url": "http://localhost.localdomain/test/boards/dev",

                          "name": "dev",

                          "status": [],

                          "tag": {
@@ -422,6 +427,7 @@ 

                  "boards": [

                      {

                          "active": False,

+                         "full_url": "http://localhost.localdomain/test/boards/dev",

                          "name": "dev",

                          "status": [],

                          "tag": {
@@ -768,6 +774,7 @@ 

              {

                  "board": {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [

                          {
@@ -849,6 +856,7 @@ 

              {

                  "board": {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [

                          {
@@ -930,6 +938,7 @@ 

              {

                  "board": {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [

                          {
@@ -998,6 +1007,7 @@ 

              {

                  "board": {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [

                          {
@@ -1240,6 +1250,7 @@ 

              {

                  "board": {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [

                          {
@@ -1401,6 +1412,7 @@ 

              {

                  "board": {

                      "active": True,

+                     "full_url": "http://localhost.localdomain/test/boards/dev",

                      "name": "dev",

                      "status": [

                          {
@@ -1500,6 +1512,7 @@ 

                  {

                      "board": {

                          "active": True,

+                         "full_url": "http://localhost.localdomain/test/boards/dev",

                          "name": "dev",

                          "status": [

                              {
@@ -1556,6 +1569,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -1566,6 +1580,7 @@ 

              "custom_fields": [],

              "date_created": "1594654596",

              "depends": [],

+             "full_url": "http://localhost.localdomain/test/issue/2",

              "id": 2,

              "last_updated": "1594654596",

              "milestone": None,
@@ -1578,6 +1593,7 @@ 

              "user": {

                  "default_email": "foo@bar.com",

                  "emails": ["foo@bar.com"],

+                 "full_url": "http://localhost.localdomain/user/foo",

                  "fullname": "foo bar",

                  "name": "foo",

                  "url_path": "user/foo",

@@ -416,6 +416,7 @@ 

                      "commit_start": None,

                      "commit_stop": None,

                      "date_created": "1431414800",

+                     "full_url": "http://localhost.localdomain/test/pull-request/1",

                      "id": 1,

                      "initial_comment": None,

                      "last_updated": "1431414800",
@@ -443,6 +444,7 @@ 

                          "date_created": "1431414800",

                          "date_modified": "1431414800",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "fullname": "test",

                          "url_path": "test",

                          "id": 1,
@@ -453,6 +455,7 @@ 

                          "priorities": {},

                          "tags": [],

                          "user": {

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "name": "pingou",

                              "url_path": "user/pingou",
@@ -483,6 +486,7 @@ 

                          "date_created": "1431414800",

                          "date_modified": "1431414800",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "fullname": "test",

                          "url_path": "test",

                          "id": 1,
@@ -493,6 +497,7 @@ 

                          "priorities": {},

                          "tags": [],

                          "user": {

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "name": "pingou",

                              "url_path": "user/pingou",
@@ -505,6 +510,7 @@ 

                      "uid": "1431414800",

                      "updated_on": "1431414800",

                      "user": {

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -763,6 +769,7 @@ 

              "commit_start": None,

              "commit_stop": None,

              "date_created": "1431414800",

+             "full_url": "http://localhost.localdomain/test/pull-request/1",

              "id": 1,

              "initial_comment": None,

              "last_updated": "1431414800",
@@ -790,6 +797,7 @@ 

                  "date_created": "1431414800",

                  "date_modified": "1431414800",

                  "description": "test project #1",

+                 "full_url": "http://localhost.localdomain/test",

                  "fullname": "test",

                  "url_path": "test",

                  "id": 1,
@@ -800,6 +808,7 @@ 

                  "priorities": {},

                  "tags": [],

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -830,6 +839,7 @@ 

                  "date_created": "1431414800",

                  "date_modified": "1431414800",

                  "description": "test project #1",

+                 "full_url": "http://localhost.localdomain/test",

                  "fullname": "test",

                  "url_path": "test",

                  "id": 1,
@@ -840,6 +850,7 @@ 

                  "priorities": {},

                  "tags": [],

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -852,6 +863,7 @@ 

              "uid": "1431414800",

              "updated_on": "1431414800",

              "user": {

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "fullname": "PY C",

                  "name": "pingou",

                  "url_path": "user/pingou",
@@ -933,6 +945,7 @@ 

              "commit_start": None,

              "commit_stop": None,

              "date_created": "1431414800",

+             "full_url": "http://localhost.localdomain/test/pull-request/1",

              "id": 1,

              "initial_comment": None,

              "last_updated": "1431414800",
@@ -960,6 +973,7 @@ 

                  "date_created": "1431414800",

                  "date_modified": "1431414800",

                  "description": "test project #1",

+                 "full_url": "http://localhost.localdomain/test",

                  "fullname": "test",

                  "url_path": "test",

                  "id": 1,
@@ -970,6 +984,7 @@ 

                  "priorities": {},

                  "tags": [],

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -1000,6 +1015,7 @@ 

                  "date_created": "1431414800",

                  "date_modified": "1431414800",

                  "description": "test project #1",

+                 "full_url": "http://localhost.localdomain/test",

                  "fullname": "test",

                  "url_path": "test",

                  "id": 1,
@@ -1010,6 +1026,7 @@ 

                  "priorities": {},

                  "tags": [],

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -1022,6 +1039,7 @@ 

              "uid": uid,

              "updated_on": "1431414800",

              "user": {

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "fullname": "PY C",

                  "name": "pingou",

                  "url_path": "user/pingou",
@@ -3060,6 +3078,7 @@ 

                  "commit_start": "114f1b468a5f05e635fcb6394273f3f907386eab",

                  "commit_stop": "114f1b468a5f05e635fcb6394273f3f907386eab",

                  "date_created": "1516348115",

+                 "full_url": "http://localhost.localdomain/test/pull-request/1",

                  "id": 1,

                  "initial_comment": "Nothing much, the changes speak for themselves",

                  "last_updated": "1516348115",
@@ -3087,6 +3106,7 @@ 

                      "date_created": "1516348115",

                      "date_modified": "1516348115",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -3097,6 +3117,7 @@ 

                      "tags": [],

                      "url_path": "test",

                      "user": {

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -3127,6 +3148,7 @@ 

                      "date_created": "1516348115",

                      "date_modified": "1516348115",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -3137,6 +3159,7 @@ 

                      "tags": [],

                      "url_path": "test",

                      "user": {

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -3149,6 +3172,7 @@ 

                  "uid": "e8b68df8711648deac67c3afed15a798",

                  "updated_on": "1516348115",

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -3209,6 +3233,7 @@ 

                  "commit_start": "114f1b468a5f05e635fcb6394273f3f907386eab",

                  "commit_stop": "114f1b468a5f05e635fcb6394273f3f907386eab",

                  "date_created": "1516348115",

+                 "full_url": "http://localhost.localdomain/test/pull-request/1",

                  "id": 1,

                  "initial_comment": None,

                  "last_updated": "1516348115",
@@ -3236,6 +3261,7 @@ 

                      "date_created": "1516348115",

                      "date_modified": "1516348115",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -3246,6 +3272,7 @@ 

                      "tags": [],

                      "url_path": "test",

                      "user": {

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -3276,6 +3303,7 @@ 

                      "date_created": "1516348115",

                      "date_modified": "1516348115",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -3286,6 +3314,7 @@ 

                      "tags": [],

                      "url_path": "test",

                      "user": {

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -3298,6 +3327,7 @@ 

                  "uid": "e8b68df8711648deac67c3afed15a798",

                  "updated_on": "1516348115",

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -3580,6 +3610,7 @@ 

              "commit_start": "114f1b468a5f05e635fcb6394273f3f907386eab",

              "commit_stop": "114f1b468a5f05e635fcb6394273f3f907386eab",

              "date_created": "1516348115",

+             "full_url": "http://localhost.localdomain/test/pull-request/1",

              "id": 1,

              "initial_comment": "Nothing much, the changes speak for themselves",

              "last_updated": "1516348115",
@@ -3607,6 +3638,7 @@ 

                  "date_created": "1516348115",

                  "date_modified": "1516348115",

                  "description": "test project #1",

+                 "full_url": "http://localhost.localdomain/test",

                  "fullname": "test",

                  "id": 1,

                  "milestones": {},
@@ -3617,6 +3649,7 @@ 

                  "tags": [],

                  "url_path": "test",

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -3647,6 +3680,7 @@ 

                  "date_created": "1516348115",

                  "date_modified": "1516348115",

                  "description": "test project #1",

+                 "full_url": "http://localhost.localdomain/test",

                  "fullname": "test",

                  "id": 1,

                  "milestones": {},
@@ -3657,6 +3691,7 @@ 

                  "tags": [],

                  "url_path": "test",

                  "user": {

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "fullname": "PY C",

                      "name": "pingou",

                      "url_path": "user/pingou",
@@ -3669,6 +3704,7 @@ 

              "uid": "e8b68df8711648deac67c3afed15a798",

              "updated_on": "1516348115",

              "user": {

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "fullname": "PY C",

                  "name": "pingou",

                  "url_path": "user/pingou",

@@ -252,6 +252,7 @@ 

                  "commit_start": "5f5d609db65d447f77ba00e25afd17ba5053344b",

                  "commit_stop": "5f5d609db65d447f77ba00e25afd17ba5053344b",

                  "date_created": "1551276260",

+                 "full_url": "http://localhost.localdomain/test/pull-request/1",

                  "id": 1,

                  "initial_comment": "Edited initial comment",

                  "last_updated": "1551276261",
@@ -279,6 +280,7 @@ 

                      "date_created": "1551276259",

                      "date_modified": "1551276259",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -290,6 +292,7 @@ 

                      "url_path": "test",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -314,6 +317,7 @@ 

                      "date_created": "1551276259",

                      "date_modified": "1551276259",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/fork/pingou/test",

                      "fullname": "forks/pingou/test",

                      "id": 4,

                      "milestones": {},
@@ -343,6 +347,7 @@ 

                          "date_created": "1551276259",

                          "date_modified": "1551276259",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "fullname": "test",

                          "id": 1,

                          "milestones": {},
@@ -354,6 +359,7 @@ 

                          "url_path": "test",

                          "user": {

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "name": "pingou",

                              "url_path": "user/pingou",

                          },
@@ -363,6 +369,7 @@ 

                      "url_path": "fork/pingou/test",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -375,6 +382,7 @@ 

                  "updated_on": "1551276260",

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -422,6 +430,7 @@ 

                  "commit_start": "5f5d609db65d447f77ba00e25afd17ba5053344b",

                  "commit_stop": "5f5d609db65d447f77ba00e25afd17ba5053344b",

                  "date_created": "1551276260",

+                 "full_url": "http://localhost.localdomain/test/pull-request/1",

                  "id": 1,

                  "initial_comment": "",

                  "last_updated": "1551276261",
@@ -449,6 +458,7 @@ 

                      "date_created": "1551276259",

                      "date_modified": "1551276259",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -460,6 +470,7 @@ 

                      "url_path": "test",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -484,6 +495,7 @@ 

                      "date_created": "1551276259",

                      "date_modified": "1551276259",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/fork/pingou/test",

                      "fullname": "forks/pingou/test",

                      "id": 4,

                      "milestones": {},
@@ -513,6 +525,7 @@ 

                          "date_created": "1551276259",

                          "date_modified": "1551276259",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "fullname": "test",

                          "id": 1,

                          "milestones": {},
@@ -524,6 +537,7 @@ 

                          "url_path": "test",

                          "user": {

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "name": "pingou",

                              "url_path": "user/pingou",

                          },
@@ -533,6 +547,7 @@ 

                      "url_path": "fork/pingou/test",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -545,6 +560,7 @@ 

                  "updated_on": "1551276260",

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -611,6 +627,7 @@ 

                  "commit_start": "5f5d609db65d447f77ba00e25afd17ba5053344b",

                  "commit_stop": "5f5d609db65d447f77ba00e25afd17ba5053344b",

                  "date_created": "1551276260",

+                 "full_url": "http://localhost.localdomain/test/pull-request/1",

                  "id": 1,

                  "initial_comment": "Edited initial comment\n\nthis PR "

                  "fixes #2 \n\nThanks",
@@ -639,6 +656,7 @@ 

                      "date_created": "1551276259",

                      "date_modified": "1551276259",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "id": 1,

                      "milestones": {},
@@ -650,6 +668,7 @@ 

                      "url_path": "test",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -674,6 +693,7 @@ 

                      "date_created": "1551276259",

                      "date_modified": "1551276259",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/fork/pingou/test",

                      "fullname": "forks/pingou/test",

                      "id": 4,

                      "milestones": {},
@@ -703,6 +723,7 @@ 

                          "date_created": "1551276259",

                          "date_modified": "1551276259",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "fullname": "test",

                          "id": 1,

                          "milestones": {},
@@ -714,6 +735,7 @@ 

                          "url_path": "test",

                          "user": {

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "name": "pingou",

                              "url_path": "user/pingou",

                          },
@@ -723,6 +745,7 @@ 

                      "url_path": "fork/pingou/test",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -735,6 +758,7 @@ 

                  "updated_on": "1551276260",

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },

@@ -159,9 +159,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "url_path": "user/pingou",

                  "default_email": "bar@pingou.com",

                  "emails": ["bar@pingou.com", "foo@pingou.com"],
@@ -185,9 +187,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "name": "pingou",

                  "url_path": "user/pingou",

              },
@@ -231,9 +235,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "default_email": "bar@pingou.com",

                  "emails": ["bar@pingou.com", "foo@pingou.com"],

                  "name": "pingou",
@@ -274,9 +280,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "default_email": "bar@pingou.com",

                  "emails": ["bar@pingou.com", "foo@pingou.com"],

                  "name": "pingou",
@@ -320,6 +328,7 @@ 

                      "date_created": "1492020239",

                      "date_modified": "1492020239",

                      "description": "test project #2",

+                     "full_url": "http://localhost.localdomain/test2",

                      "fullname": "test2",

                      "id": 2,

                      "milestones": {},
@@ -331,6 +340,7 @@ 

                      "url_path": "test2",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -379,9 +389,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "name": "pingou",

                  "url_path": "user/pingou",

              },
@@ -423,6 +435,7 @@ 

                      "date_created": "1492020239",

                      "date_modified": "1492020239",

                      "description": "test project #2",

+                     "full_url": "http://localhost.localdomain/test2",

                      "fullname": "test2",

                      "id": 2,

                      "milestones": {},
@@ -434,6 +447,7 @@ 

                      "url_path": "test2",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -465,9 +479,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "name": "pingou",

                  "url_path": "user/pingou",

              },
@@ -509,6 +525,7 @@ 

                      "date_created": "1492020239",

                      "date_modified": "1492020239",

                      "description": "test project #2",

+                     "full_url": "http://localhost.localdomain/test2",

                      "fullname": "test2",

                      "id": 2,

                      "milestones": {},
@@ -520,6 +537,7 @@ 

                      "url_path": "test2",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -563,9 +581,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "name": "pingou",

                  "url_path": "user/pingou",

              },
@@ -615,9 +635,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Some Group",

+             "full_url": "http://localhost.localdomain/group/some_group",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "name": "pingou",

                  "url_path": "user/pingou",

              },
@@ -665,9 +687,11 @@ 

          self.assertEqual(output.status_code, 200)

          exp = {

              "display_name": "Release engineering group",

+             "full_url": "http://localhost.localdomain/group/rel-eng",

              "description": None,

              "creator": {

                  "fullname": "PY C",

+                 "full_url": "http://localhost.localdomain/user/pingou",

                  "name": "pingou",

                  "url_path": "user/pingou",

              },

@@ -46,6 +46,7 @@ 

          "comments": [],

          "content": "We should work on this",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/2",

          "date_created": "1431414800",

          "depends": [],

          "id": 2,
@@ -59,6 +60,7 @@ 

          "title": "Test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -66,6 +68,7 @@ 

      {

          "assignee": {

              "fullname": "foo bar",

+             "full_url": "http://localhost.localdomain/user/foo",

              "name": "foo",

              "url_path": "user/foo",

          },
@@ -76,6 +79,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/8",

          "date_created": "1431414800",

          "depends": [],

          "id": 8,
@@ -89,6 +93,7 @@ 

          "title": "test issue1",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -102,6 +107,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/7",

          "date_created": "1431414800",

          "depends": [],

          "id": 7,
@@ -115,6 +121,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -128,6 +135,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/6",

          "date_created": "1431414800",

          "depends": [],

          "id": 6,
@@ -141,6 +149,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -154,6 +163,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/5",

          "date_created": "1431414800",

          "depends": [],

          "id": 5,
@@ -167,6 +177,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -180,6 +191,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/4",

          "date_created": "1431414800",

          "depends": [],

          "id": 4,
@@ -193,6 +205,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -206,6 +219,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/3",

          "date_created": "1431414800",

          "depends": [],

          "id": 3,
@@ -219,6 +233,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -232,6 +247,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/2",

          "date_created": "1431414800",

          "depends": [],

          "id": 2,
@@ -245,6 +261,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -258,6 +275,7 @@ 

          "comments": [],

          "content": "This issue needs attention",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/1",

          "date_created": "1431414800",

          "depends": [],

          "id": 1,
@@ -271,6 +289,7 @@ 

          "title": "test issue",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -288,6 +307,7 @@ 

          "comments": [],

          "content": "Description",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/2",

          "date_created": "1431414800",

          "depends": [],

          "id": 2,
@@ -301,6 +321,7 @@ 

          "title": "Issue #2",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -314,6 +335,7 @@ 

          "comments": [],

          "content": "Description",

          "custom_fields": [],

+         "full_url": "http://localhost.localdomain/test/issue/1",

          "date_created": "1431414800",

          "depends": [],

          "id": 1,
@@ -327,6 +349,7 @@ 

          "title": "Issue #1",

          "user": {

              "fullname": "PY C",

+             "full_url": "http://localhost.localdomain/user/pingou",

              "name": "pingou",

              "url_path": "user/pingou",

          },
@@ -507,6 +530,7 @@ 

                          "closed_at": None,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -518,6 +542,7 @@ 

                          "priority": None,

                          "milestone": None,

                          "custom_fields": [],

+                         "full_url": "http://localhost.localdomain/test/issue/1",

                          "closed_by": None,

                          "related_prs": [],

                          "comments": [],
@@ -528,12 +553,14 @@ 

                          "fullname": "test",

                          "url_path": "test",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "namespace": None,

                          "parent": None,

                          "date_created": ANY,

                          "date_modified": ANY,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -681,6 +708,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[7])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -714,6 +742,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[6])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -736,6 +765,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[5])

          issue["id"] = 2

+         issue["full_url"] = "http://localhost.localdomain/test/issue/2"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -758,6 +788,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[4])

          issue["id"] = 3

+         issue["full_url"] = "http://localhost.localdomain/test/issue/3"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -780,6 +811,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[3])

          issue["id"] = 4

+         issue["full_url"] = "http://localhost.localdomain/test/issue/4"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -812,6 +844,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[2])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -834,6 +867,7 @@ 

  

          exp = copy.deepcopy(FULL_ISSUE_LIST[1])

          exp["id"] = 2

+         exp["full_url"] = "http://localhost.localdomain/test/issue/2"

  

          self.assertDictEqual(data, {"issue": exp, "message": "Issue created"})

  
@@ -867,6 +901,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[2])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1094,6 +1129,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[7])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1127,6 +1163,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[6])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1149,6 +1186,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[5])

          issue["id"] = 2

+         issue["full_url"] = "http://localhost.localdomain/test/issue/2"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1171,6 +1209,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[4])

          issue["id"] = 3

+         issue["full_url"] = "http://localhost.localdomain/test/issue/3"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1193,6 +1232,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[4])

          issue["id"] = 4

+         issue["full_url"] = "http://localhost.localdomain/test/issue/4"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1225,6 +1265,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[2])

          issue["id"] = 1

+         issue["full_url"] = "http://localhost.localdomain/test/issue/1"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1247,6 +1288,7 @@ 

  

          issue = copy.deepcopy(FULL_ISSUE_LIST[1])

          issue["id"] = 2

+         issue["full_url"] = "http://localhost.localdomain/test/issue/2"

  

          self.assertDictEqual(

              data, {"issue": issue, "message": "Issue created"}
@@ -1268,6 +1310,7 @@ 

  

          exp = copy.deepcopy(FULL_ISSUE_LIST[1])

          exp["id"] = 3

+         exp["full_url"] = "http://localhost.localdomain/test/issue/3"

          exp["assignee"] = None

  

          self.assertDictEqual(data, {"issue": exp, "message": "Issue created"})
@@ -2670,6 +2713,7 @@ 

                          "custom_fields": [],

                          "date_created": "1431414800",

                          "depends": [],

+                         "full_url": "http://localhost.localdomain/test/issue/3",

                          "id": 3,

                          "last_updated": "1431414800",

                          "milestone": None,
@@ -2681,6 +2725,7 @@ 

                          "title": "Issue #3",

                          "user": {

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "name": "pingou",

                              "url_path": "user/pingou",

                          },
@@ -2733,6 +2778,7 @@ 

                  "comments": [],

                  "content": "This issue needs attention",

                  "custom_fields": [],

+                 "full_url": "http://localhost.localdomain/test/issue/1",

                  "date_created": "1431414800",

                  "close_status": None,

                  "closed_at": None,
@@ -2749,6 +2795,7 @@ 

                  "title": "test issue",

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -2837,6 +2884,7 @@ 

                  "comments": [],

                  "content": "We should work on this",

                  "custom_fields": [],

+                 "full_url": "http://localhost.localdomain/test/issue/2",

                  "date_created": "1431414800",

                  "close_status": None,

                  "closed_at": None,
@@ -2853,6 +2901,7 @@ 

                  "title": "Test issue",

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -2873,6 +2922,7 @@ 

                  "comments": [],

                  "content": "We should work on this",

                  "custom_fields": [],

+                 "full_url": "http://localhost.localdomain/test/issue/2",

                  "date_created": "1431414800",

                  "close_status": None,

                  "closed_at": None,
@@ -2889,6 +2939,7 @@ 

                  "title": "Test issue",

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -3166,6 +3217,7 @@ 

                          "closed_at": None,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -3177,6 +3229,7 @@ 

                          "priority": None,

                          "milestone": "v1.0",

                          "custom_fields": [],

+                         "full_url": "http://localhost.localdomain/test/issue/1",

                          "closed_by": None,

                          "related_prs": [],

                          "comments": [],
@@ -3187,12 +3240,14 @@ 

                          "fullname": "test",

                          "url_path": "test",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "namespace": None,

                          "parent": None,

                          "date_created": ANY,

                          "date_modified": ANY,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -3583,6 +3638,7 @@ 

                  "reactions": {},

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -3611,6 +3667,7 @@ 

                  "reactions": {},

                  "user": {

                      "fullname": "PY C",

+                     "full_url": "http://localhost.localdomain/user/pingou",

                      "name": "pingou",

                      "url_path": "user/pingou",

                  },
@@ -3710,6 +3767,7 @@ 

                  "reactions": {},

                  "user": {

                      "fullname": "foo bar",

+                     "full_url": "http://localhost.localdomain/user/foo",

                      "name": "foo",

                      "url_path": "user/foo",

                  },
@@ -3849,6 +3907,7 @@ 

                          "closed_at": None,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -3858,12 +3917,14 @@ 

                          "blocks": [],

                          "assignee": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },

                          "priority": None,

                          "milestone": None,

                          "custom_fields": [],

+                         "full_url": "http://localhost.localdomain/test/issue/1",

                          "closed_by": None,

                          "related_prs": [],

                          "comments": [],
@@ -3874,12 +3935,14 @@ 

                          "fullname": "test",

                          "url_path": "test",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "namespace": None,

                          "parent": None,

                          "date_created": ANY,

                          "date_modified": ANY,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -3934,6 +3997,7 @@ 

                          "closed_at": None,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },
@@ -3945,6 +4009,7 @@ 

                          "priority": None,

                          "milestone": None,

                          "custom_fields": [],

+                         "full_url": "http://localhost.localdomain/test/issue/1",

                          "closed_by": None,

                          "related_prs": [],

                          "comments": [
@@ -3956,6 +4021,7 @@ 

                                  "date_created": ANY,

                                  "user": {

                                      "name": "pingou",

+                                     "full_url": "http://localhost.localdomain/user/pingou",

                                      "fullname": "PY C",

                                      "url_path": "user/pingou",

                                  },
@@ -3972,12 +4038,14 @@ 

                          "fullname": "test",

                          "url_path": "test",

                          "description": "test project #1",

+                         "full_url": "http://localhost.localdomain/test",

                          "namespace": None,

                          "parent": None,

                          "date_created": ANY,

                          "date_modified": ANY,

                          "user": {

                              "name": "pingou",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "fullname": "PY C",

                              "url_path": "user/pingou",

                          },

@@ -149,6 +149,7 @@ 

                      "comments": [],

                      "content": "This issue needs attention",

                      "custom_fields": [],

+                     "full_url": "http://localhost.localdomain/test/issue/1",

                      "date_created": "1431414800",

                      "depends": [],

                      "id": 1,
@@ -162,6 +163,7 @@ 

                      "title": "test issue",

                      "user": {

                          "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "name": "pingou",

                          "url_path": "user/pingou",

                      },
@@ -205,6 +207,7 @@ 

                      "comments": [],

                      "content": "This issue needs attention",

                      "custom_fields": [],

+                     "full_url": "http://localhost.localdomain/test/issue/1",

                      "date_created": "1431414800",

                      "depends": [],

                      "id": 1,
@@ -218,6 +221,7 @@ 

                      "title": "test issue",

                      "user": {

                          "fullname": "foo bar",

+                         "full_url": "http://localhost.localdomain/user/foo",

                          "name": "foo",

                          "url_path": "user/foo",

                      },
@@ -261,6 +265,7 @@ 

                      "comments": [],

                      "content": "This issue needs attention",

                      "custom_fields": [],

+                     "full_url": "http://localhost.localdomain/test/issue/1",

                      "date_created": "1431414800",

                      "depends": [],

                      "id": 1,
@@ -274,6 +279,7 @@ 

                      "title": "test issue",

                      "user": {

                          "fullname": "foo bar",

+                         "full_url": "http://localhost.localdomain/user/foo",

                          "name": "foo",

                          "url_path": "user/foo",

                      },

@@ -261,6 +261,7 @@ 

                              "fullname": "test",

                              "url_path": "test",

                              "description": "test project #1",

+                             "full_url": "http://localhost.localdomain/test",

                              "namespace": None,

                              "parent": None,

                              "date_created": ANY,
@@ -268,6 +269,7 @@ 

                              "user": {

                                  "name": "pingou",

                                  "fullname": "PY C",

+                                 "full_url": "http://localhost.localdomain/user/pingou",

                                  "url_path": "user/pingou",

                              },

                              "access_users": {
@@ -301,6 +303,7 @@ 

                              "fullname": "test",

                              "url_path": "test",

                              "description": "test project #1",

+                             "full_url": "http://localhost.localdomain/test",

                              "namespace": None,

                              "parent": None,

                              "date_created": ANY,
@@ -308,6 +311,7 @@ 

                              "user": {

                                  "name": "pingou",

                                  "fullname": "PY C",

+                                 "full_url": "http://localhost.localdomain/user/pingou",

                                  "url_path": "user/pingou",

                              },

                              "access_users": {
@@ -336,12 +340,14 @@ 

                          },

                          "remote_git": None,

                          "date_created": ANY,

+                         "full_url": "http://localhost.localdomain/test/pull-request/1",

                          "updated_on": ANY,

                          "last_updated": ANY,

                          "closed_at": None,

                          "user": {

                              "name": "pingou",

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "url_path": "user/pingou",

                          },

                          "assignee": None,
@@ -367,6 +373,7 @@ 

                          "user": {

                              "name": "pingou",

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "url_path": "user/pingou",

                          },

                      },
@@ -398,6 +405,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -476,6 +484,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -520,6 +529,7 @@ 

                          "id": 1,

                          "uid": ANY,

                          "title": "test pull-request",

+                         "full_url": "http://localhost.localdomain/test/pull-request/1",

                          "branch": "master",

                          "project": {

                              "id": 1,
@@ -527,6 +537,7 @@ 

                              "fullname": "test",

                              "url_path": "test",

                              "description": "test project #1",

+                             "full_url": "http://localhost.localdomain/test",

                              "namespace": None,

                              "parent": None,

                              "date_created": ANY,
@@ -534,6 +545,7 @@ 

                              "user": {

                                  "name": "pingou",

                                  "fullname": "PY C",

+                                 "full_url": "http://localhost.localdomain/user/pingou",

                                  "url_path": "user/pingou",

                              },

                              "access_users": {
@@ -567,6 +579,7 @@ 

                              "fullname": "test",

                              "url_path": "test",

                              "description": "test project #1",

+                             "full_url": "http://localhost.localdomain/test",

                              "namespace": None,

                              "parent": None,

                              "date_created": ANY,
@@ -574,6 +587,7 @@ 

                              "user": {

                                  "name": "pingou",

                                  "fullname": "PY C",

+                                 "full_url": "http://localhost.localdomain/user/pingou",

                                  "url_path": "user/pingou",

                              },

                              "access_users": {
@@ -608,6 +622,7 @@ 

                          "user": {

                              "name": "pingou",

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "url_path": "user/pingou",

                          },

                          "assignee": None,
@@ -633,6 +648,7 @@ 

                          "user": {

                              "name": "pingou",

                              "fullname": "PY C",

+                             "full_url": "http://localhost.localdomain/user/pingou",

                              "url_path": "user/pingou",

                          },

                      },
@@ -662,6 +678,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -724,6 +741,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -782,6 +800,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -1092,6 +1111,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -1158,6 +1178,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -1217,6 +1238,7 @@ 

                      "user": {

                          "default_email": "bar@pingou.com",

                          "emails": ["bar@pingou.com", "foo@pingou.com"],

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "fullname": "PY C",

                          "name": "pingou",

                          "url_path": "user/pingou",
@@ -1393,6 +1415,7 @@ 

                          "url": "http://jenkins.cloud.fedoraproject.org",

                          "user": {

                              "fullname": "foo bar",

+                             "full_url": "http://localhost.localdomain/user/foo",

                              "name": "foo",

                              "url_path": "user/foo",

                          },
@@ -1471,6 +1494,7 @@ 

                          "user": {

                              "fullname": "foo bar",

                              "name": "foo",

+                             "full_url": "http://localhost.localdomain/user/foo",

                              "url_path": "user/foo",

                          },

                          "username": "jenkins",
@@ -1486,6 +1510,7 @@ 

                          "user": {

                              "fullname": "foo bar",

                              "name": "foo",

+                             "full_url": "http://localhost.localdomain/user/foo",

                              "url_path": "user/foo",

                          },

                          "username": "travis",

@@ -254,6 +254,7 @@ 

                      "description": "test project #1",

                      "fullname": "test",

                      "url_path": "test",

+                     "full_url": "http://localhost.localdomain/test",

                      "id": 1,

                      "milestones": {},

                      "name": "test",
@@ -264,6 +265,7 @@ 

                      "user": {

                          "fullname": "PY C",

                          "name": "pingou",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "url_path": "user/pingou",

                      },

                  }
@@ -474,6 +476,7 @@ 

                      "date_created": "1436527638",

                      "date_modified": "1436527638",

                      "description": "test project #1",

+                     "full_url": "http://localhost.localdomain/test",

                      "fullname": "test",

                      "url_path": "test",

                      "id": 1,
@@ -484,8 +487,9 @@ 

                      "priorities": {},

                      "tags": ["infra"],

                      "user": {

-                         "fullname": "PY C",

                          "name": "pingou",

+                         "fullname": "PY C",

+                         "full_url": "http://localhost.localdomain/user/pingou",

                          "url_path": "user/pingou",

                      },

                  }
@@ -541,6 +545,7 @@ 

                      "date_created": "1436527638",

                      "date_modified": "1436527638",

                      "description": "test project #1",