Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Gelencsér Szabolcs
/
circlestack
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
47e837a2
authored
May 28, 2017
by
Czémán Arnold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add "copy to clipboard" for connection commands
parent
c177b3e8
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
20 additions
and
10 deletions
+20
-10
circle/bower.json
+2
-1
circle/circle/settings/base.py
+1
-0
circle/dashboard/models.py
+7
-4
circle/dashboard/static/dashboard/vm-details.js
+3
-0
circle/dashboard/templates/dashboard/vm-detail.html
+7
-5
No files found.
circle/bower.json
View file @
47e837a2
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
"intro.js"
:
"0.9.0"
,
"intro.js"
:
"0.9.0"
,
"favico.js"
:
"~0.3.5"
,
"favico.js"
:
"~0.3.5"
,
"datatables"
:
"~1.10.4"
,
"datatables"
:
"~1.10.4"
,
"chart.js"
:
"2.3.0"
"chart.js"
:
"2.3.0"
,
"clipboard"
:
"~1.6.1"
}
}
}
}
circle/circle/settings/base.py
View file @
47e837a2
...
@@ -227,6 +227,7 @@ PIPELINE_JS = {
...
@@ -227,6 +227,7 @@ PIPELINE_JS = {
"output_filename"
:
"all.js"
,
"output_filename"
:
"all.js"
,
},
},
"vm-detail"
:
{
"source_filenames"
:
(
"vm-detail"
:
{
"source_filenames"
:
(
"clipboard/dist/clipboard.min.js"
,
"dashboard/vm-details.js"
,
"dashboard/vm-details.js"
,
"no-vnc/include/util.js"
,
"no-vnc/include/util.js"
,
"no-vnc/include/webutil.js"
,
"no-vnc/include/webutil.js"
,
...
...
circle/dashboard/models.py
View file @
47e837a2
...
@@ -212,15 +212,16 @@ class Profile(Model):
...
@@ -212,15 +212,16 @@ class Profile(Model):
commands
=
self
.
user
.
command_set
.
filter
(
commands
=
self
.
user
.
command_set
.
filter
(
access_method
=
instance
.
access_method
)
access_method
=
instance
.
access_method
)
if
commands
.
count
()
<
1
:
if
commands
.
count
()
<
1
:
return
[
single_command
]
return
[
{
'id'
:
0
,
'cmd'
:
single_command
}
]
else
:
else
:
return
[
return
[{
command
.
template
%
{
'id'
:
command
.
id
,
'cmd'
:
command
.
template
%
{
'port'
:
instance
.
get_connect_port
(
use_ipv6
=
use_ipv6
),
'port'
:
instance
.
get_connect_port
(
use_ipv6
=
use_ipv6
),
'host'
:
instance
.
get_connect_host
(
use_ipv6
=
use_ipv6
),
'host'
:
instance
.
get_connect_host
(
use_ipv6
=
use_ipv6
),
'password'
:
instance
.
pw
,
'password'
:
instance
.
pw
,
'username'
:
'cloud'
,
'username'
:
'cloud'
,
}
for
command
in
commands
]
}
}
for
command
in
commands
]
else
:
else
:
return
[]
return
[]
...
@@ -320,6 +321,7 @@ def get_or_create_profile(self):
...
@@ -320,6 +321,7 @@ def get_or_create_profile(self):
obj
,
created
=
GroupProfile
.
objects
.
get_or_create
(
group_id
=
self
.
pk
)
obj
,
created
=
GroupProfile
.
objects
.
get_or_create
(
group_id
=
self
.
pk
)
return
obj
return
obj
Group
.
profile
=
property
(
get_or_create_profile
)
Group
.
profile
=
property
(
get_or_create_profile
)
...
@@ -338,6 +340,7 @@ def create_profile(user):
...
@@ -338,6 +340,7 @@ def create_profile(user):
def
create_profile_hook
(
sender
,
user
,
request
,
**
kwargs
):
def
create_profile_hook
(
sender
,
user
,
request
,
**
kwargs
):
return
create_profile
(
user
)
return
create_profile
(
user
)
user_logged_in
.
connect
(
create_profile_hook
)
user_logged_in
.
connect
(
create_profile_hook
)
if
hasattr
(
settings
,
'SAML_ORG_ID_ATTRIBUTE'
):
if
hasattr
(
settings
,
'SAML_ORG_ID_ATTRIBUTE'
):
...
...
circle/dashboard/static/dashboard/vm-details.js
View file @
47e837a2
...
@@ -252,4 +252,7 @@ $(function() {
...
@@ -252,4 +252,7 @@ $(function() {
return
e
.
preventDefault
();
return
e
.
preventDefault
();
});
});
// Clipboard for connection strings
if
(
Clipboard
.
isSupported
())
new
Clipboard
(
".vm-details-connection-string-copy"
);
});
});
circle/dashboard/templates/dashboard/vm-detail.html
View file @
47e837a2
...
@@ -133,7 +133,7 @@
...
@@ -133,7 +133,7 @@
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<input
type=
"text"
id=
"vm-details-pw-input"
class=
"form-control input-sm input-tags"
<input
type=
"text"
id=
"vm-details-pw-input"
class=
"form-control input-sm input-tags"
value=
"{{ instance.pw }}"
spellcheck=
"false"
autocomplete=
"new-password"
/>
value=
"{{ instance.pw }}"
spellcheck=
"false"
autocomplete=
"new-password"
/>
<span
class=
"input-group-addon input-tags"
id=
"vm-details-pw-show"
<span
class=
"input-group-addon
btn btn-default
input-tags"
id=
"vm-details-pw-show"
title=
"{% trans "
Show
password
"
%}"
data-container=
"body"
>
title=
"{% trans "
Show
password
"
%}"
data-container=
"body"
>
<i
class=
"fa fa-eye"
id=
"vm-details-pw-eye"
></i>
<i
class=
"fa fa-eye"
id=
"vm-details-pw-eye"
></i>
</span>
</span>
...
@@ -158,10 +158,12 @@
...
@@ -158,10 +158,12 @@
<div
class=
"input-group dashboard-vm-details-connect-command"
>
<div
class=
"input-group dashboard-vm-details-connect-command"
>
<span
class=
"input-group-addon input-tags"
>
{% trans "Command" %}
</span>
<span
class=
"input-group-addon input-tags"
>
{% trans "Command" %}
</span>
<input
type=
"text"
spellcheck=
"false"
<input
type=
"text"
spellcheck=
"false"
value=
"{{ c }}"
value=
"{{ c.cmd }}"
id=
"vm-details-connection-string"
class=
"form-control input-tags"
/>
id=
"vm-details-connection-string-{{ c.id }}"
class=
"form-control input-tags"
/>
<span
class=
"input-group-addon input-tags vm-details-connection-string-copy"
<span
class=
"input-group-addon input-tags btn btn-default vm-details-connection-string-copy"
title=
"{% trans "
Select
all
"
%}"
data-container=
"body"
>
title=
"{% trans "
Copy
to
clipboard
"
%}"
data-container=
"body"
data-clipboard-target=
"#vm-details-connection-string-{{ c.id }}"
>
<i
class=
"fa fa-copy"
></i>
<i
class=
"fa fa-copy"
></i>
</span>
</span>
</div>
</div>
...
...
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