diff --git a/mo/web/org_users.py b/mo/web/org_users.py
index 59c7993bd35260b4e66e6c465c96eccded6a5aa2..86fcfcb6508207b0aa92b7e604113e407a7a4462 100644
--- a/mo/web/org_users.py
+++ b/mo/web/org_users.py
@@ -4,7 +4,6 @@ import werkzeug.exceptions
 import wtforms
 from sqlalchemy import or_
 
-from typing import Optional
 from wtforms import validators
 
 from wtforms.validators import Required
@@ -15,13 +14,7 @@ import mo.rights
 import mo.util
 import mo.users
 from mo.web import app
-
-
-class PagerForm(FlaskForm):
-    limit = wtforms.IntegerField()
-    offset = wtforms.IntegerField()
-    next = wtforms.SubmitField("Další")
-    previous = wtforms.SubmitField("Předchozí")
+from mo.web.util import PagerForm
 
 
 class UsersFilterForm(PagerForm):
@@ -104,20 +97,7 @@ def org_users():
         q = q.filter(db.User.user_id.in_(participation_filter))
 
     # print(str(q))
-    count = q.count()
-
-    if not filter.offset.data:
-        filter.offset.data = 0
-    if not filter.limit.data:
-        filter.limit.data = 50
-
-    if filter.previous.data:
-        filter.offset.data = max(0, filter.offset.data - 50)
-    if filter.next.data:
-        filter.offset.data = min(count // 50 * 50, filter.offset.data + 50)
-
-    q = q.offset(filter.offset.data)
-    q = q.limit(filter.limit.data)
+    (count, q) = filter.apply_limits(q, pagesize=50)
     users = q.all()
 
     return render_template(
diff --git a/mo/web/util.py b/mo/web/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..00e5e329c262d641486460345543d315ba5ad88f
--- /dev/null
+++ b/mo/web/util.py
@@ -0,0 +1,27 @@
+from flask_wtf import FlaskForm
+import wtforms
+from sqlalchemy.orm.query import Query
+
+
+class PagerForm(FlaskForm):
+    limit = wtforms.IntegerField()
+    offset = wtforms.IntegerField()
+    next = wtforms.SubmitField("Další")
+    previous = wtforms.SubmitField("Předchozí")
+
+    def apply_limits(self, query: Query, pagesize: int = 50) -> (int, Query):
+        count = query.count()
+        if not self.offset.data:
+            self.offset.data = 0
+        if not self.limit.data:
+            self.limit.data = pagesize
+
+        if self.previous.data:
+            self.offset.data = max(0, self.offset.data - pagesize)
+        if self.next.data:
+            self.offset.data = min(count // pagesize * pagesize, self.offset.data + pagesize)
+
+        query = query.offset(self.offset.data)
+        query = query.limit(self.limit.data)
+
+        return (count, query)