Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Bryan BRANCOTTE
django-basetheme-bootstrap
Commits
fe070ddf
Commit
fe070ddf
authored
Aug 30, 2019
by
Bryan BRANCOTTE
Browse files
Allow to set first and last name required
parent
9bac4454
Pipeline
#14158
passed with stage
in 28 seconds
Changes
6
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
fe070ddf
...
...
@@ -54,6 +54,7 @@ BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_ENABLED = True
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_LOCATION_APP
=
"test_app_1"
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_NAME
=
"MyUserPreferences"
BASETHEME_BOOTSTRAP_USERNAME_IS_EMAIL
=
False
BASETHEME_BOOTSTRAP_FIRST_LAST_NAME_REQUIRED
=
False
################################################################################
```
...
...
README.rst
View file @
fe070ddf
...
...
@@ -50,6 +50,8 @@ Quick start
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_ENABLED = True
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_LOCATION_APP = "test_app_1"
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_NAME = "MyUserPreferences"
BASETHEME_BOOTSTRAP_USERNAME_IS_EMAIL = False
BASETHEME_BOOTSTRAP_FIRST_LAST_NAME_REQUIRED = False
################################################################################
...
...
basetheme_bootstrap/forms.py
View file @
fe070ddf
...
...
@@ -13,6 +13,12 @@ def is_username_is_email():
except
AttributeError
:
return
False
def
is_first_last_name_required
():
try
:
return
settings
.
BASETHEME_BOOTSTRAP_FIRST_LAST_NAME_REQUIRED
except
AttributeError
:
return
False
class
CleanUsernameAndSuggestReset
:
class
Meta
:
...
...
@@ -29,6 +35,11 @@ class CleanUsernameAndSuggestReset:
self
.
add_error
(
"email"
,
mark_safe
(
_
(
'The email already exists, if you have lost your password you can reset it '
'<a href="%s">here</a>.'
)
%
(
reverse
(
'basetheme_bootstrap:password_reset'
))))
if
is_first_last_name_required
():
if
len
(
f
.
get
(
"first_name"
,
""
))
==
0
:
self
.
add_error
(
"email"
,
_
(
"First name is required"
))
if
len
(
f
.
get
(
"last_name"
,
""
))
==
0
:
self
.
add_error
(
"email"
,
_
(
"Last name is required"
))
return
f
...
...
@@ -43,6 +54,9 @@ class UserCreationFormWithMore(CleanUsernameAndSuggestReset, auth_forms.UserCrea
self
.
fields
[
'email'
].
widget
.
attrs
.
update
({
'required'
:
True
})
if
is_username_is_email
():
del
self
.
fields
[
'username'
]
if
is_first_last_name_required
():
self
.
fields
[
'first_name'
].
widget
.
attrs
.
update
({
'required'
:
True
})
self
.
fields
[
'last_name'
].
widget
.
attrs
.
update
({
'required'
:
True
})
def
save
(
self
,
commit
=
True
):
user
=
super
().
save
(
commit
=
False
)
...
...
@@ -63,6 +77,9 @@ class MyUserChangeForm(CleanUsernameAndSuggestReset, auth_forms.UserChangeForm):
if
is_username_is_email
():
del
self
.
fields
[
'username'
]
self
.
fields
[
'email'
].
widget
.
attrs
.
update
({
'required'
:
True
})
if
is_first_last_name_required
():
self
.
fields
[
'first_name'
].
widget
.
attrs
.
update
({
'required'
:
True
})
self
.
fields
[
'last_name'
].
widget
.
attrs
.
update
({
'required'
:
True
})
def
save
(
self
,
commit
=
True
):
user
=
super
().
save
(
commit
=
False
)
...
...
basetheme_bootstrap/tests.py
View file @
fe070ddf
...
...
@@ -76,7 +76,7 @@ class SignUpWithoutUsernameTests(TestCase):
self
.
assertEqual
(
user
.
email
,
data
[
"email"
])
def
test_sign_up_detecte_duplicate_email
(
self
):
get_user_model
().
objects
.
create
(
username
=
"toto"
,
email
=
"userAAA@mp.com"
)
get_user_model
().
objects
.
create
(
username
=
"toto"
,
email
=
"userAAA@mp.com"
)
user_count
=
get_user_model
().
objects
.
count
()
data
=
{
'email'
:
"userAAA@mp.com"
,
...
...
@@ -88,6 +88,56 @@ class SignUpWithoutUsernameTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
200
)
@
override_settings
(
BASETHEME_BOOTSTRAP_FIRST_LAST_NAME_REQUIRED
=
True
,
)
class
SignUpWithFirstLastNameRequiredTests
(
TestCase
):
def
test_sign_up_form_view
(
self
):
user_count
=
get_user_model
().
objects
.
count
()
data
=
{
'username'
:
"userAAA@mp.com"
,
'email'
:
"userAAA@mp.com"
,
'password1'
:
"user@mp.comuser@mp.comuser@mp.comuser@mp.com"
,
'password2'
:
"user@mp.comuser@mp.comuser@mp.comuser@mp.com"
,
'first_name'
:
"my_first_name"
,
'last_name'
:
"my_last_name"
,
}
response
=
self
.
client
.
post
(
reverse
(
'basetheme_bootstrap:signup'
),
data
)
self
.
assertEqual
(
response
.
status_code
,
302
)
self
.
assertRedirects
(
response
,
expected_url
=
reverse
(
'home'
),
)
self
.
assertEqual
(
get_user_model
().
objects
.
count
(),
user_count
+
1
)
user
=
get_user_model
().
objects
.
last
()
self
.
assertEqual
(
user
.
username
,
data
[
"email"
])
self
.
assertEqual
(
user
.
email
,
data
[
"email"
])
self
.
assertEqual
(
user
.
first_name
,
data
[
"first_name"
])
self
.
assertEqual
(
user
.
last_name
,
data
[
"last_name"
])
def
test_sign_up_detect_missing_last_name
(
self
):
data
=
{
'username'
:
"userAAA@mp.com"
,
'email'
:
"userAAA@mp.com"
,
'password1'
:
"user@mp.comuser@mp.comuser@mp.comuser@mp.com"
,
'password2'
:
"user@mp.comuser@mp.comuser@mp.comuser@mp.com"
,
'first_name'
:
"my_first_name"
,
'last_name'
:
""
,
}
response
=
self
.
client
.
post
(
reverse
(
'basetheme_bootstrap:signup'
),
data
)
self
.
assertEqual
(
response
.
status_code
,
200
)
def
test_sign_up_detect_missing_first_name
(
self
):
data
=
{
'username'
:
"userAAA@mp.com"
,
'email'
:
"userAAA@mp.com"
,
'password1'
:
"user@mp.comuser@mp.comuser@mp.comuser@mp.com"
,
'password2'
:
"user@mp.comuser@mp.comuser@mp.comuser@mp.com"
,
'first_name'
:
""
,
'last_name'
:
"my_last_name"
,
}
response
=
self
.
client
.
post
(
reverse
(
'basetheme_bootstrap:signup'
),
data
)
self
.
assertEqual
(
response
.
status_code
,
200
)
class
TestWithTemplatesInPlace
(
SignUpTests
):
def
setUp
(
self
):
...
...
setup.py
View file @
fe070ddf
...
...
@@ -7,7 +7,7 @@ readme = open('README.rst').read()
setup
(
name
=
'django-basetheme-bootstrap'
,
version
=
'0.2.
8
'
,
version
=
'0.2.
9
'
,
description
=
'Django Basetheme Bootstrap'
,
long_description
=
readme
,
author
=
'Bryan Brancotte'
,
...
...
tests/settings.py
View file @
fe070ddf
...
...
@@ -137,6 +137,7 @@ BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_ENABLED = True
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_LOCATION_APP
=
"test_app_1"
BASETHEME_BOOTSTRAP_USER_PREFERENCE_MODEL_NAME
=
"MyUserPreferences"
# BASETHEME_BOOTSTRAP_USERNAME_IS_EMAIL = True # default is False
# BASETHEME_BOOTSTRAP_FIRST_LAST_NAME_REQUIRED = True # default is False
################################################################################
# Various debug stuff
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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