def clean(self, value): if isinstance(value, Person): return self.__check_email(value) else: if not self.required and not value: return None try: return self.__check_email(Person.objects.get(emplid=value)) except (ValueError, Person.DoesNotExist): # try to find the emplid in SIMS if they are missing from our DB if not value: raise forms.ValidationError("Could not find this emplid.") if not value.isdigit( ): # doesn't look like an emplid: try it as a userid try: return self.__check_email( Person.objects.get(userid=value)) except Person.DoesNotExist: value = userid_to_emplid(value) if not value: raise forms.ValidationError( "Could not find this emplid.") try: persondata = find_person(value) except SIMSProblem as e: raise forms.ValidationError( "Problem locating person in SIMS: " + str(e)) if not persondata: raise forms.ValidationError("Could not find this emplid.") # we found this emplid in SIMS: raise validation error, but offer to add next time. confirm = self.fieldname + '_confirm' checkemplid = self.fieldname + '_emplid' if confirm in self.formdata and checkemplid in self.formdata and self.formdata[ checkemplid] == value: # new person was presented in the form last time, and they confirmed import p = add_person(value) return self.__check_email(p) else: self.widget.found_sims = True self.widget.sims_data = persondata raise forms.ValidationError( "Person is new to this system: please confirm their import." )
def XXX_sims_person_search(request): # check permissions roles = Role.all_roles(request.user.username) allowed = set(['ADVS', 'ADMN', 'GRAD', 'FUND']) if not(roles & allowed): # doesn't have any allowed roles return ForbiddenResponse(request, "Not permitted to do person search.") if 'emplid' not in request.GET: return ForbiddenResponse(request, "Must provide 'emplid' query.") emplid = request.GET['emplid'] response = HttpResponse(content_type='application/json') data = find_person(emplid) json.dump(data, response, indent=1) return response
def XXX_sims_person_search(request): # check permissions roles = Role.all_roles(request.user.username) allowed = set(['ADVS', 'ADMN', 'GRAD', 'FUND']) if not (roles & allowed): # doesn't have any allowed roles return ForbiddenResponse(request, "Not permitted to do person search.") if 'emplid' not in request.GET: return ForbiddenResponse(request, "Must provide 'emplid' query.") emplid = request.GET['emplid'] response = HttpResponse(content_type='application/json') data = find_person(emplid) json.dump(data, response, indent=1) return response
def sims_search(request): emplid = request.GET.get('emplid', None) data = None if emplid: try: emplid = int(emplid.strip()) try: data = find_person(emplid) except SIMSProblem as e: data = {'error': unicode(e)} except ValueError: # not an integer, so not an emplid to search for data = None if not data: data = {'error': 'could not find person in SIMS database'} response = HttpResponse(content_type='application/json') json.dump(data, response) return response
def clean(self, value): if isinstance(value, Person): return value else: if not self.required and not value: return None try: return Person.objects.get(emplid=value) except (ValueError, Person.DoesNotExist): # try to find the emplid in SIMS if they are missing from our DB if not value: raise forms.ValidationError, "Could not find this emplid." if not value.isdigit(): # doesn't look like an emplid: try it as a userid try: return Person.objects.get(userid=value) except Person.DoesNotExist: value = userid_to_emplid(value) if not value: raise forms.ValidationError, "Could not find this emplid." try: persondata = find_person(value) except SIMSProblem, e: raise forms.ValidationError, "Problem locating person in SIMS: " + unicode(e) if not persondata: raise forms.ValidationError, "Could not find this emplid." # we found this emplid in SIMS: raise validation error, but offer to add next time. confirm = self.fieldname+'_confirm' checkemplid = self.fieldname+'_emplid' if confirm in self.formdata and checkemplid in self.formdata and self.formdata[checkemplid] == value: # new person was presented in the form last time, and they confirmed import p = add_person(value) return p else: self.widget.found_sims = True self.widget.sims_data = persondata raise forms.ValidationError, "Person is new to this system: please confirm their import."