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
10eb1392
Commit
10eb1392
authored
Mar 24, 2017
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Delete] 删除资产tag
parent
a57dac07
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
18 additions
and
359 deletions
+18
-359
api.py
apps/assets/api.py
+1
-17
forms.py
apps/assets/forms.py
+10
-65
asset.py
apps/assets/models/asset.py
+1
-15
serializers.py
apps/assets/serializers.py
+1
-23
_asset_bulk_update_modal.html
apps/assets/templates/assets/_asset_bulk_update_modal.html
+0
-17
asset_create.html
apps/assets/templates/assets/asset_create.html
+0
-1
api_urls.py
apps/assets/urls/api_urls.py
+0
-3
views_urls.py
apps/assets/urls/views_urls.py
+0
-7
utils.py
apps/assets/utils.py
+0
-38
views.py
apps/assets/views.py
+5
-172
_nav.html
apps/templates/_nav.html
+0
-1
No files found.
apps/assets/api.py
View file @
10eb1392
...
@@ -12,7 +12,7 @@ from django.shortcuts import get_object_or_404
...
@@ -12,7 +12,7 @@ from django.shortcuts import get_object_or_404
from
common.mixins
import
IDInFilterMixin
from
common.mixins
import
IDInFilterMixin
from
common.utils
import
get_object_or_none
,
signer
from
common.utils
import
get_object_or_none
,
signer
from
.hands
import
IsSuperUser
,
IsAppUser
from
.hands
import
IsSuperUser
,
IsAppUser
from
.models
import
AssetGroup
,
Asset
,
IDC
,
SystemUser
,
AdminUser
,
Tag
from
.models
import
AssetGroup
,
Asset
,
IDC
,
SystemUser
,
AdminUser
from
.
import
serializers
from
.
import
serializers
...
@@ -25,14 +25,11 @@ class AssetViewSet(IDInFilterMixin, BulkModelViewSet):
...
@@ -25,14 +25,11 @@ class AssetViewSet(IDInFilterMixin, BulkModelViewSet):
def
get_queryset
(
self
):
def
get_queryset
(
self
):
queryset
=
super
(
AssetViewSet
,
self
)
.
get_queryset
()
queryset
=
super
(
AssetViewSet
,
self
)
.
get_queryset
()
idc_id
=
self
.
request
.
query_params
.
get
(
'idc_id'
,
''
)
idc_id
=
self
.
request
.
query_params
.
get
(
'idc_id'
,
''
)
tags_id
=
self
.
request
.
query_params
.
get
(
'tag_id'
,
''
)
system_users_id
=
self
.
request
.
query_params
.
get
(
'system_user_id'
,
''
)
system_users_id
=
self
.
request
.
query_params
.
get
(
'system_user_id'
,
''
)
asset_group_id
=
self
.
request
.
query_params
.
get
(
'asset_group_id'
,
''
)
asset_group_id
=
self
.
request
.
query_params
.
get
(
'asset_group_id'
,
''
)
admin_user_id
=
self
.
request
.
query_params
.
get
(
'admin_user_id'
,
''
)
admin_user_id
=
self
.
request
.
query_params
.
get
(
'admin_user_id'
,
''
)
if
idc_id
:
if
idc_id
:
queryset
=
queryset
.
filter
(
idc__id
=
idc_id
)
queryset
=
queryset
.
filter
(
idc__id
=
idc_id
)
if
tags_id
:
queryset
=
queryset
.
filter
(
tags__id
=
tags_id
)
if
system_users_id
:
if
system_users_id
:
queryset
=
queryset
.
filter
(
system_users__id
=
system_users_id
)
queryset
=
queryset
.
filter
(
system_users__id
=
system_users_id
)
if
admin_user_id
:
if
admin_user_id
:
...
@@ -147,16 +144,3 @@ class SystemUserAuthInfoApi(generics.RetrieveAPIView):
...
@@ -147,16 +144,3 @@ class SystemUserAuthInfoApi(generics.RetrieveAPIView):
}
}
return
Response
(
data
)
return
Response
(
data
)
class
TagViewSet
(
IDInFilterMixin
,
BulkModelViewSet
):
queryset
=
Tag
.
objects
.
all
()
serializer_class
=
serializers
.
TagSerializer
permission_classes
=
(
IsSuperUser
,)
## update the IDC, and add or delete the assets to the IDC
class
TagUpdateAssetsApi
(
generics
.
RetrieveUpdateAPIView
):
queryset
=
Tag
.
objects
.
all
()
serializer_class
=
serializers
.
TagUpdateAssetsSerializer
permission_classes
=
(
IsSuperUser
,)
apps/assets/forms.py
View file @
10eb1392
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
from
django
import
forms
from
django
import
forms
from
django.utils.translation
import
gettext_lazy
as
_
from
django.utils.translation
import
gettext_lazy
as
_
from
.models
import
IDC
,
Asset
,
AssetGroup
,
AdminUser
,
SystemUser
,
Tag
from
.models
import
IDC
,
Asset
,
AssetGroup
,
AdminUser
,
SystemUser
from
common.utils
import
validate_ssh_private_key
,
ssh_pubkey_gen
,
ssh_key_gen
,
get_logger
from
common.utils
import
validate_ssh_private_key
,
ssh_pubkey_gen
,
ssh_key_gen
,
get_logger
...
@@ -10,20 +10,6 @@ logger = get_logger(__file__)
...
@@ -10,20 +10,6 @@ logger = get_logger(__file__)
class
AssetCreateForm
(
forms
.
ModelForm
):
class
AssetCreateForm
(
forms
.
ModelForm
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
instance
=
kwargs
.
get
(
'instance'
,
None
)
if
instance
:
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'tags'
]
=
[
t
.
pk
for
t
in
kwargs
[
'instance'
]
.
tags
.
all
()]
super
(
AssetCreateForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
super
(
AssetCreateForm
,
self
)
.
_save_m2m
()
tags
=
self
.
cleaned_data
[
'tags'
]
self
.
instance
.
tags
.
clear
()
self
.
instance
.
tags
.
add
(
*
tuple
(
tags
))
def
clean_admin_user
(
self
):
def
clean_admin_user
(
self
):
if
not
self
.
cleaned_data
[
'admin_user'
]:
if
not
self
.
cleaned_data
[
'admin_user'
]:
raise
forms
.
ValidationError
(
_
(
'Select admin user'
))
raise
forms
.
ValidationError
(
_
(
'Select admin user'
))
...
@@ -31,16 +17,13 @@ class AssetCreateForm(forms.ModelForm):
...
@@ -31,16 +17,13 @@ class AssetCreateForm(forms.ModelForm):
class
Meta
:
class
Meta
:
model
=
Asset
model
=
Asset
tags
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Tag
.
objects
.
all
())
fields
=
[
fields
=
[
'hostname'
,
'ip'
,
'public_ip'
,
'port'
,
'type'
,
'comment'
,
'admin_user'
,
'hostname'
,
'ip'
,
'public_ip'
,
'port'
,
'type'
,
'comment'
,
'admin_user'
,
'idc'
,
'groups'
,
'status'
,
'env'
,
'
tags'
,
'
is_active'
'idc'
,
'groups'
,
'status'
,
'env'
,
'is_active'
]
]
widgets
=
{
widgets
=
{
'groups'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'groups'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset groups'
)}),
'data-placeholder'
:
_
(
'Select asset groups'
)}),
'tags'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset tags'
)}),
'admin_user'
:
forms
.
Select
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset admin user'
)}),
'admin_user'
:
forms
.
Select
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset admin user'
)}),
}
}
help_texts
=
{
help_texts
=
{
...
@@ -48,24 +31,20 @@ class AssetCreateForm(forms.ModelForm):
...
@@ -48,24 +31,20 @@ class AssetCreateForm(forms.ModelForm):
'ip'
:
'* required'
,
'ip'
:
'* required'
,
'system_users'
:
_
(
'System user will be granted for user to login assets (using ansible create automatic)'
),
'system_users'
:
_
(
'System user will be granted for user to login assets (using ansible create automatic)'
),
'admin_user'
:
_
(
'Admin user should be exist on asset already, And have sudo ALL permission'
),
'admin_user'
:
_
(
'Admin user should be exist on asset already, And have sudo ALL permission'
),
'tags'
:
'最多5个标签,单个标签最长8个汉字,按回车确认'
}
}
class
AssetUpdateForm
(
AssetCreateForm
):
class
AssetUpdateForm
(
AssetCreateForm
):
class
Meta
:
class
Meta
:
model
=
Asset
model
=
Asset
tags
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Tag
.
objects
.
all
())
fields
=
[
fields
=
[
'hostname'
,
'ip'
,
'port'
,
'groups'
,
'admin_user'
,
'idc'
,
'is_active'
,
'hostname'
,
'ip'
,
'port'
,
'groups'
,
'admin_user'
,
'idc'
,
'is_active'
,
'type'
,
'env'
,
'status'
,
'public_ip'
,
'remote_card_ip'
,
'cabinet_no'
,
'type'
,
'env'
,
'status'
,
'public_ip'
,
'remote_card_ip'
,
'cabinet_no'
,
'cabinet_pos'
,
'number'
,
'comment'
,
'tags'
'cabinet_pos'
,
'number'
,
'comment'
]
]
widgets
=
{
widgets
=
{
'groups'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'groups'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset groups'
)}),
'data-placeholder'
:
_
(
'Select asset groups'
)}),
'tags'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset tags'
)}),
'admin_user'
:
forms
.
Select
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset admin user'
)}),
'admin_user'
:
forms
.
Select
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset admin user'
)}),
}
}
help_texts
=
{
help_texts
=
{
...
@@ -73,18 +52,18 @@ class AssetUpdateForm(AssetCreateForm):
...
@@ -73,18 +52,18 @@ class AssetUpdateForm(AssetCreateForm):
'ip'
:
'* required'
,
'ip'
:
'* required'
,
'system_users'
:
_
(
'System user will be granted for user to login assets (using ansible create automatic)'
),
'system_users'
:
_
(
'System user will be granted for user to login assets (using ansible create automatic)'
),
'admin_user'
:
_
(
'Admin user should be exist on asset already, And have sudo ALL permission'
),
'admin_user'
:
_
(
'Admin user should be exist on asset already, And have sudo ALL permission'
),
'tags'
:
'最多5个标签,单个标签最长8个汉字,按回车确认'
}
}
class
AssetGroupForm
(
forms
.
ModelForm
):
class
AssetGroupForm
(
forms
.
ModelForm
):
# See AdminUserForm comment same it
# See AdminUserForm comment same it
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
assets
=
forms
.
ModelMultipleChoiceField
(
label
=
_
(
'Asset'
),
queryset
=
Asset
.
objects
.
all
(),
required
=
False
,
label
=
_
(
'Asset'
),
widget
=
forms
.
SelectMultiple
(
required
=
False
,
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select assets'
)})
widget
=
forms
.
SelectMultiple
(
)
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select assets'
)})
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
if
kwargs
.
get
(
'instance'
,
None
):
if
kwargs
.
get
(
'instance'
,
None
):
...
@@ -297,39 +276,5 @@ class SystemUserForm(forms.ModelForm):
...
@@ -297,39 +276,5 @@ class SystemUserForm(forms.ModelForm):
}
}
class
AssetTagForm
(
forms
.
ModelForm
):
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
label
=
_
(
'Asset'
),
required
=
False
,
widget
=
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select assets'
)})
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
if
kwargs
.
get
(
'instance'
,
None
):
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
asset_set
.
all
()
super
(
AssetTagForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
assets
=
self
.
cleaned_data
[
'assets'
]
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
super
(
AssetTagForm
,
self
)
.
_save_m2m
()
class
Meta
:
model
=
Tag
fields
=
[
"name"
,
]
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{}),
}
help_texts
=
{
'name'
:
'* required'
,
}
class
FileForm
(
forms
.
Form
):
class
FileForm
(
forms
.
Form
):
file
=
forms
.
FileField
()
file
=
forms
.
FileField
()
apps/assets/models/asset.py
View file @
10eb1392
...
@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
...
@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
from
.
import
IDC
,
AssetGroup
,
AdminUser
,
SystemUser
from
.
import
IDC
,
AssetGroup
,
AdminUser
,
SystemUser
__all__
=
[
'Asset'
,
'Tag'
]
__all__
=
[
'Asset'
]
logger
=
logging
.
getLogger
(
__name__
)
logger
=
logging
.
getLogger
(
__name__
)
...
@@ -83,7 +83,6 @@ class Asset(models.Model):
...
@@ -83,7 +83,6 @@ class Asset(models.Model):
created_by
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
created_by
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Date added'
))
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Date added'
))
comment
=
models
.
TextField
(
max_length
=
128
,
default
=
''
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
comment
=
models
.
TextField
(
max_length
=
128
,
default
=
''
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
tags
=
models
.
ManyToManyField
(
'Tag'
,
related_name
=
'assets'
,
blank
=
True
,
verbose_name
=
_
(
'Tags'
))
def
__unicode__
(
self
):
def
__unicode__
(
self
):
return
'
%
s <
%
s:
%
s>'
%
(
self
.
hostname
,
self
.
ip
,
self
.
port
)
return
'
%
s <
%
s:
%
s>'
%
(
self
.
hostname
,
self
.
ip
,
self
.
port
)
...
@@ -146,16 +145,3 @@ class Asset(models.Model):
...
@@ -146,16 +145,3 @@ class Asset(models.Model):
print
(
'Error continue'
)
print
(
'Error continue'
)
continue
continue
class
Tag
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
64
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
created_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
_
(
'Create time'
))
created_by
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
def
__unicode__
(
self
):
return
self
.
name
__str__
=
__unicode__
class
Meta
:
db_table
=
'tag'
apps/assets/serializers.py
View file @
10eb1392
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
from
rest_framework
import
viewsets
,
serializers
,
generics
from
rest_framework
import
viewsets
,
serializers
,
generics
from
.models
import
AssetGroup
,
Asset
,
IDC
,
AdminUser
,
SystemUser
,
Tag
from
.models
import
AssetGroup
,
Asset
,
IDC
,
AdminUser
,
SystemUser
from
common.mixins
import
IDInFilterMixin
from
common.mixins
import
IDInFilterMixin
from
rest_framework_bulk
import
BulkListSerializer
,
BulkSerializerMixin
from
rest_framework_bulk
import
BulkListSerializer
,
BulkSerializerMixin
...
@@ -61,20 +61,6 @@ class IDCUpdateAssetsSerializer(serializers.ModelSerializer):
...
@@ -61,20 +61,6 @@ class IDCUpdateAssetsSerializer(serializers.ModelSerializer):
fields
=
[
'id'
,
'assets'
]
fields
=
[
'id'
,
'assets'
]
class
TagSerializer
(
BulkSerializerMixin
,
serializers
.
ModelSerializer
):
assets_amount
=
serializers
.
SerializerMethodField
()
assets
=
serializers
.
PrimaryKeyRelatedField
(
many
=
True
,
queryset
=
Asset
.
objects
.
all
())
class
Meta
:
model
=
Tag
list_serializer_class
=
BulkListSerializer
fields
=
'__all__'
@staticmethod
def
get_assets_amount
(
obj
):
return
obj
.
assets
.
count
()
class
AdminUserSerializer
(
serializers
.
ModelSerializer
):
class
AdminUserSerializer
(
serializers
.
ModelSerializer
):
assets
=
serializers
.
PrimaryKeyRelatedField
(
many
=
True
,
queryset
=
Asset
.
objects
.
all
())
assets
=
serializers
.
PrimaryKeyRelatedField
(
many
=
True
,
queryset
=
Asset
.
objects
.
all
())
...
@@ -189,10 +175,3 @@ class IDCSerializer(BulkSerializerMixin, serializers.ModelSerializer):
...
@@ -189,10 +175,3 @@ class IDCSerializer(BulkSerializerMixin, serializers.ModelSerializer):
fields
.
append
(
'assets_amount'
)
fields
.
append
(
'assets_amount'
)
return
fields
return
fields
class
TagUpdateAssetsSerializer
(
serializers
.
ModelSerializer
):
assets
=
serializers
.
PrimaryKeyRelatedField
(
many
=
True
,
queryset
=
Asset
.
objects
.
all
())
class
Meta
:
model
=
Tag
fields
=
[
'id'
,
'assets'
]
\ No newline at end of file
apps/assets/templates/assets/_asset_bulk_update_modal.html
View file @
10eb1392
...
@@ -61,22 +61,6 @@
...
@@ -61,22 +61,6 @@
</div>
</div>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"control-label col-sm-2 col-lg-2 "
for=
"id_tags"
>
标签集合
</label>
<div
class=
" col-sm-9 col-lg-9 "
>
<select
multiple=
"multiple"
class=
"select2 form-control"
data-placeholder=
"Select asset tags"
id=
"tags"
name=
"tags"
>
{% for tag in tags %}
<option
value=
"{{ tag.id }}"
>
{{ tag.name }}
</option>
{% endfor %}
</select>
<p
class=
"help-block"
>
最多5个标签,单个标签最长8个汉字,按回车确认
</p>
</div>
</div>
</form>
</form>
{% endblock %}
{% endblock %}
{% block modal_confirm_id %}btn_asset_bulk_update{% endblock %}
{% block modal_confirm_id %}btn_asset_bulk_update{% endblock %}
\ No newline at end of file
apps/assets/templates/assets/asset_create.html
View file @
10eb1392
...
@@ -29,7 +29,6 @@
...
@@ -29,7 +29,6 @@
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<h3>
{% trans 'Other' %}
</h3>
<h3>
{% trans 'Other' %}
</h3>
{{ form.tags|bootstrap_horizontal }}
{{ form.comment|bootstrap_horizontal }}
{{ form.comment|bootstrap_horizontal }}
{{ form.is_active|bootstrap_horizontal }}
{{ form.is_active|bootstrap_horizontal }}
...
...
apps/assets/urls/api_urls.py
View file @
10eb1392
...
@@ -13,7 +13,6 @@ router.register(r'v1/assets', api.AssetViewSet, 'asset')
...
@@ -13,7 +13,6 @@ router.register(r'v1/assets', api.AssetViewSet, 'asset')
router
.
register
(
r'v1/idc'
,
api
.
IDCViewSet
,
'idc'
)
router
.
register
(
r'v1/idc'
,
api
.
IDCViewSet
,
'idc'
)
router
.
register
(
r'v1/admin-user'
,
api
.
AdminUserViewSet
,
'admin-user'
)
router
.
register
(
r'v1/admin-user'
,
api
.
AdminUserViewSet
,
'admin-user'
)
router
.
register
(
r'v1/system-user'
,
api
.
SystemUserViewSet
,
'system-user'
)
router
.
register
(
r'v1/system-user'
,
api
.
SystemUserViewSet
,
'system-user'
)
router
.
register
(
r'v1/tags'
,
api
.
TagViewSet
,
'asset-tag'
)
urlpatterns
=
[
urlpatterns
=
[
url
(
r'^v1/assets_bulk/$'
,
api
.
AssetListUpdateApi
.
as_view
(),
name
=
'asset-bulk-update'
),
url
(
r'^v1/assets_bulk/$'
,
api
.
AssetListUpdateApi
.
as_view
(),
name
=
'asset-bulk-update'
),
...
@@ -45,8 +44,6 @@ urlpatterns = [
...
@@ -45,8 +44,6 @@ urlpatterns = [
url
(
r'^v1/idc/(?P<pk>\d+)/assets/$'
,
url
(
r'^v1/idc/(?P<pk>\d+)/assets/$'
,
api
.
IDCupdateAssetsApi
.
as_view
(),
name
=
'idc-update-assets'
),
api
.
IDCupdateAssetsApi
.
as_view
(),
name
=
'idc-update-assets'
),
url
(
r'v1/tag/(?P<pk>\d+)/assets/$'
,
api
.
TagUpdateAssetsApi
.
as_view
(),
name
=
'tag-update-assets'
),
]
]
urlpatterns
+=
router
.
urls
urlpatterns
+=
router
.
urls
...
...
apps/assets/urls/views_urls.py
View file @
10eb1392
...
@@ -24,13 +24,6 @@ urlpatterns = [
...
@@ -24,13 +24,6 @@ urlpatterns = [
url
(
r'^asset-group/(?P<pk>[0-9]+)/update/$'
,
views
.
AssetGroupUpdateView
.
as_view
(),
name
=
'asset-group-update'
),
url
(
r'^asset-group/(?P<pk>[0-9]+)/update/$'
,
views
.
AssetGroupUpdateView
.
as_view
(),
name
=
'asset-group-update'
),
url
(
r'^asset-group/(?P<pk>[0-9]+)/delete/$'
,
views
.
AssetGroupDeleteView
.
as_view
(),
name
=
'asset-group-delete'
),
url
(
r'^asset-group/(?P<pk>[0-9]+)/delete/$'
,
views
.
AssetGroupDeleteView
.
as_view
(),
name
=
'asset-group-delete'
),
url
(
r'^tags/$'
,
views
.
TagsListView
.
as_view
(),
name
=
'asset-tag-list'
),
url
(
r'^asset-by-tag/(?P<tag_id>[0-9]+)/$'
,
views
.
TagView
.
as_view
(),
name
=
'asset-tags'
),
url
(
r'^tags/create/$'
,
views
.
AssetTagCreateView
.
as_view
(),
name
=
'asset-tag-create'
),
url
(
r'^asset-tag/(?P<pk>[0-9]+)/$'
,
views
.
AssetTagDetailView
.
as_view
(),
name
=
'asset-tag-detail'
),
url
(
r'^asset-tag/(?P<pk>[0-9]+)/update/$'
,
views
.
AssetTagUpdateView
.
as_view
(),
name
=
'asset-tag-update'
),
url
(
r'^asset-tag/(?P<pk>[0-9]+)/delete/$'
,
views
.
AssetTagDeleteView
.
as_view
(),
name
=
'asset-tag-delete'
),
# Resource idc url
# Resource idc url
url
(
r'^idc/$'
,
views
.
IDCListView
.
as_view
(),
name
=
'idc-list'
),
url
(
r'^idc/$'
,
views
.
IDCListView
.
as_view
(),
name
=
'idc-list'
),
url
(
r'^idc/create/$'
,
views
.
IDCCreateView
.
as_view
(),
name
=
'idc-create'
),
url
(
r'^idc/create/$'
,
views
.
IDCCreateView
.
as_view
(),
name
=
'idc-create'
),
...
...
apps/assets/utils.py
View file @
10eb1392
# ~*~ coding: utf-8 ~*~
# ~*~ coding: utf-8 ~*~
#
#
from
rest_framework
import
serializers
from
models
import
Tag
from
django.views.generic.edit
import
CreateView
class
CreateAssetTagsMiXin
(
CreateView
):
def
get_form_kwargs
(
self
):
tags_list
=
self
.
request
.
POST
.
getlist
(
'tags'
)
kwargs
=
{
'initial'
:
self
.
get_initial
(),
'prefix'
:
self
.
get_prefix
(),
}
if
self
.
request
.
method
in
(
'POST'
,
'PUT'
):
post_data
=
self
.
request
.
POST
.
copy
()
if
post_data
.
has_key
(
'tags'
):
post_data
.
pop
(
'tags'
)
for
t
in
tags_list
:
try
:
oTag
=
Tag
.
objects
.
get
(
pk
=
int
(
t
))
except
(
Tag
.
DoesNotExist
,
UnicodeEncodeError
):
oTag
=
Tag
(
name
=
t
,
created_by
=
self
.
request
.
user
.
username
or
'Admin'
)
oTag
.
save
()
post_data
.
update
({
'tags'
:
oTag
.
pk
})
else
:
post_data
.
update
({
'tags'
:
int
(
t
)})
kwargs
.
update
({
'data'
:
post_data
,
'files'
:
self
.
request
.
FILES
,
})
return
kwargs
class
UpdateAssetTagsMiXin
(
CreateAssetTagsMiXin
):
def
get_form_kwargs
(
self
):
kwargs
=
super
(
UpdateAssetTagsMiXin
,
self
)
.
get_form_kwargs
()
if
hasattr
(
self
,
'object'
):
kwargs
.
update
({
'instance'
:
self
.
object
})
return
kwargs
\ No newline at end of file
apps/assets/views.py
View file @
10eb1392
...
@@ -25,9 +25,8 @@ from django.utils import timezone
...
@@ -25,9 +25,8 @@ from django.utils import timezone
from
common.mixins
import
JSONResponseMixin
from
common.mixins
import
JSONResponseMixin
from
common.utils
import
get_object_or_none
from
common.utils
import
get_object_or_none
from
.utils
import
CreateAssetTagsMiXin
,
UpdateAssetTagsMiXin
from
.
import
forms
from
.
import
forms
from
.models
import
Asset
,
AssetGroup
,
AdminUser
,
IDC
,
SystemUser
,
Tag
from
.models
import
Asset
,
AssetGroup
,
AdminUser
,
IDC
,
SystemUser
from
.hands
import
AdminUserRequiredMixin
from
.hands
import
AdminUserRequiredMixin
...
@@ -40,16 +39,13 @@ class AssetListView(AdminUserRequiredMixin, TemplateView):
...
@@ -40,16 +39,13 @@ class AssetListView(AdminUserRequiredMixin, TemplateView):
'action'
:
'asset list'
,
'action'
:
'asset list'
,
'groups'
:
AssetGroup
.
objects
.
all
(),
'groups'
:
AssetGroup
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'tag_list'
:
[(
i
.
id
,
i
.
name
,
i
.
assets
.
all
()
.
count
())
for
i
in
Tag
.
objects
.
all
()
.
order_by
(
'name'
)],
'tags'
:
Tag
.
objects
.
all
()
.
order_by
(
'name'
)
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
(
AssetListView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
(
AssetListView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetCreateView
(
AdminUserRequiredMixin
,
Create
AssetTagsMiXin
,
Create
View
):
class
AssetCreateView
(
AdminUserRequiredMixin
,
CreateView
):
model
=
Asset
model
=
Asset
tag_type
=
'asset'
form_class
=
forms
.
AssetCreateForm
form_class
=
forms
.
AssetCreateForm
template_name
=
'assets/asset_create.html'
template_name
=
'assets/asset_create.html'
success_url
=
reverse_lazy
(
'assets:asset-list'
)
success_url
=
reverse_lazy
(
'assets:asset-list'
)
...
@@ -69,7 +65,7 @@ class AssetCreateView(AdminUserRequiredMixin, CreateAssetTagsMiXin, CreateView):
...
@@ -69,7 +65,7 @@ class AssetCreateView(AdminUserRequiredMixin, CreateAssetTagsMiXin, CreateView):
return
super
(
AssetCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
(
AssetCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetModalCreateView
(
AdminUserRequiredMixin
,
CreateAssetTagsMiXin
,
ListView
):
class
AssetModalCreateView
(
AdminUserRequiredMixin
,
ListView
):
model
=
Asset
model
=
Asset
form_class
=
forms
.
AssetCreateForm
form_class
=
forms
.
AssetCreateForm
template_name
=
'assets/asset_modal_update.html'
template_name
=
'assets/asset_modal_update.html'
...
@@ -97,31 +93,11 @@ class AssetModalCreateView(AdminUserRequiredMixin, CreateAssetTagsMiXin, ListVie
...
@@ -97,31 +93,11 @@ class AssetModalCreateView(AdminUserRequiredMixin, CreateAssetTagsMiXin, ListVie
return
super
(
AssetModalCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
(
AssetModalCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetUpdateView
(
AdminUserRequiredMixin
,
Update
AssetTagsMiXin
,
Update
View
):
class
AssetUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
model
=
Asset
model
=
Asset
form_class
=
forms
.
AssetUpdateForm
form_class
=
forms
.
AssetUpdateForm
template_name
=
'assets/asset_update.html'
template_name
=
'assets/asset_update.html'
success_url
=
reverse_lazy
(
'assets:asset-list'
)
success_url
=
reverse_lazy
(
'assets:asset-list'
)
# new_form = ''
# assets_ids = ''
# def post(self, request, *args, **kwargs):
# default_keys = [
# 'csrfmiddlewaretoken',
# 'assets_ids',
# 'ip',
# 'number',
# 'hostname',
# 'system_users',
# 'admin_user',
# ]
# self.assets_ids = self.request.POST.getlist('assets_ids')
# self.new_form = self.request.POST.copy()
# for i in default_keys:
# if self.new_form.has_key(i):
# self.new_form.pop(i)
# return super(AssetUpdateView, self).post(request, *args, **kwargs)
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -135,26 +111,6 @@ class AssetUpdateView(AdminUserRequiredMixin, UpdateAssetTagsMiXin, UpdateView):
...
@@ -135,26 +111,6 @@ class AssetUpdateView(AdminUserRequiredMixin, UpdateAssetTagsMiXin, UpdateView):
print
(
form
.
errors
)
print
(
form
.
errors
)
return
super
(
AssetUpdateView
,
self
)
.
form_invalid
(
form
)
return
super
(
AssetUpdateView
,
self
)
.
form_invalid
(
form
)
# def form_valid(self, form):
# asset = form.save(commit=False)
#
# def prn_obj_key(obj_form):
# return obj_form.clean().keys()
#
# for i in prn_obj_key(form):
# if i not in self.new_form.keys():
# print i
#delattr(asset, '"%s" % i')
#del asset.i
# asset.save()
# asset.id = 27
# # asset.created_by = self.request.user.username or 'Admin'
# asset.save()
# asset.id = 28
# asset.save()
# return super(AssetUpdateView, self).form_valid(form)
class
AssetDeleteView
(
DeleteView
):
class
AssetDeleteView
(
DeleteView
):
model
=
Asset
model
=
Asset
...
@@ -192,7 +148,6 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
...
@@ -192,7 +148,6 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
group_id
=
self
.
request
.
GET
.
get
(
'group_id'
)
group_id
=
self
.
request
.
GET
.
get
(
'group_id'
)
tag_id
=
self
.
request
.
GET
.
get
(
'tag_id'
)
plain_id_lists
=
self
.
request
.
GET
.
get
(
'plain_id_lists'
)
plain_id_lists
=
self
.
request
.
GET
.
get
(
'plain_id_lists'
)
self
.
s
=
self
.
request
.
GET
.
get
(
'plain_id_lists'
)
self
.
s
=
self
.
request
.
GET
.
get
(
'plain_id_lists'
)
if
","
in
str
(
self
.
s
):
if
","
in
str
(
self
.
s
):
...
@@ -206,7 +161,7 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
...
@@ -206,7 +161,7 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
else
:
else
:
plain_id_lists
=
[
int
(
self
.
s
)]
plain_id_lists
=
[
int
(
self
.
s
)]
context
=
{
context
=
{
'all_assets'
:
plain_id_lists
'all_assets'
:
plain_id_lists
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
if
group_id
:
if
group_id
:
...
@@ -215,12 +170,6 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
...
@@ -215,12 +170,6 @@ class AssetModalListView(AdminUserRequiredMixin, ListView):
'all_assets'
:
[
x
.
id
for
x
in
group
.
assets
.
all
()]
'all_assets'
:
[
x
.
id
for
x
in
group
.
assets
.
all
()]
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
if
tag_id
:
tag
=
Tag
.
objects
.
get
(
id
=
tag_id
)
context
=
{
'all_assets'
:
[
x
.
id
for
x
in
tag
.
asset_set
.
all
()]
}
kwargs
.
update
(
context
)
return
super
(
AssetModalListView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
(
AssetModalListView
,
self
)
.
get_context_data
(
**
kwargs
)
...
@@ -390,7 +339,6 @@ class IDCAssetsView(AdminUserRequiredMixin, DetailView):
...
@@ -390,7 +339,6 @@ class IDCAssetsView(AdminUserRequiredMixin, DetailView):
'action'
:
_
(
'Asset detail'
),
'action'
:
_
(
'Asset detail'
),
'groups'
:
AssetGroup
.
objects
.
all
(),
'groups'
:
AssetGroup
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'tags'
:
Tag
.
objects
.
all
(),
'assets_remain'
:
assets_remain
,
'assets_remain'
:
assets_remain
,
'assets'
:
[
asset
for
asset
in
Asset
.
objects
.
all
()
if
asset
not
in
assets_remain
],
'assets'
:
[
asset
for
asset
in
Asset
.
objects
.
all
()
if
asset
not
in
assets_remain
],
}
}
...
@@ -615,123 +563,8 @@ class SystemUserAssetView(AdminUserRequiredMixin, SingleObjectMixin, ListView):
...
@@ -615,123 +563,8 @@ class SystemUserAssetView(AdminUserRequiredMixin, SingleObjectMixin, ListView):
return
super
(
SystemUserAssetView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
(
SystemUserAssetView
,
self
)
.
get_context_data
(
**
kwargs
)
class
TagView
(
ListView
):
context_object_name
=
'asset_list'
template_name
=
'assets/asset_list.html'
def
get_queryset
(
self
):
asset_list
=
Asset
.
objects
.
filter
(
tags
=
self
.
kwargs
[
'tag_id'
])
return
asset_list
def
get_context_data
(
self
,
**
kwargs
):
kwargs
[
'app'
]
=
'Assets'
kwargs
[
'action'
]
=
'asset list'
kwargs
[
'tag_list'
]
=
[(
i
.
id
,
i
.
name
,
i
.
asset_set
.
all
()
.
count
()
)
for
i
in
Tag
.
objects
.
all
()
.
order_by
(
'name'
)]
kwargs
[
'tag_id'
]
=
self
.
kwargs
[
'tag_id'
]
return
super
(
TagView
,
self
)
.
get_context_data
(
**
kwargs
)
class
TagsListView
(
AdminUserRequiredMixin
,
ListView
):
model
=
Tag
paginate_by
=
settings
.
CONFIG
.
DISPLAY_PER_PAGE
context_object_name
=
'asset_tags_list'
template_name
=
'assets/asset_tags_list.html'
ordering
=
'-id'
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'Tag'
),
'action'
:
_
(
'Asset Tags list'
),
'keyword'
:
self
.
request
.
GET
.
get
(
'keyword'
,
''
)
}
kwargs
.
update
(
context
)
return
super
(
TagsListView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetTagCreateView
(
AdminUserRequiredMixin
,
CreateAssetTagsMiXin
,
CreateView
):
model
=
Tag
form_class
=
forms
.
AssetTagForm
template_name
=
'assets/asset_tag_create.html'
success_url
=
reverse_lazy
(
'assets:asset-tag-list'
)
#ordering = '-id'
# Todo: Asset group create template select assets so hard, need be resolve next
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'Tag'
),
'action'
:
_
(
'Asset Tags list'
),
'assets_count'
:
0
,
}
kwargs
.
update
(
context
)
return
super
(
AssetTagCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
def
form_valid
(
self
,
form
):
asset_tag
=
form
.
save
()
assets_id_list
=
self
.
request
.
POST
.
getlist
(
'assets'
,
[])
assets
=
[
get_object_or_404
(
Asset
,
id
=
int
(
asset_id
))
for
asset_id
in
assets_id_list
]
asset_tag
.
created_by
=
self
.
request
.
user
.
username
or
'Admin'
asset_tag
.
assets
.
add
(
*
tuple
(
assets
))
asset_tag
.
save
()
return
super
(
AssetTagCreateView
,
self
)
.
form_valid
(
form
)
class
AssetTagDetailView
(
SingleObjectMixin
,
AdminUserRequiredMixin
,
ListView
):
template_name
=
'assets/asset_tag_detail.html'
paginate_by
=
settings
.
CONFIG
.
DISPLAY_PER_PAGE
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
object
=
self
.
get_object
(
queryset
=
Tag
.
objects
.
all
())
return
super
(
AssetTagDetailView
,
self
)
.
get
(
request
,
*
args
,
**
kwargs
)
def
get_queryset
(
self
):
return
self
.
object
.
assets
.
all
()
def
get_context_data
(
self
,
**
kwargs
):
assets_remain
=
Asset
.
objects
.
exclude
(
id__in
=
self
.
object
.
assets
.
all
())
context
=
{
'app'
:
_
(
'Tag'
),
'action'
:
_
(
'Asset Tags detail'
),
'asset_tag'
:
self
.
object
,
'assets_remain'
:
assets_remain
,
'assets'
:
[
asset
for
asset
in
Asset
.
objects
.
all
()
if
asset
not
in
assets_remain
]
}
kwargs
.
update
(
context
)
return
super
(
AssetTagDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetTagUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
model
=
Tag
form_class
=
forms
.
AssetTagForm
template_name
=
'assets/asset_tag_create.html'
success_url
=
reverse_lazy
(
'assets:asset-tag-list'
)
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
object
=
self
.
get_object
(
queryset
=
Tag
.
objects
.
all
())
return
super
(
AssetTagUpdateView
,
self
)
.
get
(
request
,
*
args
,
**
kwargs
)
def
get_context_data
(
self
,
**
kwargs
):
assets_all
=
self
.
object
.
assets
.
all
()
context
=
{
'app'
:
_
(
'Tag'
),
'action'
:
_
(
'Asset Tags detail'
),
'assets_count'
:
len
(
assets_all
),
'assets_on_list'
:
assets_all
,
'tag_id'
:
self
.
object
.
id
,
}
kwargs
.
update
(
context
)
return
super
(
AssetTagUpdateView
,
self
)
.
get_context_data
(
**
kwargs
)
class
AssetTagDeleteView
(
AdminUserRequiredMixin
,
DeleteView
):
template_name
=
'assets/delete_confirm.html'
model
=
Tag
success_url
=
reverse_lazy
(
'assets:asset-tag-list'
)
@method_decorator
(
csrf_exempt
,
name
=
'dispatch'
)
@method_decorator
(
csrf_exempt
,
name
=
'dispatch'
)
class
AssetExportView
(
View
):
class
AssetExportView
(
View
):
@staticmethod
@staticmethod
def
get_asset_attr
(
asset
,
attr
):
def
get_asset_attr
(
asset
,
attr
):
if
attr
in
[
'admin_user'
,
'idc'
]:
if
attr
in
[
'admin_user'
,
'idc'
]:
...
...
apps/templates/_nav.html
View file @
10eb1392
...
@@ -23,7 +23,6 @@
...
@@ -23,7 +23,6 @@
<li
id=
"idc"
><a
href=
"{% url 'assets:idc-list' %}"
>
{% trans 'IDC' %}
</a></li>
<li
id=
"idc"
><a
href=
"{% url 'assets:idc-list' %}"
>
{% trans 'IDC' %}
</a></li>
<li
id=
"admin-user"
><a
href=
"{% url 'assets:admin-user-list' %}"
>
{% trans 'Admin user' %}
</a></li>
<li
id=
"admin-user"
><a
href=
"{% url 'assets:admin-user-list' %}"
>
{% trans 'Admin user' %}
</a></li>
<li
id=
"system-user"
><a
href=
"{% url 'assets:system-user-list' %}"
>
{% trans 'System user' %}
</a></li>
<li
id=
"system-user"
><a
href=
"{% url 'assets:system-user-list' %}"
>
{% trans 'System user' %}
</a></li>
<li
id=
"asset-tag"
><a
href=
"{% url 'assets:asset-tag-list' %}"
>
{% trans 'Label' %}
</a></li>
</ul>
</ul>
</li>
</li>
<li
id=
"perms"
>
<li
id=
"perms"
>
...
...
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