Re: [PATCH] pullrequests: introduce limit to stop displaying additional changes

2023-01-18 Thread Mads Kiilerich

Thank you. Pushed to stable with some minor tweaks and additions.

/Mads


On 18/01/2023 07:45, Mathias De Mare wrote:

# HG changeset patch
# User Mathias De Mare 
# Date 1672834977 -3600
#  Wed Jan 04 13:22:57 2023 +0100
# Branch stable
# Node ID ac278c9c011136b72de43d8dbd742f9cf3dbf020
# Parent  b7efb8fdc45fb95ce8ece04e1aed7d965c300bae
pullrequests: introduce limit to stop displaying additional changes

The previous pull request threw away some of the changesets
to keep the total amount more manageable, but this results
in an (for the user) unpredictable subset of changesets being shown.

To resolve this issue, we instead do not display any additional changes
if the amount of additional changes is larger than a user-defined limit.

This could be extended further with "too long to be shown - click here
to show", but that was quite a bit of additional work
and did not cover our use case of not allowing the display at all
in case of too many additional changes.

diff --git a/kallithea/controllers/pullrequests.py 
b/kallithea/controllers/pullrequests.py
--- a/kallithea/controllers/pullrequests.py
+++ b/kallithea/controllers/pullrequests.py
@@ -35,6 +35,8 @@ from tg import tmpl_context as c
  from tg.i18n import ugettext as _
  from webob.exc import HTTPBadRequest, HTTPForbidden, HTTPFound, HTTPNotFound
  
+import kallithea

+
  import kallithea.lib.helpers as h
  from kallithea.controllers import base
  from kallithea.controllers.changeset import create_cs_pr_comment, 
delete_cs_pr_comment
@@ -494,6 +496,8 @@ class PullrequestsController(base.BaseRe
  except IndexError: # probably because c.cs_ranges is empty, probably 
because revisions are missing
  pass
  
+rev_limit = safe_int(kallithea.CONFIG.get('next_iteration_rev_limit'), 0)

+
  avail_revs = set()
  avail_show = []
  c.cs_branch_name = c.cs_ref_name
@@ -563,9 +567,16 @@ class PullrequestsController(base.BaseRe
  except ChangesetDoesNotExistError:
  c.update_msg = _('Error: some changesets not found when 
displaying pull request from %s.') % c.cs_rev
  
-c.avail_revs = avail_revs

-c.avail_cs = [org_scm_instance.get_changeset(r) for r in avail_show]
-c.avail_jsdata = graph_data(org_scm_instance, avail_show)
+if rev_limit and len(avail_revs) > rev_limit:
+c.update_msg = _('Additional changesets (%d) are not shown because 
they exceed the limit (%d).') % (len(avail_revs), rev_limit)
+c.avail_revs = []
+c.avail_cs = []
+c.avail_jsdata = None
+else:
+c.rev_limit_reached = False
+c.avail_revs = avail_revs
+c.avail_cs = [org_scm_instance.get_changeset(r) for r in 
avail_show]
+c.avail_jsdata = graph_data(org_scm_instance, avail_show)
  
  raw_ids = [x.raw_id for x in c.cs_ranges]

  c.cs_comments = c.cs_repo.get_comments(raw_ids)

___
kallithea-general mailing list
kallithea-general@sfconservancy.org
https://lists.sfconservancy.org/mailman/listinfo/kallithea-general



___
kallithea-general mailing list
kallithea-general@sfconservancy.org
https://lists.sfconservancy.org/mailman/listinfo/kallithea-general


[PATCH] pullrequests: introduce limit to stop displaying additional changes

2023-01-18 Thread Mathias De Mare
# HG changeset patch
# User Mathias De Mare 
# Date 1672834977 -3600
#  Wed Jan 04 13:22:57 2023 +0100
# Branch stable
# Node ID ac278c9c011136b72de43d8dbd742f9cf3dbf020
# Parent  b7efb8fdc45fb95ce8ece04e1aed7d965c300bae
pullrequests: introduce limit to stop displaying additional changes

The previous pull request threw away some of the changesets
to keep the total amount more manageable, but this results
in an (for the user) unpredictable subset of changesets being shown.

To resolve this issue, we instead do not display any additional changes
if the amount of additional changes is larger than a user-defined limit.

This could be extended further with "too long to be shown - click here
to show", but that was quite a bit of additional work
and did not cover our use case of not allowing the display at all
in case of too many additional changes.

diff --git a/kallithea/controllers/pullrequests.py 
b/kallithea/controllers/pullrequests.py
--- a/kallithea/controllers/pullrequests.py
+++ b/kallithea/controllers/pullrequests.py
@@ -35,6 +35,8 @@ from tg import tmpl_context as c
 from tg.i18n import ugettext as _
 from webob.exc import HTTPBadRequest, HTTPForbidden, HTTPFound, HTTPNotFound
 
+import kallithea
+
 import kallithea.lib.helpers as h
 from kallithea.controllers import base
 from kallithea.controllers.changeset import create_cs_pr_comment, 
delete_cs_pr_comment
@@ -494,6 +496,8 @@ class PullrequestsController(base.BaseRe
 except IndexError: # probably because c.cs_ranges is empty, probably 
because revisions are missing
 pass
 
+rev_limit = safe_int(kallithea.CONFIG.get('next_iteration_rev_limit'), 
0)
+
 avail_revs = set()
 avail_show = []
 c.cs_branch_name = c.cs_ref_name
@@ -563,9 +567,16 @@ class PullrequestsController(base.BaseRe
 except ChangesetDoesNotExistError:
 c.update_msg = _('Error: some changesets not found when displaying 
pull request from %s.') % c.cs_rev
 
-c.avail_revs = avail_revs
-c.avail_cs = [org_scm_instance.get_changeset(r) for r in avail_show]
-c.avail_jsdata = graph_data(org_scm_instance, avail_show)
+if rev_limit and len(avail_revs) > rev_limit:
+c.update_msg = _('Additional changesets (%d) are not shown because 
they exceed the limit (%d).') % (len(avail_revs), rev_limit)
+c.avail_revs = []
+c.avail_cs = []
+c.avail_jsdata = None
+else:
+c.rev_limit_reached = False
+c.avail_revs = avail_revs
+c.avail_cs = [org_scm_instance.get_changeset(r) for r in 
avail_show]
+c.avail_jsdata = graph_data(org_scm_instance, avail_show)
 
 raw_ids = [x.raw_id for x in c.cs_ranges]
 c.cs_comments = c.cs_repo.get_comments(raw_ids)

___
kallithea-general mailing list
kallithea-general@sfconservancy.org
https://lists.sfconservancy.org/mailman/listinfo/kallithea-general