Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bookshare
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
30
Issues
30
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
SRCT
bookshare
Commits
ef23d13b
Commit
ef23d13b
authored
Jan 16, 2016
by
Daniel W Bond
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added additional print statement logging and try/except's for the user creation callback
parent
318b82bc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
77 additions
and
53 deletions
+77
-53
bookshare/core/cas_callbacks.py
bookshare/core/cas_callbacks.py
+77
-53
No files found.
bookshare/core/cas_callbacks.py
View file @
ef23d13b
# core django imports
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
# third-part imports
import
requests
# imports from your apps
from
django.conf
import
settings
from
.models
import
Student
def
pfinfo
(
u_name
):
pf_url
=
settings
.
PF_URL
url
=
str
(
pf_url
)
+
"basic/all/"
+
str
(
u_name
)
try
:
metadata
=
requests
.
get
(
url
)
metadata
.
raise_for_status
()
except
requests
.
exceptions
.
RequestException
as
e
:
print
e
else
:
pf_json
=
metadata
.
json
()
try
:
name
=
pf_json
[
'results'
][
0
][
'name'
]
return
name
.
split
(
','
)
# if the name is not in peoplefinder, return empty first and last name
except
IndexError
:
return
[
''
,
''
]
def
create_user
(
tree
):
username
=
tree
[
0
][
0
].
text
print
username
user
,
user_created
=
User
.
objects
.
get_or_create
(
username
=
username
)
if
user_created
:
user
.
email
=
"%s@%s"
%
(
username
,
settings
.
ORGANIZATION_EMAIL_DOMAIN
)
print
"hello"
name_list
=
pfinfo
(
str
(
username
))
print
name_list
,
"name_list"
first_name
=
name_list
[
1
].
lstrip
().
split
(
' '
)
if
len
(
first_name
)
>
1
:
no_mi
=
first_name
[:
-
1
]
user
.
first_name
=
' '
.
join
(
no_mi
)
else
:
user
.
first_name
=
' '
.
join
(
first_name
)
last_name
=
name_list
[
0
]
user
.
last_name
=
name_list
[
0
]
print
"world"
user
.
save
()
new_student
=
Student
.
objects
.
create
(
user
=
user
)
new_student
.
save
()
print
(
"Created user %s!"
%
username
)
# standard library imports
from
__future__
import
absolute_import
,
print_function
# core django imports
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.conf
import
settings
from
django.core.exceptions
import
ObjectDoesNotExist
# third-part imports
import
requests
# imports from your apps
from
.models
import
Student
def
pfinfo
(
u_name
):
pf_url
=
settings
.
PF_URL
url
=
str
(
pf_url
)
+
"basic/all/"
+
str
(
u_name
)
try
:
metadata
=
requests
.
get
(
url
,
timeout
=
5
)
print
(
"Retrieving information from the peoplefinder api."
)
metadata
.
raise_for_status
()
except
requests
.
exceptions
.
RequestException
as
e
:
print
(
"Cannot resolve to peoplefinder api:"
,
e
)
else
:
try
:
pf_json
=
metadata
.
json
()
name
=
pf_json
[
'results'
][
0
][
'name'
]
return
name
.
split
(
','
)
# if the name is not in peoplefinder, return empty first and last name
except
IndexError
:
return
[
''
,
''
]
def
create_user
(
tree
):
print
(
"Parsing CAS information."
)
try
:
username
=
tree
[
0
][
0
].
text
user
,
user_created
=
User
.
objects
.
get_or_create
(
username
=
username
)
if
user_created
:
print
(
"Created user object %s."
%
username
)
user
.
email
=
"%s@%s"
%
(
username
,
settings
.
ORGANIZATION_EMAIL_DOMAIN
)
user
.
set_password
(
'cas_used_instead'
)
try
:
name_list
=
pfinfo
(
str
(
username
))
first_name
=
name_list
[
1
].
lstrip
().
split
(
' '
)
if
len
(
first_name
)
>
1
:
no_mi
=
first_name
[:
-
1
]
# no middle initial
user
.
first_name
=
' '
.
join
(
no_mi
)
else
:
user
.
first_name
=
' '
.
join
(
first_name
)
last_name
=
name_list
[
0
]
user
.
last_name
=
name_list
[
0
]
print
(
"Added user's name, %s %s."
%
first_name
,
last_name
)
except
:
print
(
"Problem setting user's name via peoplefinder."
)
user
.
save
()
print
(
"User object creation completed."
)
else
:
print
(
"User object already exists."
)
try
:
Student
.
objects
.
get
(
user
=
user
)
print
(
"Student object already exists."
)
except
ObjectDoesNotExist
:
new_student
=
Student
.
objects
.
create
(
user
=
user
)
new_student
.
save
()
print
(
"Student object creation completed."
)
print
(
"CAS callback successful."
)
except
Exception
as
e
:
print
(
"Unhandled user creation error:"
,
e
)
# mail the administrators
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment