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):
f
=
form
.
cleaned_data
[
'file'
]
det_result
=
chardet
.
detect
(
f
.
read
())
f
.
seek
(
0
)
# reset file seek index
file_data
=
f
.
read
()
.
decode
(
det_result
[
'encoding'
])
.
strip
(
codecs
.
BOM_UTF8
.
decode
())
csv_file
=
StringIO
(
file_data
)
reader
=
csv
.
reader
(
csv_file
)
...
...
apps/common/forms.py
View file @
9292e485
...
...
@@ -68,7 +68,7 @@ class BaseForm(forms.Form):
class
BasicSettingForm
(
BaseForm
):
SITE_URL
=
forms
.
URLField
(
label
=
_
(
"Current SITE URL"
),
help_text
=
"http://jumpserver.abc.com:8080"
help_text
=
"
eg:
http://jumpserver.abc.com:8080"
)
USER_GUIDE_URL
=
forms
.
URLField
(
label
=
_
(
"User Guide URL"
),
...
...
@@ -135,7 +135,7 @@ class LDAPSettingForm(BaseForm):
AUTH_LDAP_START_TLS
=
forms
.
BooleanField
(
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
):
...
...
apps/users/apps.py
View file @
9292e485
...
...
@@ -6,3 +6,6 @@ from django.apps import AppConfig
class
UsersConfig
(
AppConfig
):
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
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
)
post_user_create
=
Signal
(
providing_args
=
(
'user'
,))
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
import
uuid
import
csv
import
codecs
import
chardet
from
io
import
StringIO
from
django.contrib
import
messages
...
...
@@ -20,6 +21,7 @@ from django.utils.translation import ugettext as _
from
django.utils.decorators
import
method_decorator
from
django.views
import
View
from
django.views.generic.base
import
TemplateView
from
django.db
import
transaction
from
django.views.generic.edit
import
(
CreateView
,
UpdateView
,
FormMixin
,
FormView
)
...
...
@@ -33,7 +35,7 @@ from common.utils import get_logger, get_object_or_none, is_uuid
from
..
import
forms
from
..models
import
User
,
UserGroup
from
..utils
import
AdminUserRequiredMixin
from
..signals
import
on_user_created
from
..signals
import
post_user_create
__all__
=
[
...
...
@@ -212,8 +214,10 @@ class UserBulkImportView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
# todo: need be patch, method to long
def
form_valid
(
self
,
form
):
file
=
form
.
cleaned_data
[
'file'
]
data
=
file
.
read
()
.
decode
(
'utf-8'
)
.
strip
(
codecs
.
BOM_UTF8
.
decode
(
'utf-8'
))
f
=
form
.
cleaned_data
[
'file'
]
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
)
reader
=
csv
.
reader
(
csv_file
)
csv_data
=
[
row
for
row
in
reader
]
...
...
@@ -252,15 +256,15 @@ class UserBulkImportView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
else
:
continue
user_dict
[
k
]
=
v
user
=
get_object_or_none
(
User
,
id
=
id_
)
if
is_uuid
(
id_
)
else
None
user
=
get_object_or_none
(
User
,
id
=
id_
)
if
id_
and
is_uuid
(
id_
)
else
None
if
not
user
:
try
:
groups
=
user_dict
.
pop
(
'groups'
)
user
=
User
.
objects
.
create
(
**
user_dict
)
user
.
groups
.
set
(
groups
)
created
.
append
(
user_dict
[
'username'
])
on_user_created
.
send
(
self
.
__class__
,
user
=
user
)
with
transaction
.
atomic
():
groups
=
user_dict
.
pop
(
'groups'
)
user
=
User
.
objects
.
create
(
**
user_dict
)
user
.
groups
.
set
(
groups
)
created
.
append
(
user_dict
[
'username'
])
post_user_create
.
send
(
self
.
__class__
,
user
=
user
)
except
Exception
as
e
:
failed
.
append
(
'
%
s:
%
s'
%
(
user_dict
[
'username'
],
str
(
e
)))
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