Commit 8afd5ef9 authored by ibuler's avatar ibuler

[Merge] 修改一下bug

parent 2f395794
...@@ -31,7 +31,7 @@ schema_view = get_schema_view( ...@@ -31,7 +31,7 @@ schema_view = get_schema_view(
public=True, public=True,
permission_classes=(permissions.AllowAny,), permission_classes=(permissions.AllowAny,),
) )
api_url_pattern = re.compile(r'^/api/(?P<app>\w+)/(?P<version>\w+)/(?P<extra>.*)$') api_url_pattern = re.compile(r'^/api/(?P<version>\w+)/(?P<app>\w+)/(?P<extra>.*)$')
class HttpResponseTemporaryRedirect(HttpResponse): class HttpResponseTemporaryRedirect(HttpResponse):
...@@ -43,12 +43,12 @@ class HttpResponseTemporaryRedirect(HttpResponse): ...@@ -43,12 +43,12 @@ class HttpResponseTemporaryRedirect(HttpResponse):
@csrf_exempt @csrf_exempt
def redirect_old_format_api(request, *args, **kwargs): def redirect_format_api(request, *args, **kwargs):
path, query = request.path, request.GET.urlencode() path, query = request.path, request.GET.urlencode()
matched = api_url_pattern.match(path) matched = api_url_pattern.match(path)
if matched: if matched:
app, version, extra = matched.groups() version, app, extra = matched.groups()
path = '/api/{version}/{app}/{extra}?{query}'.format(**{ path = '/api/{app}/{version}/{extra}?{query}'.format(**{
"app": app, "version": version, "extra": extra, "app": app, "version": version, "extra": extra,
"query": query "query": query
}) })
...@@ -58,14 +58,14 @@ def redirect_old_format_api(request, *args, **kwargs): ...@@ -58,14 +58,14 @@ def redirect_old_format_api(request, *args, **kwargs):
v1_api_patterns = [ v1_api_patterns = [
url(r'^users/', include('users.urls.api_urls', namespace='api-users')), url(r'^users/v1/', include('users.urls.api_urls', namespace='api-users')),
url(r'^assets/', include('assets.urls.api_urls', namespace='api-assets')), url(r'^assets/v1/', include('assets.urls.api_urls', namespace='api-assets')),
url(r'^perms/', include('perms.urls.api_urls', namespace='api-perms')), url(r'^perms/v1/', include('perms.urls.api_urls', namespace='api-perms')),
url(r'^terminal/', include('terminal.urls.api_urls', namespace='api-terminal')), url(r'^terminal/v1/', include('terminal.urls.api_urls', namespace='api-terminal')),
url(r'^ops/', include('ops.urls.api_urls', namespace='api-ops')), url(r'^ops/v1/', include('ops.urls.api_urls', namespace='api-ops')),
url(r'^audits/', include('audits.urls.api_urls', namespace='api-audits')), url(r'^audits/v1/', include('audits.urls.api_urls', namespace='api-audits')),
url(r'^orgs/', include('orgs.urls.api_urls', namespace='api-orgs')), url(r'^orgs/v1/', include('orgs.urls.api_urls', namespace='api-orgs')),
url(r'^common/', include('common.urls.api_urls', namespace='api-common')), url(r'^common/v1/', include('common.urls.api_urls', namespace='api-common')),
] ]
app_view_patterns = [ app_view_patterns = [
...@@ -84,17 +84,14 @@ urlpatterns = [ ...@@ -84,17 +84,14 @@ urlpatterns = [
url(r'^luna/', LunaView.as_view(), name='luna-error'), url(r'^luna/', LunaView.as_view(), name='luna-error'),
url(r'^settings/', include('common.urls.view_urls', namespace='settings')), url(r'^settings/', include('common.urls.view_urls', namespace='settings')),
url(r'^common/', include('common.urls.view_urls', namespace='common')), url(r'^common/', include('common.urls.view_urls', namespace='common')),
url(r'^api/v1/', include(v1_api_patterns)), url(r'^api/v1/.*', redirect_format_api),
url(r'^api/(?P<app>.*)/v1/.*', redirect_old_format_api), url(r'^api/', include(v1_api_patterns)),
# Api url view map # Api url view map
# External apps url # External apps url
url(r'^captcha/', include('captcha.urls')), url(r'^captcha/', include('captcha.urls')),
] ]
urlpatterns += app_view_patterns urlpatterns += app_view_patterns
# urlpatterns = wrapper_patterns_with_org(urlpatterns)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
......
...@@ -22,7 +22,7 @@ class IndexView(AdminUserRequiredMixin, TemplateView): ...@@ -22,7 +22,7 @@ class IndexView(AdminUserRequiredMixin, TemplateView):
session_month_dates_archive = [] session_month_dates_archive = []
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
if not request.user.is_org_admin: if not request.user.is_authenticated or not request.user.is_org_admin:
return redirect('assets:user-asset-list') return redirect('assets:user-asset-list')
return super(IndexView, self).dispatch(request, *args, **kwargs) return super(IndexView, self).dispatch(request, *args, **kwargs)
......
...@@ -10,14 +10,15 @@ from django.forms import ModelForm ...@@ -10,14 +10,15 @@ from django.forms import ModelForm
from django.http.response import HttpResponseForbidden from django.http.response import HttpResponseForbidden
from common.utils import get_logger from common.utils import get_logger
from .utils import current_org, set_current_org from .utils import current_org, set_current_org, set_to_root_org
from .models import Organization from .models import Organization
logger = get_logger(__file__) logger = get_logger(__file__)
tl = local() tl = local()
__all__ = [ __all__ = [
'OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin', 'OrgModelForm' 'OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin', 'OrgModelForm',
'RootOrgViewMixin',
] ]
...@@ -85,6 +86,12 @@ class OrgViewGenericMixin: ...@@ -85,6 +86,12 @@ class OrgViewGenericMixin:
return super().dispatch(request, *args, **kwargs) return super().dispatch(request, *args, **kwargs)
class RootOrgViewMixin:
def dispatch(self, request, *args, **kwargs):
set_to_root_org()
return super().dispatch(request, *args, **kwargs)
class OrgModelForm(ModelForm): class OrgModelForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
......
...@@ -9,6 +9,7 @@ from rest_framework.pagination import LimitOffsetPagination ...@@ -9,6 +9,7 @@ from rest_framework.pagination import LimitOffsetPagination
from common.utils import set_or_append_attr_bulk, get_object_or_none from common.utils import set_or_append_attr_bulk, get_object_or_none
from common.permissions import IsValidUser, IsOrgAdmin, IsOrgAdminOrAppUser from common.permissions import IsValidUser, IsOrgAdmin, IsOrgAdminOrAppUser
from orgs.mixins import RootOrgViewMixin
from .utils import AssetPermissionUtil from .utils import AssetPermissionUtil
from .models import AssetPermission from .models import AssetPermission
from .hands import AssetGrantedSerializer, User, UserGroup, Asset, Node, \ from .hands import AssetGrantedSerializer, User, UserGroup, Asset, Node, \
...@@ -86,7 +87,7 @@ class UserGrantedAssetsApi(ListAPIView): ...@@ -86,7 +87,7 @@ class UserGrantedAssetsApi(ListAPIView):
return super().get_permissions() return super().get_permissions()
class UserGrantedNodesApi(ListAPIView): class UserGrantedNodesApi(RootOrgViewMixin, ListAPIView):
permission_classes = (IsOrgAdmin,) permission_classes = (IsOrgAdmin,)
serializer_class = NodeSerializer serializer_class = NodeSerializer
...@@ -101,13 +102,12 @@ class UserGrantedNodesApi(ListAPIView): ...@@ -101,13 +102,12 @@ class UserGrantedNodesApi(ListAPIView):
return nodes.keys() return nodes.keys()
def get_permissions(self): def get_permissions(self):
set_current_org(Organization.root())
if self.kwargs.get('pk') is None: if self.kwargs.get('pk') is None:
self.permission_classes = (IsValidUser,) self.permission_classes = (IsValidUser,)
return super().get_permissions() return super().get_permissions()
class UserGrantedNodesWithAssetsApi(ListAPIView): class UserGrantedNodesWithAssetsApi(RootOrgViewMixin, ListAPIView):
permission_classes = (IsOrgAdminOrAppUser,) permission_classes = (IsOrgAdminOrAppUser,)
serializer_class = NodeGrantedSerializer serializer_class = NodeGrantedSerializer
...@@ -131,13 +131,12 @@ class UserGrantedNodesWithAssetsApi(ListAPIView): ...@@ -131,13 +131,12 @@ class UserGrantedNodesWithAssetsApi(ListAPIView):
return queryset return queryset
def get_permissions(self): def get_permissions(self):
set_current_org(Organization.root())
if self.kwargs.get('pk') is None: if self.kwargs.get('pk') is None:
self.permission_classes = (IsValidUser,) self.permission_classes = (IsValidUser,)
return super().get_permissions() return super().get_permissions()
class UserGrantedNodeAssetsApi(ListAPIView): class UserGrantedNodeAssetsApi(RootOrgViewMixin, ListAPIView):
permission_classes = (IsOrgAdminOrAppUser,) permission_classes = (IsOrgAdminOrAppUser,)
serializer_class = AssetGrantedSerializer serializer_class = AssetGrantedSerializer
...@@ -158,7 +157,6 @@ class UserGrantedNodeAssetsApi(ListAPIView): ...@@ -158,7 +157,6 @@ class UserGrantedNodeAssetsApi(ListAPIView):
return assets return assets
def get_permissions(self): def get_permissions(self):
set_current_org(Organization.root())
if self.kwargs.get('pk') is None: if self.kwargs.get('pk') is None:
self.permission_classes = (IsValidUser,) self.permission_classes = (IsValidUser,)
return super().get_permissions() return super().get_permissions()
...@@ -241,7 +239,7 @@ class UserGroupGrantedNodeAssetsApi(ListAPIView): ...@@ -241,7 +239,7 @@ class UserGroupGrantedNodeAssetsApi(ListAPIView):
return assets return assets
class ValidateUserAssetPermissionView(APIView): class ValidateUserAssetPermissionView(RootOrgViewMixin, APIView):
permission_classes = (IsOrgAdminOrAppUser,) permission_classes = (IsOrgAdminOrAppUser,)
@staticmethod @staticmethod
......
...@@ -29,8 +29,7 @@ class AssetPermissionForm(OrgModelForm): ...@@ -29,8 +29,7 @@ class AssetPermissionForm(OrgModelForm):
return return
users_field = self.fields.get('users') users_field = self.fields.get('users')
if hasattr(users_field, 'queryset'): if hasattr(users_field, 'queryset'):
# users_field.queryset = User.objects.filter(orgs=current_org) users_field.queryset = current_org.get_org_users()
users_field.queryset = current_org.get_org_users().exclude(role=User.ROLE_APP)
class Meta: class Meta:
model = AssetPermission model = AssetPermission
......
...@@ -25,7 +25,7 @@ class AssetPermissionManager(OrgManager): ...@@ -25,7 +25,7 @@ class AssetPermissionManager(OrgManager):
class AssetPermission(OrgModelMixin): class AssetPermission(OrgModelMixin):
id = models.UUIDField(default=uuid.uuid4, primary_key=True) 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, verbose_name=_('Name'))
users = models.ManyToManyField('users.User', related_name='asset_permissions', blank=True, verbose_name=_("User")) users = models.ManyToManyField('users.User', related_name='asset_permissions', blank=True, verbose_name=_("User"))
user_groups = models.ManyToManyField('users.UserGroup', related_name='asset_permissions', blank=True, verbose_name=_("User group")) user_groups = models.ManyToManyField('users.UserGroup', related_name='asset_permissions', blank=True, verbose_name=_("User group"))
assets = models.ManyToManyField('assets.Asset', related_name='granted_by_permissions', blank=True, verbose_name=_("Asset")) assets = models.ManyToManyField('assets.Asset', related_name='granted_by_permissions', blank=True, verbose_name=_("Asset"))
...@@ -40,6 +40,9 @@ class AssetPermission(OrgModelMixin): ...@@ -40,6 +40,9 @@ class AssetPermission(OrgModelMixin):
objects = AssetPermissionManager.from_queryset(AssetPermissionQuerySet)() objects = AssetPermissionManager.from_queryset(AssetPermissionQuerySet)()
class Meta:
unique_together = [('org_id', 'name')]
def __str__(self): def __str__(self):
return self.name return self.name
......
...@@ -250,12 +250,10 @@ function initTree() { ...@@ -250,12 +250,10 @@ function initTree() {
value["iconSkin"] = value["is_node"] ? null : 'file'; value["iconSkin"] = value["is_node"] ? null : 'file';
}); });
zNodes = data; zNodes = data;
{#$.fn.zTree.init($("#assetTree"), setting);#}
$.fn.zTree.init($("#assetTree"), setting, zNodes); $.fn.zTree.init($("#assetTree"), setting, zNodes);
zTree = $.fn.zTree.getZTreeObj("assetTree"); zTree = $.fn.zTree.getZTreeObj("assetTree");
var root = zTree.getNodes()[0]; var root = zTree.getNodes()[0];
zTree.expandNode(root); zTree.expandNode(root);
{#selectQueryNode();#}
}); });
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
from __future__ import unicode_literals, absolute_import from __future__ import unicode_literals, absolute_import
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.views.generic import ListView, CreateView, UpdateView, DetailView from django.views.generic import ListView, CreateView, UpdateView, DetailView, TemplateView
from django.views.generic.edit import DeleteView, SingleObjectMixin from django.views.generic.edit import DeleteView, SingleObjectMixin
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.conf import settings from django.conf import settings
...@@ -15,11 +15,8 @@ from .models import AssetPermission ...@@ -15,11 +15,8 @@ from .models import AssetPermission
from .forms import AssetPermissionForm from .forms import AssetPermissionForm
class AssetPermissionListView(AdminUserRequiredMixin, ListView): class AssetPermissionListView(AdminUserRequiredMixin, TemplateView):
model = AssetPermission
template_name = 'perms/asset_permission_list.html' template_name = 'perms/asset_permission_list.html'
paginate_by = settings.DISPLAY_PER_PAGE
user = user_group = asset = node = system_user = q = ""
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = { context = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment