diff --git a/uffd/ldap.py b/uffd/ldap.py
index d4bc071e968d1355746b1294390bc9f01388c2cc..c09103b5850266eca4284b8190d00c1948b42f5a 100644
--- a/uffd/ldap.py
+++ b/uffd/ldap.py
@@ -4,8 +4,8 @@ from collections.abc import MutableSet
 from flask import current_app, request
 
 from ldap3.utils.conv import escape_filter_chars
-from ldap3.core.exceptions import LDAPBindError, LDAPCursorError, LDAPPasswordIsMandatoryError
-from ldap3 import MODIFY_REPLACE, MODIFY_DELETE, MODIFY_ADD, HASHED_SALTED_SHA512
+from ldap3.core.exceptions import LDAPBindError, LDAPPasswordIsMandatoryError
+from ldap3 import MODIFY_REPLACE, MODIFY_DELETE, MODIFY_ADD
 
 from ldap3 import Server, Connection, ALL, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, MOCK_SYNC
 
@@ -95,7 +95,7 @@ class LDAPSession:
 		if obj.dn in self.__objects:
 			del self.__objects[obj.dn]
 		self.__to_delete.append(obj)
-		
+
 	def commit(self):
 		while self.__to_delete:
 			self.__to_delete.pop(0).ldap_delete()
@@ -134,7 +134,7 @@ class LDAPSet(MutableSet):
 
 	def __contains__(self, value):
 		return value is not None and self.__encode(value) in self.__getitems()
-	
+
 	def __iter__(self):
 		return iter(filter(lambda obj: obj is not None, map(self.__decode, self.__getitems())))
 
@@ -214,8 +214,7 @@ class LDAPBackref:
 
 class LDAPRelation(LDAPAttribute):
 	def __init__(self, name, dest, backref=None):
-		super().__init__(name, multi=True, encode=lambda value: value.dn,
-		                 decode=lambda value: dest.ldap_get(value))
+		super().__init__(name, multi=True, encode=lambda value: value.dn, decode=dest.ldap_get)
 		self.name = name
 		self.dest = dest
 		self.backref = backref
diff --git a/uffd/mail/views.py b/uffd/mail/views.py
index 7791686c88cf4aad7a3f35a320c14c19a16dfc5e..db401a3ababe1ae6f1eb2bd79169d78d24b4518b 100644
--- a/uffd/mail/views.py
+++ b/uffd/mail/views.py
@@ -4,7 +4,6 @@ from uffd.navbar import register_navbar
 from uffd.csrf import csrf_protect
 from uffd.ldap import ldap
 from uffd.session import login_required, is_valid_session, get_current_user
-from uffd.user.models import Group
 
 from uffd.mail.models import Mail
 
diff --git a/uffd/mfa/views.py b/uffd/mfa/views.py
index 1e6d45cad8d64b8df8f3a73f9fe15e3785a6c467..50b6ebce8ee6f04a052ffc57dabb6154859f2abe 100644
--- a/uffd/mfa/views.py
+++ b/uffd/mfa/views.py
@@ -6,7 +6,7 @@ from flask import Blueprint, render_template, session, request, redirect, url_fo
 from uffd.database import db
 from uffd.mfa.models import MFAMethod, TOTPMethod, WebauthnMethod, RecoveryCodeMethod
 from uffd.session.views import get_current_user, login_required, pre_mfa_login_required
-from uffd.user.models import User, Group
+from uffd.user.models import User
 from uffd.csrf import csrf_protect
 from uffd.ratelimit import Ratelimit, format_delay
 
diff --git a/uffd/role/utils.py b/uffd/role/utils.py
index b9ab08b8f2a84c372c22067c6e816b3c70f20eb6..de55f1ab695a2901a0e60f1adc83d7b483822dc8 100644
--- a/uffd/role/utils.py
+++ b/uffd/role/utils.py
@@ -1,3 +1,4 @@
+from uffd.user.models import Group
 from uffd.role.models import Role
 
 def recalculate_user_groups(user):
diff --git a/uffd/session/views.py b/uffd/session/views.py
index ac6f7497fd70dd0a000102cd8049ba2d126d5e48..e9b28992a85dea8a85fa8c5e0f5154e212981d8e 100644
--- a/uffd/session/views.py
+++ b/uffd/session/views.py
@@ -4,7 +4,7 @@ import functools
 
 from flask import Blueprint, render_template, request, url_for, redirect, flash, current_app, session, abort
 
-from uffd.user.models import User, Group
+from uffd.user.models import User
 from uffd.ldap import user_conn
 from uffd.ratelimit import Ratelimit, host_ratelimit, format_delay
 
diff --git a/uffd/user/models.py b/uffd/user/models.py
index a56e687ab9e46a81081ef1f7869b613ba878653e..0dba9a7159def1a25724d2d4461d6f5f2ca85aba 100644
--- a/uffd/user/models.py
+++ b/uffd/user/models.py
@@ -29,6 +29,8 @@ class User(LDAPModel):
 	mail = LDAPAttribute('mail')
 	pwhash = LDAPAttribute('userPassword', default=lambda: hashed(HASHED_SALTED_SHA512, secrets.token_hex(128)))
 
+	groups = [] # Shut up pylint, overwritten by LDAPBackref
+
 	def dummy_attribute_defaults(self):
 		if self.ldap_getattr('sn') == []:
 			self.ldap_setattr('sn', [' '])
diff --git a/uffd/user/views_group.py b/uffd/user/views_group.py
index 140384f6223a491853b431a4b7114baead80337a..3fb1b65fcfad0b33cda53323d11c51d252413b5f 100644
--- a/uffd/user/views_group.py
+++ b/uffd/user/views_group.py
@@ -1,7 +1,6 @@
 from flask import Blueprint, render_template, url_for, redirect, flash, current_app
 
 from uffd.navbar import register_navbar
-from uffd.ldap import get_conn, escape_filter_chars
 from uffd.session import login_required, is_valid_session, get_current_user
 
 from .models import Group
diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py
index bc073310232b963dc57bc23b2613c8af24cb3431..a293d554799b734818a6445f5a5eefa2fcfa25fb 100644
--- a/uffd/user/views_user.py
+++ b/uffd/user/views_user.py
@@ -10,9 +10,9 @@ from uffd.session import login_required, is_valid_session, get_current_user
 from uffd.role.models import Role
 from uffd.role.utils import recalculate_user_groups
 from uffd.database import db
-from uffd.ldap import ldap
+from uffd.ldap import ldap, LDAPCommitError
 
-from .models import User, Group
+from .models import User
 
 bp = Blueprint("user", __name__, template_folder='templates', url_prefix='/user/')
 @bp.before_request
@@ -123,7 +123,7 @@ def csvimport():
 			try:
 				ldap.session.commit()
 				db.session.commit()
-			except: # TODO
+			except LDAPCommitError:
 				flash('Error adding user {}'.format(row[0]))
 				ldap.session.rollback()
 				db.session.rollback()