diff --git a/ucs-school-4.0r2/ucs-school-umc-printermoderation/umc/python/printermoderation/__init__.py b/ucs-school-4.0r2/ucs-school-umc-printermoderation/umc/python/printermoderation/__init__.py index 199ded0..31f26fc 100644 --- a/ucs-school-4.0r2/ucs-school-umc-printermoderation/umc/python/printermoderation/__init__.py +++ b/ucs-school-4.0r2/ucs-school-umc-printermoderation/umc/python/printermoderation/__init__.py @@ -33,6 +33,7 @@ import datetime import glob +import copy import os import stat import subprocess @@ -79,8 +80,11 @@ def init(self): def _get_path(self, username, printjob): printjob = printjob.replace('/', '') - username = username.replace('/', '').lower() - path = os.path.join(CUPSPDF_DIR, username, CUPSPDF_USERSUBDIR, printjob) + username = username.replace('/', '') + for username in (username, username.lower()): + path = os.path.join(CUPSPDF_DIR, username, CUPSPDF_USERSUBDIR, printjob) + if os.path.exists(path): + break if not os.path.realpath(path).startswith(os.path.realpath(CUPSPDF_DIR)): raise UMC_OptionTypeError('Invalid file') return path @@ -130,8 +134,11 @@ def query(self, request, ldap_user_read=None, ldap_position=None, search_base=No printjoblist = [] for student in students: - user_path = self._get_path(student.info['username'], '*.pdf') - printjoblist.extend(Printjob(student, document).json() for document in glob.glob(user_path) if os.path.isfile(document)) + student2 = copy.deepcopy(student) + student2.info['username'] = student2.info['username'].lower() + for student in (student, student2): + user_path = self._get_path(student.info['username'], '') + printjoblist.extend(Printjob(student, document).json() for document in glob.glob(os.path.join(user_path, '*.pdf')) if os.path.isfile(document)) self.finished(request.id, printjoblist)