Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
94
Merge Requests
10
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
5fcbc996
authored
4 years ago
by
Máhonfai Bálint
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add group import view
parent
a6ace944
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
16 deletions
+76
-16
circle/dashboard/urls.py
+5
-3
circle/dashboard/views/group.py
+71
-13
No files found.
circle/dashboard/urls.py
View file @
5fcbc996
...
...
@@ -16,6 +16,7 @@
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from
__future__
import
absolute_import
from
django.conf.urls
import
url
from
vm.models
import
Instance
...
...
@@ -57,11 +58,10 @@ from .views import (
MessageList
,
MessageDetail
,
MessageCreate
,
MessageDelete
,
EnableTwoFactorView
,
DisableTwoFactorView
,
AclUserGroupAutocomplete
,
AclUserAutocomplete
,
RescheduleView
,
RescheduleView
,
GroupImportView
,
)
from
.views.vm
import
vm_ops
,
vm_mass_ops
from
.views.node
import
node_ops
from
.views.vm
import
vm_ops
,
vm_mass_ops
urlpatterns
=
[
url
(
r'^$'
,
IndexView
.
as_view
(),
name
=
"dashboard.index"
),
...
...
@@ -198,6 +198,8 @@ urlpatterns = [
name
=
"dashboard.views.remove-all-users"
),
url
(
r'^group/create/$'
,
GroupCreate
.
as_view
(),
name
=
'dashboard.views.group-create'
),
url
(
r'^group/import/$'
,
GroupImportView
.
as_view
(),
name
=
"dashboard.views.group-import"
),
url
(
r'^group/(?P<group_pk>\d+)/permissions/$'
,
GroupPermissionsView
.
as_view
(),
name
=
"dashboard.views.group-permissions"
),
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/views/group.py
View file @
5fcbc996
...
...
@@ -18,31 +18,32 @@ from __future__ import unicode_literals, absolute_import
import
json
import
logging
from
itertools
import
chain
import
requests
from
braces.views
import
SuperuserRequiredMixin
,
LoginRequiredMixin
from
django.conf
import
settings
from
django.contrib
import
messages
from
django.contrib.auth.models
import
User
,
Group
from
django.contrib.messages.views
import
SuccessMessageMixin
from
django.core.exceptions
import
PermissionDenied
from
django.core.exceptions
import
PermissionDenied
,
SuspiciousOperation
from
django.core.urlresolvers
import
reverse
,
reverse_lazy
from
django.http
import
HttpResponse
,
Http404
from
django.shortcuts
import
redirect
from
django.utils.translation
import
ugettext
as
_
from
django.views.generic
import
UpdateView
,
TemplateView
from
braces.views
import
SuperuserRequiredMixin
,
LoginRequiredMixin
from
django_tables2
import
SingleTableView
from
itertools
import
chain
from
vm.models
import
Instance
,
InstanceTemplate
from
.util
import
(
CheckedDetailView
,
AclUpdateView
,
search_user
,
saml_available
,
DeleteViewBase
)
from
..forms
import
(
AddGroupMemberForm
,
AclUserOrGroupAddForm
,
GroupPermissionForm
,
GroupCreateForm
,
GroupProfileUpdateForm
,
GroupCreateForm
,
Group
ImportForm
,
Group
ProfileUpdateForm
,
)
from
..models
import
FutureMember
,
GroupProfile
from
vm.models
import
Instance
,
InstanceTemplate
from
..store_api
import
Store
,
NoStoreException
from
..tables
import
GroupListTable
from
.util
import
(
CheckedDetailView
,
AclUpdateView
,
search_user
,
saml_available
,
DeleteViewBase
)
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -325,7 +326,6 @@ class GroupDelete(DeleteViewBase):
class
GroupCreate
(
GroupCodeMixin
,
LoginRequiredMixin
,
TemplateView
):
form_class
=
GroupCreateForm
def
get_template_names
(
self
):
...
...
@@ -361,16 +361,74 @@ class GroupCreate(GroupCodeMixin, LoginRequiredMixin, TemplateView):
savedform
.
profile
.
set_level
(
request
.
user
,
'owner'
)
messages
.
success
(
request
,
_
(
'Group successfully created.'
))
if
request
.
is_ajax
():
return
HttpResponse
(
json
.
dumps
({
'redirect'
:
savedform
.
profile
.
get_absolute_url
()}),
content_type
=
"application/json"
)
return
HttpResponse
(
json
.
dumps
(
{
'redirect'
:
savedform
.
profile
.
get_absolute_url
()}
),
content_type
=
"application/json"
)
else
:
return
redirect
(
savedform
.
profile
.
get_absolute_url
())
class
GroupImportView
(
LoginRequiredMixin
,
TemplateView
):
form_class
=
GroupImportForm
def
get_template_names
(
self
):
if
self
.
request
.
is_ajax
():
return
[
'dashboard/_modal.html'
]
else
:
return
[
'dashboard/nojs-wrapper.html'
]
def
get
(
self
,
request
,
form
=
None
,
*
args
,
**
kwargs
):
if
not
request
.
user
.
has_module_perms
(
'auth'
):
raise
PermissionDenied
()
try
:
Store
(
request
.
user
)
except
NoStoreException
:
raise
PermissionDenied
()
if
form
is
None
:
form
=
self
.
form_class
(
user
=
request
.
user
)
context
=
self
.
get_context_data
(
**
kwargs
)
context
.
update
({
'template'
:
'dashboard/group-import.html'
,
'box_title'
:
_
(
'Import a Group'
),
'form'
:
form
,
'ajax_title'
:
True
,
})
return
self
.
render_to_response
(
context
)
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
if
not
request
.
user
.
has_module_perms
(
'auth'
):
raise
PermissionDenied
()
try
:
Store
(
request
.
user
)
except
NoStoreException
:
raise
PermissionDenied
()
form
=
self
.
form_class
(
request
.
POST
,
user
=
request
.
user
)
if
form
.
is_valid
():
group_path
=
form
.
cleaned_data
[
"group_path"
]
url
=
Store
(
request
.
user
)
.
request_download
(
group_path
)
json_str
=
requests
.
get
(
url
)
.
content
profile
=
GroupProfile
.
create_from_json
(
request
.
user
,
json_str
)
if
profile
is
None
:
raise
SuspiciousOperation
()
if
request
.
is_ajax
():
return
HttpResponse
(
json
.
dumps
({
'redirect'
:
profile
.
get_absolute_url
()}),
content_type
=
"application/json"
)
else
:
return
redirect
(
profile
.
get_absolute_url
())
else
:
return
self
.
get
(
request
,
form
,
*
args
,
**
kwargs
)
class
GroupProfileUpdate
(
SuccessMessageMixin
,
GroupCodeMixin
,
LoginRequiredMixin
,
UpdateView
):
form_class
=
GroupProfileUpdateForm
model
=
Group
success_message
=
_
(
'Group is successfully updated.'
)
...
...
This diff is collapsed.
Click to expand it.
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