mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-07-03 18:16:37 +00:00
[Change] 全部使用uuid作为主键
This commit is contained in:
parent
d80cbe270a
commit
e7f38ec894
@ -1,5 +1,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
@ -7,6 +9,7 @@ from users.models import User
|
|||||||
|
|
||||||
|
|
||||||
class Terminal(models.Model):
|
class Terminal(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=32, unique=True, verbose_name=_('Name'))
|
name = models.CharField(max_length=32, unique=True, verbose_name=_('Name'))
|
||||||
remote_addr = models.CharField(max_length=128, verbose_name=_('Remote Address'))
|
remote_addr = models.CharField(max_length=128, verbose_name=_('Remote Address'))
|
||||||
ssh_port = models.IntegerField(verbose_name=_('SSH Port'), default=2222)
|
ssh_port = models.IntegerField(verbose_name=_('SSH Port'), default=2222)
|
||||||
@ -57,6 +60,7 @@ class Terminal(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class TerminalStatus(models.Model):
|
class TerminalStatus(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
session_online = models.IntegerField(verbose_name=_("Session Online"), default=0)
|
session_online = models.IntegerField(verbose_name=_("Session Online"), default=0)
|
||||||
cpu_used = models.FloatField(verbose_name=_("CPU Usage"))
|
cpu_used = models.FloatField(verbose_name=_("CPU Usage"))
|
||||||
memory_used = models.FloatField(verbose_name=_("Memory Used"))
|
memory_used = models.FloatField(verbose_name=_("Memory Used"))
|
||||||
@ -76,7 +80,7 @@ class TerminalSession(models.Model):
|
|||||||
('WT', 'Web Terminal'),
|
('WT', 'Web Terminal'),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = models.UUIDField(primary_key=True)
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
user = models.CharField(max_length=128, verbose_name=_("User"))
|
user = models.CharField(max_length=128, verbose_name=_("User"))
|
||||||
asset = models.CharField(max_length=1024, verbose_name=_("Asset"))
|
asset = models.CharField(max_length=1024, verbose_name=_("Asset"))
|
||||||
system_user = models.CharField(max_length=128, verbose_name=_("System User"))
|
system_user = models.CharField(max_length=128, verbose_name=_("System User"))
|
||||||
@ -96,6 +100,7 @@ class TerminalSession(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class TerminalTask(models.Model):
|
class TerminalTask(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=128, verbose_name=_("Name"))
|
name = models.CharField(max_length=128, verbose_name=_("Name"))
|
||||||
args = models.CharField(max_length=1024, verbose_name=_("Task Args"))
|
args = models.CharField(max_length=1024, verbose_name=_("Task Args"))
|
||||||
terminal = models.ForeignKey(Terminal, null=True, on_delete=models.CASCADE)
|
terminal = models.ForeignKey(Terminal, null=True, on_delete=models.CASCADE)
|
||||||
|
@ -10,12 +10,12 @@ app_name = 'applications'
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^terminal/$', views.TerminalListView.as_view(), name='terminal-list'),
|
url(r'^terminal/$', views.TerminalListView.as_view(), name='terminal-list'),
|
||||||
url(r'^terminal/(?P<pk>\d+)/$', views.TerminalDetailView.as_view(),
|
url(r'^terminal/(?P<pk>[0-9a-zA-Z\-]+)/$', views.TerminalDetailView.as_view(),
|
||||||
name='terminal-detail'),
|
name='terminal-detail'),
|
||||||
url(r'^terminal/(?P<pk>\d+)/connect/$', views.TerminalConnectView.as_view(),
|
url(r'^terminal/(?P<pk>[0-9a-zA-Z\-]+)/connect/$', views.TerminalConnectView.as_view(),
|
||||||
name='terminal-connect'),
|
name='terminal-connect'),
|
||||||
url(r'^terminal/(?P<pk>\d+)/update$', views.TerminalUpdateView.as_view(),
|
url(r'^terminal/(?P<pk>[0-9a-zA-Z\-]+)/update$', views.TerminalUpdateView.as_view(),
|
||||||
name='terminal-update'),
|
name='terminal-update'),
|
||||||
url(r'^terminal/(?P<pk>\d+)/modal/accept$', views.TerminalModelAccept.as_view(),
|
url(r'^terminal/(?P<pk>[0-9a-zA-Z\-]+)/modal/accept$', views.TerminalModelAccept.as_view(),
|
||||||
name='terminal-modal-accept'),
|
name='terminal-modal-accept'),
|
||||||
]
|
]
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
import logging
|
import logging
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@ -38,6 +40,7 @@ class Asset(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Important
|
# Important
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
ip = models.GenericIPAddressField(max_length=32, verbose_name=_('IP'), db_index=True)
|
ip = models.GenericIPAddressField(max_length=32, verbose_name=_('IP'), db_index=True)
|
||||||
hostname = models.CharField(max_length=128, unique=True, verbose_name=_('Hostname'))
|
hostname = models.CharField(max_length=128, unique=True, verbose_name=_('Hostname'))
|
||||||
port = models.IntegerField(default=22, verbose_name=_('Port'))
|
port = models.IntegerField(default=22, verbose_name=_('Port'))
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
import logging
|
import logging
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@ -15,6 +17,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class AssetGroup(models.Model):
|
class AssetGroup(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=64, unique=True, verbose_name=_('Name'))
|
name = models.CharField(max_length=64, unique=True, verbose_name=_('Name'))
|
||||||
system_users = models.ManyToManyField(SystemUser, related_name='asset_groups', blank=True)
|
system_users = models.ManyToManyField(SystemUser, related_name='asset_groups', blank=True)
|
||||||
created_by = models.CharField(max_length=32, blank=True, verbose_name=_('Created by'))
|
created_by = models.CharField(max_length=32, blank=True, verbose_name=_('Created by'))
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@ -15,6 +16,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class IDC(models.Model):
|
class IDC(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=32, verbose_name=_('Name'))
|
name = models.CharField(max_length=32, verbose_name=_('Name'))
|
||||||
bandwidth = models.CharField(
|
bandwidth = models.CharField(
|
||||||
max_length=32, blank=True, verbose_name=_('Bandwidth'))
|
max_length=32, blank=True, verbose_name=_('Bandwidth'))
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
import uuid
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
@ -31,6 +32,7 @@ class AdminUser(models.Model):
|
|||||||
('sudo', 'sudo'),
|
('sudo', 'sudo'),
|
||||||
('su', 'su'),
|
('su', 'su'),
|
||||||
)
|
)
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'))
|
name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'))
|
||||||
username = models.CharField(max_length=16, verbose_name=_('Username'))
|
username = models.CharField(max_length=16, verbose_name=_('Username'))
|
||||||
_password = models.CharField(
|
_password = models.CharField(
|
||||||
@ -131,6 +133,7 @@ class SystemUser(models.Model):
|
|||||||
('P', 'Password'),
|
('P', 'Password'),
|
||||||
('K', 'Public key'),
|
('K', 'Public key'),
|
||||||
)
|
)
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=128, unique=True,
|
name = models.CharField(max_length=128, unique=True,
|
||||||
verbose_name=_('Name'))
|
verbose_name=_('Name'))
|
||||||
username = models.CharField(max_length=16, verbose_name=_('Username'))
|
username = models.CharField(max_length=16, verbose_name=_('Username'))
|
||||||
|
@ -18,37 +18,37 @@ 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'),
|
||||||
url(r'^v1/system-user/(?P<pk>[0-9]+)/auth-info/', api.SystemUserAuthInfoApi.as_view(),
|
url(r'^v1/system-user/(?P<pk>[0-9]+)/auth-info/', api.SystemUserAuthInfoApi.as_view(),
|
||||||
name='system-user-auth-info'),
|
name='system-user-auth-info'),
|
||||||
url(r'^v1/assets/(?P<pk>\d+)/groups/$',
|
url(r'^v1/assets/(?P<pk>[0-9a-zA-Z\-]+)/groups/$',
|
||||||
api.AssetUpdateGroupApi.as_view(), name='asset-update-group'),
|
api.AssetUpdateGroupApi.as_view(), name='asset-update-group'),
|
||||||
|
|
||||||
url(r'^v1/assets/(?P<pk>\d+)/refresh/$',
|
url(r'^v1/assets/(?P<pk>[0-9a-zA-Z\-]+)/refresh/$',
|
||||||
api.AssetRefreshHardwareView.as_view(), name='asset-refresh'),
|
api.AssetRefreshHardwareView.as_view(), name='asset-refresh'),
|
||||||
url(r'^v1/assets/(?P<pk>\d+)/admin-user-test/$',
|
url(r'^v1/assets/(?P<pk>[0-9a-zA-Z\-]+)/admin-user-test/$',
|
||||||
api.AssetAdminUserTestView.as_view(), name='asset-admin-user-test'),
|
api.AssetAdminUserTestView.as_view(), name='asset-admin-user-test'),
|
||||||
|
|
||||||
url(r'^v1/assets/(?P<pk>\d+)/system-users/$',
|
url(r'^v1/assets/(?P<pk>[0-9a-zA-Z\-]+)/system-users/$',
|
||||||
api.SystemUserUpdateApi.as_view(), name='asset-update-system-users'),
|
api.SystemUserUpdateApi.as_view(), name='asset-update-system-users'),
|
||||||
|
|
||||||
url(r'^v1/groups/(?P<pk>\d+)/push-system-user/$',
|
url(r'^v1/groups/(?P<pk>[0-9a-zA-Z\-]+)/push-system-user/$',
|
||||||
api.AssetGroupPushSystemUserView.as_view(), name='asset-group-push-system-user'),
|
api.AssetGroupPushSystemUserView.as_view(), name='asset-group-push-system-user'),
|
||||||
|
|
||||||
# update the system users, which add and delete the asset to the system user
|
# update the system users, which add and delete the asset to the system user
|
||||||
url(r'^v1/system-user/(?P<pk>\d+)/assets/$',
|
url(r'^v1/system-user/(?P<pk>[0-9a-zA-Z\-]+)/assets/$',
|
||||||
api.SystemUserUpdateAssetsApi.as_view(), name='systemuser-update-assets'),
|
api.SystemUserUpdateAssetsApi.as_view(), name='systemuser-update-assets'),
|
||||||
|
|
||||||
url(r'^v1/system-user/(?P<pk>\d+)/groups/$',
|
url(r'^v1/system-user/(?P<pk>[0-9a-zA-Z\-]+)/groups/$',
|
||||||
api.SystemUserUpdateAssetGroupApi.as_view(), name='systemuser-update-assetgroups'),
|
api.SystemUserUpdateAssetGroupApi.as_view(), name='systemuser-update-assetgroups'),
|
||||||
|
|
||||||
# update the asset group, which add or delete the asset to the group
|
# update the asset group, which add or delete the asset to the group
|
||||||
url(r'^v1/groups/(?P<pk>\d+)/assets/$',
|
url(r'^v1/groups/(?P<pk>[0-9a-zA-Z\-]+)/assets/$',
|
||||||
api.AssetGroupUpdateApi.as_view(), name='asset-groups-update'),
|
api.AssetGroupUpdateApi.as_view(), name='asset-groups-update'),
|
||||||
|
|
||||||
# update the asset group, and add or delete the system_user to the group
|
# update the asset group, and add or delete the system_user to the group
|
||||||
url(r'^v1/groups/(?P<pk>\d+)/system-users/$',
|
url(r'^v1/groups/(?P<pk>[0-9a-zA-Z\-]+)/system-users/$',
|
||||||
api.AssetGroupUpdateSystemUserApi.as_view(), name='asset-groups-update-systemusers'),
|
api.AssetGroupUpdateSystemUserApi.as_view(), name='asset-groups-update-systemusers'),
|
||||||
|
|
||||||
# update the IDC, and add or delete the assets to the IDC
|
# update the IDC, and add or delete the assets to the IDC
|
||||||
url(r'^v1/idc/(?P<pk>\d+)/assets/$',
|
url(r'^v1/idc/(?P<pk>[0-9a-zA-Z\-]+)/assets/$',
|
||||||
api.IDCUpdateAssetsApi.as_view(), name='idc-update-assets'),
|
api.IDCUpdateAssetsApi.as_view(), name='idc-update-assets'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -11,9 +11,9 @@ urlpatterns = [
|
|||||||
url(r'^asset/create/$', views.AssetCreateView.as_view(), name='asset-create'),
|
url(r'^asset/create/$', views.AssetCreateView.as_view(), name='asset-create'),
|
||||||
url(r'^asset/export/$', views.AssetExportView.as_view(), name='asset-export'),
|
url(r'^asset/export/$', views.AssetExportView.as_view(), name='asset-export'),
|
||||||
url(r'^asset/import/$', views.BulkImportAssetView.as_view(), name='asset-import'),
|
url(r'^asset/import/$', views.BulkImportAssetView.as_view(), name='asset-import'),
|
||||||
url(r'^asset/(?P<pk>[0-9]+)/$', views.AssetDetailView.as_view(), name='asset-detail'),
|
url(r'^asset/(?P<pk>[0-9a-zA-Z\-]+)/$', views.AssetDetailView.as_view(), name='asset-detail'),
|
||||||
url(r'^asset/(?P<pk>[0-9]+)/update/$', views.AssetUpdateView.as_view(), name='asset-update'),
|
url(r'^asset/(?P<pk>[0-9a-zA-Z\-]+)/update/$', views.AssetUpdateView.as_view(), name='asset-update'),
|
||||||
url(r'^asset/(?P<pk>[0-9]+)/delete/$', views.AssetDeleteView.as_view(), name='asset-delete'),
|
url(r'^asset/(?P<pk>[0-9a-zA-Z\-]+)/delete/$', views.AssetDeleteView.as_view(), name='asset-delete'),
|
||||||
url(r'^asset-modal$', views.AssetModalListView.as_view(), name='asset-modal-list'),
|
url(r'^asset-modal$', views.AssetModalListView.as_view(), name='asset-modal-list'),
|
||||||
url(r'^asset/update/$', views.AssetBulkUpdateView.as_view(), name='asset-bulk-update'),
|
url(r'^asset/update/$', views.AssetBulkUpdateView.as_view(), name='asset-bulk-update'),
|
||||||
|
|
||||||
@ -23,33 +23,33 @@ urlpatterns = [
|
|||||||
# Resource asset group url
|
# Resource asset group url
|
||||||
url(r'^asset-group/$', views.AssetGroupListView.as_view(), name='asset-group-list'),
|
url(r'^asset-group/$', views.AssetGroupListView.as_view(), name='asset-group-list'),
|
||||||
url(r'^asset-group/create/$', views.AssetGroupCreateView.as_view(), name='asset-group-create'),
|
url(r'^asset-group/create/$', views.AssetGroupCreateView.as_view(), name='asset-group-create'),
|
||||||
url(r'^asset-group/(?P<pk>[0-9]+)/$', views.AssetGroupDetailView.as_view(), name='asset-group-detail'),
|
url(r'^asset-group/(?P<pk>[0-9a-zA-Z\-]+)/$', views.AssetGroupDetailView.as_view(), name='asset-group-detail'),
|
||||||
url(r'^asset-group/(?P<pk>[0-9]+)/update/$', views.AssetGroupUpdateView.as_view(), name='asset-group-update'),
|
url(r'^asset-group/(?P<pk>[0-9a-zA-Z\-]+)/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-9a-zA-Z\-]+)/delete/$', views.AssetGroupDeleteView.as_view(), name='asset-group-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'),
|
||||||
url(r'^idc/(?P<pk>[0-9]+)/$', views.IDCDetailView.as_view(), name='idc-detail'),
|
url(r'^idc/(?P<pk>[0-9a-zA-Z\-]+)/$', views.IDCDetailView.as_view(), name='idc-detail'),
|
||||||
url(r'^idc/(?P<pk>[0-9]+)/update/', views.IDCUpdateView.as_view(), name='idc-update'),
|
url(r'^idc/(?P<pk>[0-9a-zA-Z\-]+)/update/', views.IDCUpdateView.as_view(), name='idc-update'),
|
||||||
url(r'^idc/(?P<pk>[0-9]+)/delete/$', views.IDCDeleteView.as_view(), name='idc-delete'),
|
url(r'^idc/(?P<pk>[0-9a-zA-Z\-]+)/delete/$', views.IDCDeleteView.as_view(), name='idc-delete'),
|
||||||
url(r'^idc/(?P<pk>[0-9]+)/assets/$', views.IDCAssetsView.as_view(), name='idc-assets'),
|
url(r'^idc/(?P<pk>[0-9a-zA-Z\-]+)/assets/$', views.IDCAssetsView.as_view(), name='idc-assets'),
|
||||||
|
|
||||||
# Resource admin user url
|
# Resource admin user url
|
||||||
url(r'^admin-user/$', views.AdminUserListView.as_view(), name='admin-user-list'),
|
url(r'^admin-user/$', views.AdminUserListView.as_view(), name='admin-user-list'),
|
||||||
url(r'^admin-user/create/$', views.AdminUserCreateView.as_view(), name='admin-user-create'),
|
url(r'^admin-user/create/$', views.AdminUserCreateView.as_view(), name='admin-user-create'),
|
||||||
url(r'^admin-user/(?P<pk>[0-9]+)/$', views.AdminUserDetailView.as_view(), name='admin-user-detail'),
|
url(r'^admin-user/(?P<pk>[0-9a-zA-Z\-]+)/$', views.AdminUserDetailView.as_view(), name='admin-user-detail'),
|
||||||
url(r'^admin-user/(?P<pk>[0-9]+)/update/$', views.AdminUserUpdateView.as_view(), name='admin-user-update'),
|
url(r'^admin-user/(?P<pk>[0-9a-zA-Z\-]+)/update/$', views.AdminUserUpdateView.as_view(), name='admin-user-update'),
|
||||||
url(r'^admin-user/(?P<pk>[0-9]+)/delete/$', views.AdminUserDeleteView.as_view(), name='admin-user-delete'),
|
url(r'^admin-user/(?P<pk>[0-9a-zA-Z\-]+)/delete/$', views.AdminUserDeleteView.as_view(), name='admin-user-delete'),
|
||||||
|
|
||||||
# Resource system user url
|
# Resource system user url
|
||||||
url(r'^system-user/$', views.SystemUserListView.as_view(), name='system-user-list'),
|
url(r'^system-user/$', views.SystemUserListView.as_view(), name='system-user-list'),
|
||||||
url(r'^system-user/create/$', views.SystemUserCreateView.as_view(), name='system-user-create'),
|
url(r'^system-user/create/$', views.SystemUserCreateView.as_view(), name='system-user-create'),
|
||||||
url(r'^system-user/(?P<pk>[0-9]+)/$', views.SystemUserDetailView.as_view(), name='system-user-detail'),
|
url(r'^system-user/(?P<pk>[0-9a-zA-Z\-]+)/$', views.SystemUserDetailView.as_view(), name='system-user-detail'),
|
||||||
url(r'^system-user/(?P<pk>[0-9]+)/update/$', views.SystemUserUpdateView.as_view(), name='system-user-update'),
|
url(r'^system-user/(?P<pk>[0-9a-zA-Z\-]+)/update/$', views.SystemUserUpdateView.as_view(), name='system-user-update'),
|
||||||
url(r'^system-user/(?P<pk>[0-9]+)/delete/$', views.SystemUserDeleteView.as_view(), name='system-user-delete'),
|
url(r'^system-user/(?P<pk>[0-9a-zA-Z\-]+)/delete/$', views.SystemUserDeleteView.as_view(), name='system-user-delete'),
|
||||||
url(r'^system-user/(?P<pk>[0-9]+)/asset/$', views.SystemUserAssetView.as_view(), name='system-user-asset'),
|
url(r'^system-user/(?P<pk>[0-9a-zA-Z\-]+)/asset/$', views.SystemUserAssetView.as_view(), name='system-user-asset'),
|
||||||
# url(r'^system-user/(?P<pk>[0-9]+)/asset-group$', views.SystemUserAssetGroupView.as_view(),
|
# url(r'^system-user/(?P<pk>[0-9a-zA-Z\-]+)/asset-group$', views.SystemUserAssetGroupView.as_view(),
|
||||||
# name='system-user-asset-group'),
|
# name='system-user-asset-group'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
@ -13,7 +15,7 @@ class LoginLog(models.Model):
|
|||||||
('ST', 'SSH Terminal'),
|
('ST', 'SSH Terminal'),
|
||||||
('WT', 'Web Terminal')
|
('WT', 'Web Terminal')
|
||||||
)
|
)
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
username = models.CharField(max_length=20, verbose_name=_('Username'))
|
username = models.CharField(max_length=20, verbose_name=_('Username'))
|
||||||
name = models.CharField(max_length=20, blank=True, verbose_name=_('Name'))
|
name = models.CharField(max_length=20, blank=True, verbose_name=_('Name'))
|
||||||
login_type = models.CharField(choices=LOGIN_TYPE_CHOICE, max_length=2,
|
login_type = models.CharField(choices=LOGIN_TYPE_CHOICE, max_length=2,
|
||||||
@ -37,6 +39,7 @@ class ProxyLog(models.Model):
|
|||||||
('WT', 'Web Terminal'),
|
('WT', 'Web Terminal'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
user = models.CharField(max_length=32, verbose_name=_('User'))
|
user = models.CharField(max_length=32, verbose_name=_('User'))
|
||||||
asset = models.CharField(max_length=32, verbose_name=_('Asset'))
|
asset = models.CharField(max_length=32, verbose_name=_('Asset'))
|
||||||
system_user = models.CharField(max_length=32, verbose_name=_('System user'))
|
system_user = models.CharField(max_length=32, verbose_name=_('System user'))
|
||||||
@ -66,6 +69,7 @@ class ProxyLog(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class CommandLog(models.Model):
|
class CommandLog(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
proxy_log_id = models.IntegerField(db_index=True)
|
proxy_log_id = models.IntegerField(db_index=True)
|
||||||
user = models.CharField(max_length=48, db_index=True)
|
user = models.CharField(max_length=48, db_index=True)
|
||||||
asset = models.CharField(max_length=128, db_index=True)
|
asset = models.CharField(max_length=128, db_index=True)
|
||||||
@ -83,6 +87,7 @@ class CommandLog(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class RecordLog(models.Model):
|
class RecordLog(models.Model):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
proxy_log_id = models.IntegerField(db_index=True)
|
proxy_log_id = models.IntegerField(db_index=True)
|
||||||
output = models.TextField(verbose_name=_('Output'))
|
output = models.TextField(verbose_name=_('Output'))
|
||||||
timestamp = models.FloatField(db_index=True)
|
timestamp = models.FloatField(db_index=True)
|
||||||
|
@ -8,7 +8,7 @@ urlpatterns = [
|
|||||||
name='proxy-log-offline-list'),
|
name='proxy-log-offline-list'),
|
||||||
url(r'^proxy-log-online/$', views.ProxyLogOnlineListView.as_view(),
|
url(r'^proxy-log-online/$', views.ProxyLogOnlineListView.as_view(),
|
||||||
name='proxy-log-online-list'),
|
name='proxy-log-online-list'),
|
||||||
url(r'^proxy-log/(?P<pk>\d+)/$', views.ProxyLogDetailView.as_view(),
|
url(r'^proxy-log/(?P<pk>[0-9a-zA-Z\-]+)/$', views.ProxyLogDetailView.as_view(),
|
||||||
name='proxy-log-detail'),
|
name='proxy-log-detail'),
|
||||||
url(r'^command-log/$', views.CommandLogListView.as_view(),
|
url(r'^command-log/$', views.CommandLogListView.as_view(),
|
||||||
name='command-log-list'),
|
name='command-log-list'),
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
[{"model": "users.usergroup", "pk": 1, "fields": {"is_discard": false, "discard_time": null, "name": "Default", "comment": "Default user group", "date_created": "2017-04-04T01:59:21.128Z", "created_by": "System"}}, {"model": "assets.idc", "pk": 1, "fields": {"name": "Default", "bandwidth": "", "contact": "", "phone": "", "address": "", "intranet": "", "extranet": "", "date_created": "2017-04-04T01:59:21.140Z", "operator": "", "created_by": "System", "comment": "Default IDC"}}, {"model": "assets.assetgroup", "pk": 1, "fields": {"name": "Default", "created_by": "", "date_created": "2017-04-04T01:59:21.142Z", "comment": "Default asset group", "system_users": []}}, {"model": "users.user", "pk": 1, "fields": {"password": "pbkdf2_sha256$30000$f8HLJLRwydBR$M+X1huSgQOojfaG01SGNBYPOlbYnHHw/A4/RdcSBEQQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-04-04T01:59:20.932Z", "username": "admin", "name": "Administrator", "email": "admin@jumpserver.org", "role": "Admin", "avatar": "", "wechat": "", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Administrator is the super user of system", "is_first_login": false, "date_expired": "2087-03-18T01:59:20.932Z", "created_by": "System", "user_permissions": [], "groups": [1]}}]
|
[{"model": "users.usergroup", "pk": "0460a32e-59c9-42cc-81a5-7e0a13fc0085", "fields": {"is_discard": false, "discard_time": null, "name": "Default", "comment": "Default user group", "date_created": "2017-11-23T03:59:09.875Z", "created_by": "System"}}, {"model": "assets.idc", "pk": "937922e3-e2b7-42aa-b460-6b276901f53a", "fields": {"name": "Default", "bandwidth": "", "contact": "", "phone": "", "address": "", "intranet": "", "extranet": "", "date_created": "2017-11-23T03:59:09.882Z", "operator": "", "created_by": "System", "comment": "Default IDC"}}, {"model": "assets.assetgroup", "pk": "f758dc94-b979-4edf-9afc-f9171f9d2d6a", "fields": {"name": "Default", "created_by": "", "date_created": "2017-11-23T03:59:09.883Z", "comment": "Default asset group", "system_users": []}}, {"model": "users.user", "pk": "bb318c48-4f50-483e-a165-89d7f18e9e95", "fields": {"password": "pbkdf2_sha256$36000$kHqN5uCVaAk9$SXWzKLwBg68/2W8NLSNJIaVBJc60F26p8RO9E3oSskI=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-11-23T03:59:09.828Z", "username": "admin", "name": "Administrator", "email": "admin@jumpserver.org", "role": "Admin", "avatar": "", "wechat": "", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Administrator is the super user of system", "is_first_login": false, "date_expired": "2087-11-06T03:59:09.829Z", "created_by": "System", "user_permissions": [], "groups": ["0460a32e-59c9-42cc-81a5-7e0a13fc0085"]}}]
|
@ -1,9 +1,9 @@
|
|||||||
# ~*~ coding: utf-8 ~*~
|
# ~*~ coding: utf-8 ~*~
|
||||||
from __future__ import unicode_literals, absolute_import
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
import json
|
import json
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@ -16,7 +16,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class Task(models.Model):
|
class Task(models.Model):
|
||||||
uuid = models.CharField(max_length=128, verbose_name=_('UUID'), primary_key=True)
|
uuid = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=128, blank=True, verbose_name=_('Name'))
|
name = models.CharField(max_length=128, blank=True, verbose_name=_('Name'))
|
||||||
date_start = models.DateTimeField(auto_now_add=True, verbose_name=_('Start time'))
|
date_start = models.DateTimeField(auto_now_add=True, verbose_name=_('Start time'))
|
||||||
date_finished = models.DateTimeField(blank=True, null=True, verbose_name=_('End time'))
|
date_finished = models.DateTimeField(blank=True, null=True, verbose_name=_('End time'))
|
||||||
|
@ -10,6 +10,6 @@ __all__ = ["urlpatterns"]
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# TResource Task url
|
# TResource Task url
|
||||||
url(r'^task/$', views.TaskListView.as_view(), name='task-list'),
|
url(r'^task/$', views.TaskListView.as_view(), name='task-list'),
|
||||||
url(r'^task/(?P<pk>[0-9a-zA-Z-]+)/$', views.TaskDetailView.as_view(), name='task-detail'),
|
url(r'^task/(?P<pk>[0-9a-zA-Z\-]+)/$', views.TaskDetailView.as_view(), name='task-detail'),
|
||||||
url(r'^task/(?P<pk>[0-9a-zA-Z-]+)/run/$', views.TaskRunView.as_view(), name='task-run'),
|
url(r'^task/(?P<pk>[0-9a-zA-Z\-]+)/run/$', views.TaskRunView.as_view(), name='task-run'),
|
||||||
]
|
]
|
@ -1,5 +1,6 @@
|
|||||||
from __future__ import unicode_literals, absolute_import
|
from __future__ import unicode_literals, absolute_import
|
||||||
import functools
|
import functools
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@ -17,6 +18,7 @@ class AssetPermission(models.Model):
|
|||||||
# ('U', 'user'),
|
# ('U', 'user'),
|
||||||
# ('G', 'user group'),
|
# ('G', 'user group'),
|
||||||
# )
|
# )
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(
|
name = models.CharField(
|
||||||
max_length=128, unique=True, verbose_name=_('Name'))
|
max_length=128, unique=True, verbose_name=_('Name'))
|
||||||
users = models.ManyToManyField(
|
users = models.ManyToManyField(
|
||||||
|
@ -13,35 +13,27 @@ router.register('v1/asset-permissions',
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# 用户可以使用自己的Token或其它认证查看自己授权的资产,资产组等
|
# 用户可以使用自己的Token或其它认证查看自己授权的资产,资产组等
|
||||||
url(r'^v1/user/my/assets/$',
|
url(r'^v1/user/my/assets/$', api.MyGrantedAssetsApi.as_view(), name='my-assets'),
|
||||||
api.MyGrantedAssetsApi.as_view(),
|
url(r'^v1/user/my/asset-groups/$', api.MyGrantedAssetGroupsApi.as_view(), name='my-asset-groups'),
|
||||||
name='my-assets'),
|
url(r'^v1/user/my/asset-groups-assets/$', api.MyGrantedAssetGroupsWithAssetsApi.as_view(), name='my-asset-group-assets'),
|
||||||
url(r'^v1/user/my/asset-groups/$',
|
url(r'^v1/user/my/asset-group/(?P<pk>[0-9a-zA-Z\-]+)/assets/$', api.MyAssetGroupOfAssetsApi.as_view(), name='my-asset-group-of-assets'),
|
||||||
api.MyGrantedAssetGroupsApi.as_view(),
|
|
||||||
name='my-asset-groups'),
|
|
||||||
url(r'^v1/user/my/asset-groups-assets/$',
|
|
||||||
api.MyGrantedAssetGroupsWithAssetsApi.as_view(),
|
|
||||||
name='my-asset-group-assets'),
|
|
||||||
url(r'^v1/user/my/asset-group/(?P<pk>[0-9]+)/assets/$',
|
|
||||||
api.MyAssetGroupOfAssetsApi.as_view(),
|
|
||||||
name='my-asset-group-of-assets'),
|
|
||||||
|
|
||||||
# 查询某个用户授权的资产和资产组
|
# 查询某个用户授权的资产和资产组
|
||||||
url(r'^v1/user/(?P<pk>[0-9]+)/assets/$',
|
url(r'^v1/user/(?P<pk>[0-9a-zA-Z\-]+)/assets/$',
|
||||||
api.UserGrantedAssetsApi.as_view(),
|
api.UserGrantedAssetsApi.as_view(),
|
||||||
name='user-assets'),
|
name='user-assets'),
|
||||||
url(r'^v1/user/(?P<pk>[0-9]+)/asset-groups/$',
|
url(r'^v1/user/(?P<pk>[0-9a-zA-Z\-]+)/asset-groups/$',
|
||||||
api.UserGrantedAssetGroupsApi.as_view(),
|
api.UserGrantedAssetGroupsApi.as_view(),
|
||||||
name='user-asset-groups'),
|
name='user-asset-groups'),
|
||||||
url(r'^v1/user/(?P<pk>[0-9]+)/asset-groups-assets/$',
|
url(r'^v1/user/(?P<pk>[0-9a-zA-Z\-]+)/asset-groups-assets/$',
|
||||||
api.UserGrantedAssetGroupsWithAssetsApi.as_view(),
|
api.UserGrantedAssetGroupsWithAssetsApi.as_view(),
|
||||||
name='user-asset-groups'),
|
name='user-asset-groups'),
|
||||||
|
|
||||||
# 查询某个用户组授权的资产和资产组
|
# 查询某个用户组授权的资产和资产组
|
||||||
url(r'^v1/user-group/(?P<pk>[0-9]+)/assets/$',
|
url(r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]+)/assets/$',
|
||||||
api.UserGroupGrantedAssetsApi.as_view(),
|
api.UserGroupGrantedAssetsApi.as_view(),
|
||||||
name='user-group-assets'),
|
name='user-group-assets'),
|
||||||
url(r'^v1/user-group/(?P<pk>[0-9]+)/asset-groups/$',
|
url(r'^v1/user-group/(?P<pk>[0-9a-zA-Z\-]+)/asset-groups/$',
|
||||||
api.UserGroupGrantedAssetGroupsApi.as_view(),
|
api.UserGroupGrantedAssetGroupsApi.as_view(),
|
||||||
name='user-group-asset-groups'),
|
name='user-group-asset-groups'),
|
||||||
|
|
||||||
@ -59,7 +51,7 @@ urlpatterns = [
|
|||||||
name='validate-user-asset-permission'),
|
name='validate-user-asset-permission'),
|
||||||
|
|
||||||
# 删除asset permission中的某个系统用户
|
# 删除asset permission中的某个系统用户
|
||||||
url(r'^v1/asset-permissions/(?P<pk>[0-9]+)/system-user/remove/$',
|
url(r'^v1/asset-permissions/(?P<pk>[0-9a-zA-Z\-]+)/system-user/remove/$',
|
||||||
api.RemoveSystemUserAssetPermission.as_view(),
|
api.RemoveSystemUserAssetPermission.as_view(),
|
||||||
name='remove-system-user-asset-permission'),
|
name='remove-system-user-asset-permission'),
|
||||||
]
|
]
|
||||||
|
@ -8,16 +8,11 @@ app_name = 'perms'
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^asset-permission$', views.AssetPermissionListView.as_view(), name='asset-permission-list'),
|
url(r'^asset-permission$', views.AssetPermissionListView.as_view(), name='asset-permission-list'),
|
||||||
url(r'^asset-permission/create$', views.AssetPermissionCreateView.as_view(), name='asset-permission-create'),
|
url(r'^asset-permission/create$', views.AssetPermissionCreateView.as_view(), name='asset-permission-create'),
|
||||||
url(r'^asset-permission/(?P<pk>[0-9]+)/update$', views.AssetPermissionUpdateView.as_view(),
|
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]+)/update$', views.AssetPermissionUpdateView.as_view(), name='asset-permission-update'),
|
||||||
name='asset-permission-update'),
|
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]+)$', views.AssetPermissionDetailView.as_view(),name='asset-permission-detail'),
|
||||||
url(r'^asset-permission/(?P<pk>[0-9]+)$', views.AssetPermissionDetailView.as_view(),
|
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]+)/delete$', views.AssetPermissionDeleteView.as_view(), name='asset-permission-delete'),
|
||||||
name='asset-permission-detail'),
|
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]+)/user$', views.AssetPermissionUserView.as_view(), name='asset-permission-user-list'),
|
||||||
url(r'^asset-permission/(?P<pk>[0-9]+)/delete$', views.AssetPermissionDeleteView.as_view(),
|
url(r'^asset-permission/(?P<pk>[0-9a-zA-Z\-]+)/asset$', views.AssetPermissionAssetView.as_view(), name='asset-permission-asset-list'),
|
||||||
name='asset-permission-delete'),
|
|
||||||
url(r'^asset-permission/(?P<pk>[0-9]+)/user$', views.AssetPermissionUserView.as_view(),
|
|
||||||
name='asset-permission-user-list'),
|
|
||||||
url(r'^asset-permission/(?P<pk>[0-9]+)/asset$', views.AssetPermissionAssetView.as_view(),
|
|
||||||
name='asset-permission-asset-list'),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import models, IntegrityError
|
from django.db import models, IntegrityError
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@ -15,6 +17,7 @@ __all__ = ['UserGroup']
|
|||||||
|
|
||||||
|
|
||||||
class UserGroup(NoDeleteModelMixin):
|
class UserGroup(NoDeleteModelMixin):
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=128, verbose_name=_('Name'))
|
name = models.CharField(max_length=128, verbose_name=_('Name'))
|
||||||
comment = models.TextField(blank=True, verbose_name=_('Comment'))
|
comment = models.TextField(blank=True, verbose_name=_('Comment'))
|
||||||
date_created = models.DateTimeField(auto_now_add=True, null=True,
|
date_created = models.DateTimeField(auto_now_add=True, null=True,
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
import os
|
import os
|
||||||
|
import uuid
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -27,7 +27,7 @@ class User(AbstractUser):
|
|||||||
('User', 'User'),
|
('User', 'User'),
|
||||||
('App', 'Application')
|
('App', 'Application')
|
||||||
)
|
)
|
||||||
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
username = models.CharField(max_length=20, unique=True, verbose_name=_('Username'))
|
username = models.CharField(max_length=20, unique=True, verbose_name=_('Username'))
|
||||||
name = models.CharField(max_length=20, verbose_name=_('Name'))
|
name = models.CharField(max_length=20, verbose_name=_('Name'))
|
||||||
email = models.EmailField(max_length=30, unique=True, verbose_name=_('Email'))
|
email = models.EmailField(max_length=30, unique=True, verbose_name=_('Email'))
|
||||||
@ -234,7 +234,7 @@ class User(AbstractUser):
|
|||||||
self.set_password(new_password)
|
self.set_password(new_password)
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
def delete(self):
|
def delete(self, using=None, keep_parents=False):
|
||||||
if self.pk == 1 or self.username == 'admin':
|
if self.pk == 1 or self.username == 'admin':
|
||||||
return
|
return
|
||||||
return super(User, self).delete()
|
return super(User, self).delete()
|
||||||
@ -267,7 +267,7 @@ class User(AbstractUser):
|
|||||||
email=forgery_py.internet.email_address(),
|
email=forgery_py.internet.email_address(),
|
||||||
name=forgery_py.name.full_name(),
|
name=forgery_py.name.full_name(),
|
||||||
password=make_password(forgery_py.lorem_ipsum.word()),
|
password=make_password(forgery_py.lorem_ipsum.word()),
|
||||||
role=choice(dict(User.ROLE_CHOICES).keys()),
|
role=choice(list(dict(User.ROLE_CHOICES).keys())),
|
||||||
wechat=forgery_py.internet.user_name(True),
|
wechat=forgery_py.internet.user_name(True),
|
||||||
comment=forgery_py.lorem_ipsum.sentence(),
|
comment=forgery_py.lorem_ipsum.sentence(),
|
||||||
created_by=choice(cls.objects.all()).username)
|
created_by=choice(cls.objects.all()).username)
|
||||||
|
@ -19,15 +19,15 @@ urlpatterns = [
|
|||||||
url(r'^v1/token/$', api.UserToken.as_view(), name='user-token'),
|
url(r'^v1/token/$', api.UserToken.as_view(), name='user-token'),
|
||||||
url(r'^v1/profile/$', api.UserProfile.as_view(), name='user-profile'),
|
url(r'^v1/profile/$', api.UserProfile.as_view(), name='user-profile'),
|
||||||
url(r'^v1/auth/$', api.UserAuthApi.as_view(), name='user-auth'),
|
url(r'^v1/auth/$', api.UserAuthApi.as_view(), name='user-auth'),
|
||||||
url(r'^v1/users/(?P<pk>\d+)/password/reset/$',
|
url(r'^v1/users/(?P<pk>[0-9a-zA-Z\-]+)/password/reset/$',
|
||||||
api.UserResetPasswordApi.as_view(), name='user-reset-password'),
|
api.UserResetPasswordApi.as_view(), name='user-reset-password'),
|
||||||
url(r'^v1/users/(?P<pk>\d+)/pubkey/reset/$',
|
url(r'^v1/users/(?P<pk>[0-9a-zA-Z\-]+)/pubkey/reset/$',
|
||||||
api.UserResetPKApi.as_view(), name='user-public-key-reset'),
|
api.UserResetPKApi.as_view(), name='user-public-key-reset'),
|
||||||
url(r'^v1/users/(?P<pk>\d+)/pubkey/update/$',
|
url(r'^v1/users/(?P<pk>[0-9a-zA-Z\-]+)/pubkey/update/$',
|
||||||
api.UserUpdatePKApi.as_view(), name='user-public-key-update'),
|
api.UserUpdatePKApi.as_view(), name='user-public-key-update'),
|
||||||
url(r'^v1/users/(?P<pk>\d+)/groups/$',
|
url(r'^v1/users/(?P<pk>[0-9a-zA-Z\-]+)/groups/$',
|
||||||
api.UserUpdateGroupApi.as_view(), name='user-update-group'),
|
api.UserUpdateGroupApi.as_view(), name='user-update-group'),
|
||||||
url(r'^v1/groups/(?P<pk>\d+)/users/$',
|
url(r'^v1/groups/(?P<pk>[0-9a-zA-Z\-]+)/users/$',
|
||||||
api.UserGroupUpdateUserApi.as_view(), name='user-group-update-user'),
|
api.UserGroupUpdateUserApi.as_view(), name='user-group-update-user'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -34,18 +34,18 @@ urlpatterns = [
|
|||||||
|
|
||||||
# User view
|
# User view
|
||||||
url(r'^user$', views.UserListView.as_view(), name='user-list'),
|
url(r'^user$', views.UserListView.as_view(), name='user-list'),
|
||||||
url(r'^user/(?P<pk>[0-9]+)$', views.UserDetailView.as_view(),
|
url(r'^user/(?P<pk>[0-9a-zA-Z\-]+)$', views.UserDetailView.as_view(),
|
||||||
name='user-detail'),
|
name='user-detail'),
|
||||||
url(r'^user/(?P<pk>[0-9]+)/asset-permission$',
|
url(r'^user/(?P<pk>[0-9a-zA-Z\-]+)/asset-permission$',
|
||||||
views.UserAssetPermissionView.as_view(),
|
views.UserAssetPermissionView.as_view(),
|
||||||
name='user-asset-permission'),
|
name='user-asset-permission'),
|
||||||
url(r'^user/(?P<pk>[0-9]+)/asset-permission/create$',
|
url(r'^user/(?P<pk>[0-9a-zA-Z\-]+)/asset-permission/create$',
|
||||||
views.UserAssetPermissionCreateView.as_view(),
|
views.UserAssetPermissionCreateView.as_view(),
|
||||||
name='user-asset-permission-create'),
|
name='user-asset-permission-create'),
|
||||||
url(r'^user/(?P<pk>[0-9]+)/assets',
|
url(r'^user/(?P<pk>[0-9a-zA-Z\-]+)/assets',
|
||||||
views.UserGrantedAssetView.as_view(),
|
views.UserGrantedAssetView.as_view(),
|
||||||
name='user-granted-asset'),
|
name='user-granted-asset'),
|
||||||
url(r'^user/(?P<pk>[0-9]+)/login-history', views.UserDetailView.as_view(),
|
url(r'^user/(?P<pk>[0-9a-zA-Z\-]+)/login-history', views.UserDetailView.as_view(),
|
||||||
name='user-login-history'),
|
name='user-login-history'),
|
||||||
url(r'^user/export/', views.UserExportView.as_view(),
|
url(r'^user/export/', views.UserExportView.as_view(),
|
||||||
name='user-export'),
|
name='user-export'),
|
||||||
@ -55,7 +55,7 @@ urlpatterns = [
|
|||||||
name='user-import'),
|
name='user-import'),
|
||||||
url(r'^user/create$', views.UserCreateView.as_view(),
|
url(r'^user/create$', views.UserCreateView.as_view(),
|
||||||
name='user-create'),
|
name='user-create'),
|
||||||
url(r'^user/(?P<pk>[0-9]+)/update$', views.UserUpdateView.as_view(),
|
url(r'^user/(?P<pk>[0-9a-zA-Z\-]+)/update$', views.UserUpdateView.as_view(),
|
||||||
name='user-update'),
|
name='user-update'),
|
||||||
url(r'^user/update$', views.UserBulkUpdateView.as_view(),
|
url(r'^user/update$', views.UserBulkUpdateView.as_view(),
|
||||||
name='user-bulk-update'),
|
name='user-bulk-update'),
|
||||||
@ -63,19 +63,19 @@ urlpatterns = [
|
|||||||
# User group view
|
# User group view
|
||||||
url(r'^user-group$', views.UserGroupListView.as_view(),
|
url(r'^user-group$', views.UserGroupListView.as_view(),
|
||||||
name='user-group-list'),
|
name='user-group-list'),
|
||||||
url(r'^user-group/(?P<pk>[0-9]+)$', views.UserGroupDetailView.as_view(),
|
url(r'^user-group/(?P<pk>[0-9a-zA-Z\-]+)$', views.UserGroupDetailView.as_view(),
|
||||||
name='user-group-detail'),
|
name='user-group-detail'),
|
||||||
url(r'^user-group/create$', views.UserGroupCreateView.as_view(),
|
url(r'^user-group/create$', views.UserGroupCreateView.as_view(),
|
||||||
name='user-group-create'),
|
name='user-group-create'),
|
||||||
url(r'^user-group/(?P<pk>[0-9]+)/update$', views.UserGroupUpdateView.as_view(),
|
url(r'^user-group/(?P<pk>[0-9a-zA-Z\-]+)/update$', views.UserGroupUpdateView.as_view(),
|
||||||
name='user-group-update'),
|
name='user-group-update'),
|
||||||
url(r'^user-group/(?P<pk>[0-9]+)/asset-permission$',
|
url(r'^user-group/(?P<pk>[0-9a-zA-Z\-]+)/asset-permission$',
|
||||||
views.UserGroupAssetPermissionView.as_view(),
|
views.UserGroupAssetPermissionView.as_view(),
|
||||||
name='user-group-asset-permission'),
|
name='user-group-asset-permission'),
|
||||||
url(r'^user-group/(?P<pk>[0-9]+)/asset-permission/create$',
|
url(r'^user-group/(?P<pk>[0-9a-zA-Z\-]+)/asset-permission/create$',
|
||||||
views.UserGroupAssetPermissionCreateView.as_view(),
|
views.UserGroupAssetPermissionCreateView.as_view(),
|
||||||
name='user-group-asset-permission-create'),
|
name='user-group-asset-permission-create'),
|
||||||
url(r'^user-group/(?P<pk>[0-9]+)/assets',
|
url(r'^user-group/(?P<pk>[0-9a-zA-Z\-]+)/assets',
|
||||||
views.UserGroupGrantedAssetView.as_view(),
|
views.UserGroupGrantedAssetView.as_view(),
|
||||||
name='user-group-granted-asset'),
|
name='user-group-granted-asset'),
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user