From 0a9e4a5e8599cc894b077ccf6d96a9b78f0c561c Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 25 Aug 2016 13:28:02 +0800 Subject: [PATCH] Modify urls.conf: Merge to single --- apps/jumpserver/settings.py | 1 + apps/jumpserver/urls.py | 18 ++++++++---------- apps/users/api_urls.py | 5 +++-- apps/users/models.py | 4 ++-- apps/users/serializers.py | 4 ++++ apps/users/templates/users/usergroup_list.html | 2 +- apps/users/urls.py | 9 +++++++++ apps/users/views.py | 2 +- 8 files changed, 29 insertions(+), 16 deletions(-) diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index 94d3215a6..0692be641 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -182,6 +182,7 @@ WSGI_APPLICATION = 'ws4redis.django_runserver.application' # URL that distinguishes websocket connections from normal requests WEBSOCKET_URL = '/ws/' + # WebSocket Redis WS4REDIS_CONNECTION = { 'host': '127.0.0.1', diff --git a/apps/jumpserver/urls.py b/apps/jumpserver/urls.py index e61c5f37d..eb4f4e80e 100644 --- a/apps/jumpserver/urls.py +++ b/apps/jumpserver/urls.py @@ -20,24 +20,22 @@ from django.views.generic.base import TemplateView from django.http import HttpResponseRedirect -def view(request, **kwargs): - if kwargs: - print kwargs - return HttpResponseRedirect('/' + kwargs["module"] + '/' + kwargs["version"] + '/' + kwargs["api"]) +# def view(request, **kwargs): +# if kwargs: +# print kwargs +# return HttpResponseRedirect('/' + kwargs["module"] + '/' + kwargs["version"] + '/' + kwargs["api"]) urlpatterns = [ url(r'^$', TemplateView.as_view(template_name='base.html')), - url(r'^users/', include('users.urls')), + url(r'^(api/)?users/', include('users.urls')), url(r'^assets/', include('assets.urls')), url(r'^terminal/', include('webterminal.urls')), - # url(r'^api/(?P.*)/(?P.*)/(?P.*)', view), - # url(r'^admin/', admin.site.urls), ] -urlpatterns += [ - url(r'^api/users/', include('users.api_urls')), -] +#urlpatterns += [ +# url(r'^api/users/', include('users.api_urls')), +#] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/apps/users/api_urls.py b/apps/users/api_urls.py index 261fcc458..ec2a715fb 100644 --- a/apps/users/api_urls.py +++ b/apps/users/api_urls.py @@ -4,10 +4,11 @@ from django.conf.urls import url, include import api +app_name = 'users' + urlpatterns = [ url(r'^v1/users/$', api.UserListAddApi.as_view(), name='user-list-api'), url(r'^v1/users/(?P[0-9]+)/$', api.UserDetailDeleteUpdateApi.as_view(), name='user-detail-api'), url(r'^v1/usergroups/$', api.UserGroupListAddApi.as_view(), name='usergroup-list-api'), - url(r'^v1/usergroups/(?P[0-9]+)/$', api.UserGroupDetailDeleteUpdateApi.as_view(), - name='usergroup-detail-api'), + url(r'^v1/usergroups/(?P[0-9]+)/$', api.UserGroupDetailDeleteUpdateApi.as_view(), name='usergroup-detail-api'), ] diff --git a/apps/users/models.py b/apps/users/models.py index 3dc4f5dbb..0269be3bf 100644 --- a/apps/users/models.py +++ b/apps/users/models.py @@ -25,7 +25,7 @@ from django.db import OperationalError # return self.name # # def delete(self, using=None, keep_parents=False): -# if self.user_set.all().count() > 0: +# if self.users.all().count() > 0: # raise OperationalError('Role %s has some member, should not be delete.' % self.name) # else: # return super(Role, self).delete(using=using, keep_parents=keep_parents) @@ -99,7 +99,7 @@ class User(AbstractUser): username = models.CharField(max_length=20, unique=True, verbose_name='用户名') name = models.CharField(max_length=20, blank=True, verbose_name='姓名') email = models.EmailField(max_length=30, unique=True, verbose_name='邮件') - groups = models.ManyToManyField(UserGroup, blank=True, verbose_name='用户组') + groups = models.ManyToManyField(UserGroup, related_name='users', blank=True, verbose_name='用户组') role = models.CharField(choices=ROLE_CHOICES, default='User', max_length=10, blank=True, verbose_name='角色') avatar = models.ImageField(upload_to="avatar", verbose_name='头像') wechat = models.CharField(max_length=30, blank=True, verbose_name='微信') diff --git a/apps/users/serializers.py b/apps/users/serializers.py index 7db537f53..d8218b95c 100644 --- a/apps/users/serializers.py +++ b/apps/users/serializers.py @@ -7,6 +7,8 @@ from .models import User, UserGroup class UserSerializer(serializers.ModelSerializer): + groups = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='users:usergroup-detail-api') + class Meta: model = User exclude = [ @@ -16,6 +18,8 @@ class UserSerializer(serializers.ModelSerializer): class UserGroupSerializer(serializers.ModelSerializer): + users = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='users:user-detail-api') + class Meta: model = UserGroup fields = '__all__' diff --git a/apps/users/templates/users/usergroup_list.html b/apps/users/templates/users/usergroup_list.html index fe0af8ec2..012c04a50 100644 --- a/apps/users/templates/users/usergroup_list.html +++ b/apps/users/templates/users/usergroup_list.html @@ -26,7 +26,7 @@ {{ usergroup.name }} - {{ usergroup.user_set.all|length }} + {{ usergroup.users.all|length }} 数量 {{ usergroup.comment|truncatewords:8 }} diff --git a/apps/users/urls.py b/apps/users/urls.py index 0993d6fe4..f33569ff6 100644 --- a/apps/users/urls.py +++ b/apps/users/urls.py @@ -2,6 +2,7 @@ from django.conf.urls import url from .views import UserListView, UserAddView, UserUpdateView, UserDeleteView, UserDetailView from .views import UserGroupListView, UserGroupAddView, UserGroupUpdateView, UserGroupDeleteView, UserGroupDetailView +import api app_name = 'users' @@ -17,3 +18,11 @@ urlpatterns = [ url(r'^usergroup/(?P[0-9]+)/edit/$', UserGroupUpdateView.as_view(), name='usergroup-edit'), url(r'^usergroup/(?P[0-9]+)/delete/$', UserGroupDeleteView.as_view(), name='usergroup-delete'), ] + + +urlpatterns += [ + url(r'^v1/users/$', api.UserListAddApi.as_view(), name='user-list-api'), + url(r'^v1/users/(?P[0-9]+)/$', api.UserDetailDeleteUpdateApi.as_view(), name='user-detail-api'), + url(r'^v1/usergroups/$', api.UserGroupListAddApi.as_view(), name='usergroup-list-api'), + url(r'^v1/usergroups/(?P[0-9]+)/$', api.UserGroupDetailDeleteUpdateApi.as_view(), name='usergroup-detail-api'), +] diff --git a/apps/users/views.py b/apps/users/views.py index 44d82ad4e..bfb192730 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -147,7 +147,7 @@ class UserGroupAddView(CreateView): users_id_list = self.request.POST.getlist('users', []) users = [get_object_or_404(User, id=user_id) for user_id in users_id_list] usergroup.created_by = self.request.user.username or 'Admin' - usergroup.user_set.add(*tuple(users)) + usergroup.users.add(*tuple(users)) usergroup.save() return super(UserGroupAddView, self).form_valid(form)