Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
9292e485
Commit
9292e485
authored
Feb 27, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Bugfix] 用户csv导入编码问题
parent
8e2891d7
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
43 additions
and
30 deletions
+43
-30
asset.py
apps/assets/views/asset.py
+1
-0
forms.py
apps/common/forms.py
+2
-2
apps.py
apps/users/apps.py
+3
-0
signals.py
apps/users/signals.py
+2
-18
signals_handler.py
apps/users/signals_handler.py
+21
-0
user.py
apps/users/views/user.py
+14
-10
No files found.
apps/assets/views/asset.py
View file @
9292e485
...
@@ -248,6 +248,7 @@ class BulkImportAssetView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
...
@@ -248,6 +248,7 @@ class BulkImportAssetView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
f
=
form
.
cleaned_data
[
'file'
]
f
=
form
.
cleaned_data
[
'file'
]
det_result
=
chardet
.
detect
(
f
.
read
())
det_result
=
chardet
.
detect
(
f
.
read
())
f
.
seek
(
0
)
# reset file seek index
f
.
seek
(
0
)
# reset file seek index
file_data
=
f
.
read
()
.
decode
(
det_result
[
'encoding'
])
.
strip
(
codecs
.
BOM_UTF8
.
decode
())
file_data
=
f
.
read
()
.
decode
(
det_result
[
'encoding'
])
.
strip
(
codecs
.
BOM_UTF8
.
decode
())
csv_file
=
StringIO
(
file_data
)
csv_file
=
StringIO
(
file_data
)
reader
=
csv
.
reader
(
csv_file
)
reader
=
csv
.
reader
(
csv_file
)
...
...
apps/common/forms.py
View file @
9292e485
...
@@ -68,7 +68,7 @@ class BaseForm(forms.Form):
...
@@ -68,7 +68,7 @@ class BaseForm(forms.Form):
class
BasicSettingForm
(
BaseForm
):
class
BasicSettingForm
(
BaseForm
):
SITE_URL
=
forms
.
URLField
(
SITE_URL
=
forms
.
URLField
(
label
=
_
(
"Current SITE URL"
),
label
=
_
(
"Current SITE URL"
),
help_text
=
"http://jumpserver.abc.com:8080"
help_text
=
"
eg:
http://jumpserver.abc.com:8080"
)
)
USER_GUIDE_URL
=
forms
.
URLField
(
USER_GUIDE_URL
=
forms
.
URLField
(
label
=
_
(
"User Guide URL"
),
label
=
_
(
"User Guide URL"
),
...
@@ -135,7 +135,7 @@ class LDAPSettingForm(BaseForm):
...
@@ -135,7 +135,7 @@ class LDAPSettingForm(BaseForm):
AUTH_LDAP_START_TLS
=
forms
.
BooleanField
(
AUTH_LDAP_START_TLS
=
forms
.
BooleanField
(
label
=
_
(
"Use SSL"
),
initial
=
False
,
required
=
False
label
=
_
(
"Use SSL"
),
initial
=
False
,
required
=
False
)
)
AUTH_LDAP
=
forms
.
BooleanField
(
label
=
_
(
"Enable LDAP auth"
),
initial
=
False
)
AUTH_LDAP
=
forms
.
BooleanField
(
label
=
_
(
"Enable LDAP auth"
),
initial
=
False
,
required
=
False
)
class
TerminalSettingForm
(
BaseForm
):
class
TerminalSettingForm
(
BaseForm
):
...
...
apps/users/apps.py
View file @
9292e485
...
@@ -6,3 +6,6 @@ from django.apps import AppConfig
...
@@ -6,3 +6,6 @@ from django.apps import AppConfig
class
UsersConfig
(
AppConfig
):
class
UsersConfig
(
AppConfig
):
name
=
'users'
name
=
'users'
def
ready
(
self
):
from
.
import
signals_handler
super
()
.
ready
()
apps/users/signals.py
View file @
9292e485
# -*- coding: utf-8 -*-
from
django.dispatch
import
Signal
#
from
django.dispatch
import
Signal
,
receiver
from
django.db.models.signals
import
post_save
from
common.utils
import
get_logger
post_user_create
=
Signal
(
providing_args
=
(
'user'
,))
from
.models
import
User
logger
=
get_logger
(
__file__
)
@receiver
(
post_save
,
sender
=
User
)
def
on_user_created
(
sender
,
instance
=
None
,
created
=
False
,
**
kwargs
):
if
created
:
logger
.
debug
(
"Receive user `{}` create signal"
.
format
(
instance
.
name
))
from
.utils
import
send_user_created_mail
logger
.
info
(
" - Sending welcome mail ..."
.
format
(
instance
.
name
))
if
instance
.
email
:
send_user_created_mail
(
instance
)
apps/users/signals_handler.py
0 → 100644
View file @
9292e485
# -*- coding: utf-8 -*-
#
from
django.dispatch
import
receiver
from
django.db.models.signals
import
post_save
from
common.utils
import
get_logger
from
.models
import
User
logger
=
get_logger
(
__file__
)
@receiver
(
post_save
,
sender
=
User
)
def
on_user_created
(
sender
,
instance
=
None
,
created
=
False
,
**
kwargs
):
if
created
:
logger
.
debug
(
"Receive user `{}` create signal"
.
format
(
instance
.
name
))
from
.utils
import
send_user_created_mail
logger
.
info
(
" - Sending welcome mail ..."
.
format
(
instance
.
name
))
if
instance
.
email
:
send_user_created_mail
(
instance
)
\ No newline at end of file
apps/users/views/user.py
View file @
9292e485
...
@@ -6,6 +6,7 @@ import json
...
@@ -6,6 +6,7 @@ import json
import
uuid
import
uuid
import
csv
import
csv
import
codecs
import
codecs
import
chardet
from
io
import
StringIO
from
io
import
StringIO
from
django.contrib
import
messages
from
django.contrib
import
messages
...
@@ -20,6 +21,7 @@ from django.utils.translation import ugettext as _
...
@@ -20,6 +21,7 @@ from django.utils.translation import ugettext as _
from
django.utils.decorators
import
method_decorator
from
django.utils.decorators
import
method_decorator
from
django.views
import
View
from
django.views
import
View
from
django.views.generic.base
import
TemplateView
from
django.views.generic.base
import
TemplateView
from
django.db
import
transaction
from
django.views.generic.edit
import
(
from
django.views.generic.edit
import
(
CreateView
,
UpdateView
,
FormMixin
,
FormView
CreateView
,
UpdateView
,
FormMixin
,
FormView
)
)
...
@@ -33,7 +35,7 @@ from common.utils import get_logger, get_object_or_none, is_uuid
...
@@ -33,7 +35,7 @@ from common.utils import get_logger, get_object_or_none, is_uuid
from
..
import
forms
from
..
import
forms
from
..models
import
User
,
UserGroup
from
..models
import
User
,
UserGroup
from
..utils
import
AdminUserRequiredMixin
from
..utils
import
AdminUserRequiredMixin
from
..signals
import
on_user_created
from
..signals
import
post_user_create
__all__
=
[
__all__
=
[
...
@@ -212,8 +214,10 @@ class UserBulkImportView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
...
@@ -212,8 +214,10 @@ class UserBulkImportView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
# todo: need be patch, method to long
# todo: need be patch, method to long
def
form_valid
(
self
,
form
):
def
form_valid
(
self
,
form
):
file
=
form
.
cleaned_data
[
'file'
]
f
=
form
.
cleaned_data
[
'file'
]
data
=
file
.
read
()
.
decode
(
'utf-8'
)
.
strip
(
codecs
.
BOM_UTF8
.
decode
(
'utf-8'
))
det_result
=
chardet
.
detect
(
f
.
read
())
f
.
seek
(
0
)
# reset file seek index
data
=
f
.
read
()
.
decode
(
det_result
[
'encoding'
])
.
strip
(
codecs
.
BOM_UTF8
.
decode
())
csv_file
=
StringIO
(
data
)
csv_file
=
StringIO
(
data
)
reader
=
csv
.
reader
(
csv_file
)
reader
=
csv
.
reader
(
csv_file
)
csv_data
=
[
row
for
row
in
reader
]
csv_data
=
[
row
for
row
in
reader
]
...
@@ -252,15 +256,15 @@ class UserBulkImportView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
...
@@ -252,15 +256,15 @@ class UserBulkImportView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
else
:
else
:
continue
continue
user_dict
[
k
]
=
v
user_dict
[
k
]
=
v
user
=
get_object_or_none
(
User
,
id
=
id_
)
if
id_
and
is_uuid
(
id_
)
else
None
user
=
get_object_or_none
(
User
,
id
=
id_
)
if
is_uuid
(
id_
)
else
None
if
not
user
:
if
not
user
:
try
:
try
:
groups
=
user_dict
.
pop
(
'groups'
)
with
transaction
.
atomic
():
user
=
User
.
objects
.
create
(
**
user_dict
)
groups
=
user_dict
.
pop
(
'groups'
)
user
.
groups
.
set
(
groups
)
user
=
User
.
objects
.
create
(
**
user_dict
)
created
.
append
(
user_dict
[
'username'
])
user
.
groups
.
set
(
groups
)
on_user_created
.
send
(
self
.
__class__
,
user
=
user
)
created
.
append
(
user_dict
[
'username'
])
post_user_create
.
send
(
self
.
__class__
,
user
=
user
)
except
Exception
as
e
:
except
Exception
as
e
:
failed
.
append
(
'
%
s:
%
s'
%
(
user_dict
[
'username'
],
str
(
e
)))
failed
.
append
(
'
%
s:
%
s'
%
(
user_dict
[
'username'
],
str
(
e
)))
else
:
else
:
...
...
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