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
d8143a67
Commit
d8143a67
authored
Sep 29, 2016
by
xiaokong1937@gmail.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user-group-detail: user-adding frontend integration
parent
e7fddf80
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
84 additions
and
38 deletions
+84
-38
api.py
apps/users/api.py
+6
-4
user_group_detail.html
apps/users/templates/users/user_group_detail.html
+78
-34
No files found.
apps/users/api.py
View file @
d8143a67
...
@@ -93,14 +93,16 @@ class GroupEditApi(generics.RetrieveUpdateDestroyAPIView):
...
@@ -93,14 +93,16 @@ class GroupEditApi(generics.RetrieveUpdateDestroyAPIView):
serializer_class
=
GroupEditSerializer
serializer_class
=
GroupEditSerializer
def
perform_update
(
self
,
serializer
):
def
perform_update
(
self
,
serializer
):
partial
=
serializer
.
validated_data
.
get
(
'partial'
,
False
)
users
=
serializer
.
validated_data
.
get
(
'users'
)
users
=
serializer
.
validated_data
.
get
(
'users'
)
if
partial
and
users
:
if
users
:
group
=
self
.
get_object
()
group
=
self
.
get_object
()
group
.
users
.
add
(
users
)
# Note: use `list` method to force hitting the db.
group_users
=
list
(
group
.
users
.
all
())
serializer
.
save
()
group
.
users
.
set
(
users
+
group_users
)
group
.
save
()
group
.
save
()
return
return
return
super
(
GroupEditApi
,
self
)
.
perform_update
(
serializer
)
serializer
.
save
(
)
class
UserBulkUpdateApi
(
ListBulkCreateUpdateDestroyAPIView
):
class
UserBulkUpdateApi
(
ListBulkCreateUpdateDestroyAPIView
):
...
...
apps/users/templates/users/user_group_detail.html
View file @
d8143a67
...
@@ -11,15 +11,48 @@
...
@@ -11,15 +11,48 @@
<script
src=
"{% static "
js
/
plugins
/
sweetalert
/
sweetalert
.
min
.
js
"
%}"
></script>
<script
src=
"{% static "
js
/
plugins
/
sweetalert
/
sweetalert
.
min
.
js
"
%}"
></script>
<script
src=
"{% static "
js
/
plugins
/
dataTables
/
dataTables
.
min
.
js
"
%}"
></script>
<script
src=
"{% static "
js
/
plugins
/
dataTables
/
dataTables
.
min
.
js
"
%}"
></script>
<style>
<style>
.label
{
.user_div
{
font-size
:
14px
;
background-color
:
#d1dade
;
line-height
:
2.5
;
color
:
#5e5e5e
;
font-family
:
"Open Sans"
;
padding
:
3px
8px
;
text-shadow
:
none
;
}
}
.
label
.remove
{
.
user_div
.remove
{
color
:
#fff
;
color
:
#fff
;
}
}
.
label
span
{
.
user_div
span
{
color
:
#5e5e5e
;
color
:
#5e5e5e
;
}
dl
{
width
:
100%
;
overflow
:
hidden
;
padding
:
0
;
margin
:
10px
;
border-bottom
:
1px
solid
#e7eaec
;
}
dt
{
float
:
left
;
width
:
30%
;
padding
:
0
;
margin
:
0
}
dd
{
float
:
left
;
width
:
70%
;
padding
:
0
;
margin
:
0
}
#group_user_row
dt
{
border-bottom
:
1px
solid
#e7eaec
;
width
:
100%
;
margin-bottom
:
20px
;
}
#group_user_row
dd
{
width
:
100%
;
overflow
:
auto
;
}
}
</style>
</style>
{% endblock %}
{% endblock %}
...
@@ -50,29 +83,26 @@
...
@@ -50,29 +83,26 @@
</div>
</div>
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
>
<table
class=
"table"
>
<dl>
<tbody>
<dt
width=
"20%"
>
{% trans 'Name' %}:
</dt>
<tr>
<dd><b>
{{ object.name }}
</b></dd>
<td
width=
"20%"
>
{% trans 'Name' %}:
</td>
</dl>
<td><b>
{{ object.name }}
</b></td>
<dl>
</tr>
<dt>
{% trans 'Comment' %}:
</dt>
<tr>
<dd><b>
{{ object.comment }}
</b></dd>
<td>
{% trans 'Comment' %}:
</td>
</dl>
<td><b>
{{ object.comment }}
</b></td>
<dl>
</tr>
<dt>
{% trans 'Created at' %}:
</dt>
<tr>
<dd><b>
{{ object.date_created }}
</b></dd>
<td>
{% trans 'Created at' %}:
</td>
</dl>
<td><b>
{{ object.date_created }}
</b></td>
<dl
id=
"group_user_row"
>
</tr>
<dt>
{% trans 'Users' %}:
</dt>
<tr>
<dd
style=
"line-height: 2"
id=
"group_user_container"
>
<td>
{% trans 'Users' %}:
</td>
<td
style=
"line-height: 2"
>
{% for user in object.users.all %}
{% for user in object.users.all %}
<
span
class=
"label m-l-xs"
><a
href=
"{{ user.get_absolute_url }}"
><span>
{{ user.name }}
</span></a><a
data-uid=
"{{ user.id }}"
class=
"btn_remove"
><i
class=
"remove fa fa-times-circle"
></i></a></span
>
<
div
class=
"col-sm-4 user_div"
><div
class=
"col-xs-9"
><a
href=
"{{ user.get_absolute_url }}"
><span>
{{ user.name }}
</span></a></div><div
class=
"col-xs-3"
><a
data-uid=
"{{ user.id }}"
class=
"btn_remove m-l-5"
><i
class=
"remove fa fa-times-circle"
></i></a></div></div
>
{% endfor %}
{% endfor %}
</td>
</dd>
</tr>
</dl>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -119,7 +149,7 @@ $(document).on('click', '.btn_remove', function(){
...
@@ -119,7 +149,7 @@ $(document).on('click', '.btn_remove', function(){
var
uid
=
$this
.
data
(
'uid'
);
var
uid
=
$this
.
data
(
'uid'
);
var
the_url
=
'{% url "users:delete-user-from-group-api" pk=object.id uid=99991937 %}'
.
replace
(
'99991937'
,
uid
);
var
the_url
=
'{% url "users:delete-user-from-group-api" pk=object.id uid=99991937 %}'
.
replace
(
'99991937'
,
uid
);
var
success
=
function
(){
var
success
=
function
(){
$this
.
closest
(
'.
label
'
).
remove
();
$this
.
closest
(
'.
user_div
'
).
remove
();
};
};
var
error
=
function
(){};
var
error
=
function
(){};
APIUpdateAttr
({
url
:
the_url
,
body
:
"{}"
,
method
:
"DELETE"
,
success
:
success
,
error
:
error
});
APIUpdateAttr
({
url
:
the_url
,
body
:
"{}"
,
method
:
"DELETE"
,
success
:
success
,
error
:
error
});
...
@@ -167,25 +197,39 @@ $(document).on('click', '.btn_remove', function(){
...
@@ -167,25 +197,39 @@ $(document).on('click', '.btn_remove', function(){
jumpserver
.
initDataTable
(
options
);
jumpserver
.
initDataTable
(
options
);
}).
on
(
'click'
,
'#btn_select_user'
,
function
()
{
}).
on
(
'click'
,
'#btn_select_user'
,
function
()
{
var
$data_table
=
$
(
'#select_user_table'
).
DataTable
();
var
$data_table
=
$
(
'#select_user_table'
).
DataTable
();
var
id_list
=
[];
var
plain_id_list
=
[];
var
plain_id_list
=
[];
var
selected_users
=
[];
$data_table
.
rows
({
selected
:
true
}).
every
(
function
(){
$data_table
.
rows
({
selected
:
true
}).
every
(
function
(){
id_list
.
push
({
id
:
this
.
data
().
id
});
plain_id_list
.
push
(
this
.
data
().
id
);
plain_id_list
.
push
(
this
.
data
().
id
);
selected_users
.
push
({
id
:
this
.
data
().
id
,
name
:
this
.
data
().
name
});
});
});
if
(
id_list
===
[])
{
console
.
log
(
selected_users
)
if
(
plain_id_list
===
[])
{
return
false
;
return
false
;
};
};
console
.
log
(
id_list
);
console
.
log
(
plain_id_list
);
var
body
=
{
var
body
=
{
id
:
{{
object
.
id
}},
id
:
{{
object
.
id
}},
users
:
plain_id_list
.
map
(
Number
)
users
:
plain_id_list
.
map
(
Number
)
};
};
console
.
log
(
body
);
$
(
'#select_user_modal'
).
modal
(
'hide'
);
$
(
'#select_user_modal'
).
modal
(
'hide'
);
var
the_url
=
"{% url 'users:user-group-edit-api' pk=object.id %}"
;
var
the_url
=
"{% url 'users:user-group-edit-api' pk=object.id %}"
;
APIUpdateAttr
({
url
:
the_url
,
body
:
JSON
.
stringify
(
body
)});
var
success
=
function
()
{
toastr
.
success
(
'{% trans "The selected users has been added to current group." %}'
);
var
html
=
""
;
$
.
each
(
selected_users
,
function
(
index
,
user
)
{
html
+=
[
'<div class="col-sm-4 user_div"><div class="col-xs-9"><a href="'
,
'{% url "users:user-detail" pk=99991937 %}'
.
replace
(
99991937
,
user
.
id
),
'"><span>'
,
user
.
name
,
'</span></a></div><div class="col-xs-3"><a data-uid="'
,
user
.
id
,
'" class="btn_remove m-l-5"><i class="remove fa fa-times-circle"></i></a></div></div>
\
n'
,
].
join
(
""
);
});
$
(
html
).
appendTo
(
$
(
'#group_user_container'
));
}
APIUpdateAttr
({
url
:
the_url
,
body
:
JSON
.
stringify
(
body
),
success
:
success
});
})
})
</script>
</script>
{% endblock %}
{% endblock %}
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