#4679 Fix dashboard with non-admin group members
Merged 4 years ago by pingou. Opened 4 years ago by jlanda.

file modified
+4 -4
@@ -159,11 +159,11 @@ 

      groups = []

  

      for group in user.groups:

-         groups.append(

-             pagure.lib.query.search_groups(

-                 flask.g.session, group_name=group, group_type="user"

-             )

+         group_obj = pagure.lib.query.search_groups(

+             flask.g.session, group_name=group, group_type="user"

          )

+         if group_obj:

+             groups.append(group_obj)

  

      acl = flask.request.args.get("acl", "").strip().lower() or None

      search_pattern = flask.request.args.get("search_pattern", None)

@@ -376,6 +376,53 @@ 

              )

              self.assertEqual(output_text.count('title="Private project"'), 1)

  

+     def test_index_logged_in_non_user_group(self):

+         """

+         Test the index endpoint when logged in with a member of non-user type

+         group.

+         """

+         tests.create_projects(self.session)

+ 

+         # Add a 3rd project just for foo

+         item = pagure.lib.model.Project(

+             user_id=2,  # foo

+             name="test3",

+             description="test project #3 with a very long description",

+             hook_token="aaabbbeeefff",

+         )

+         self.session.add(item)

+         self.session.commit()

+ 

+         # Add admin group

+         item = pagure.lib.model.PagureGroup(

+             group_name="admin",

+             group_type="admin",

+             user_id=1,  # pingou

+             display_name="admin",

+             description="Admin Group",

+         )

+         self.session.add(item)

+         self.session.commit()

+ 

+         # Add foo to admin group

+         item = pagure.lib.model.PagureUserGroup(

+             user_id=2, group_id=1  # foo  # admin group

+         )

+         self.session.add(item)

+         self.session.commit()

+ 

+         user = tests.FakeUser(username="foo")

+         with tests.user_set(self.app.application, user):

+             output = self.app.get("/dashboard/projects")

+             self.assertEqual(output.status_code, 200)

+             output_text = output.get_data(as_text=True)

+             self.assertIn(

+                 '<h4 class="font-weight-bold mb-0">My Projects</h4>\n'

+                 '          <span class="btn btn-outline-secondary disabled'

+                 ' opacity-100 border-0 ml-auto font-weight-bold">1 Projects</span>\n',

+                 output_text,

+             )

+ 

  

  if __name__ == "__main__":

      unittest.main(verbosity=2)

I found the underlying problem on #4330 !! This test reproduces it on the test suite

1 new commit added

  • ui/app: just append groups to groups list when we actually get groups from the db query
4 years ago

Tests passed on out first testing environment, so ready for review

Nice catch!

Looks good to me :)

Let's get this in! :)

Pull-Request has been merged by pingou

4 years ago