• BaiJiangJie's avatar
    [Feature] 添加功能 RemoteApp (#2706) · 1eca5179
    BaiJiangJie authored
    * [Feature] RemoteApp添加Model
    
    * [Feature] RemoteApp添加ViewSet API
    
    * [Feature] RemoteApp添加获取connection-info API
    
    * [Feature] Perms模块修改目录结构
    
    * [Feature] RemoteAppPermission添加Model
    
    * [Feature] RemoteAppPermission添加ViewSet API
    
    * [Feature] RemoteAppPermission添加用户/用户组获取被授权的RemoteApp API
    
    * [Feature] RemoteAppPermission添加校验用户对RemoteApp的权限 API
    
    * [Feature] RemoteAppPermission添加获取用户授权的RemoteApp树 API
    
    * [Feature] RemoteAppPermission添加<添加/移除>所授权的<用户/RemoteApp> API
    
    * [Feature] RemoteApp添加创建、更新、详情、删除、用户RemoteApp等页面
    
    * [Feature] RemoteAppPermission添加创建、更新、详情、删除、授权用户、授权RemoteApp等页面
    
    * [Feature] RemoteApp从assets模块迁移到新添加的applications模块
    
    * [Feature] RemoteApp/RemoteAppPermission添加迁移文件
    
    * [Feature] RemoteApp/RemoteAppPermission修改小细节
    
    * [Feature] RemoteApp/RemoteAppPermission修改小细节2
    
    * [Feature] RemoteApp/RemoteAppPermission修改小细节3
    
    * [Feature] RemoteApp更新迁移文件
    
    * [Feature] RemoteApp/RemoteAppPermission添加翻译信息
    
    * [Feature] RemoteApp/RemoteAppPermission删除迁移文件
    
    * [Feature] RemoteApp/RemoteAppPermission添加迁移文件
    
    * [Feature] RemoteApp/RemoteAppPermission修改代码风格
    1eca5179
remote_app.py 3.07 KB
#  coding: utf-8
#

from django.utils.translation import ugettext as _
from django.views.generic import TemplateView
from django.views.generic.edit import CreateView, UpdateView
from django.views.generic.detail import DetailView
from django.contrib.messages.views import SuccessMessageMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy


from common.permissions import AdminUserRequiredMixin
from common.const import create_success_msg, update_success_msg

from ..models import RemoteApp
from .. import forms


__all__ = [
    'RemoteAppListView', 'RemoteAppCreateView', 'RemoteAppUpdateView',
    'RemoteAppDetailView', 'UserRemoteAppListView',
]


class RemoteAppListView(AdminUserRequiredMixin, TemplateView):
    template_name = 'applications/remote_app_list.html'

    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('RemoteApp list'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)


class RemoteAppCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
    template_name = 'applications/remote_app_create_update.html'
    model = RemoteApp
    form_class = forms.RemoteAppCreateUpdateForm
    success_url = reverse_lazy('applications:remote-app-list')

    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('Create RemoteApp'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

    def get_success_message(self, cleaned_data):
        return create_success_msg % ({'name': cleaned_data['name']})


class RemoteAppUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, UpdateView):
    template_name = 'applications/remote_app_create_update.html'
    model = RemoteApp
    form_class = forms.RemoteAppCreateUpdateForm
    success_url = reverse_lazy('applications:remote-app-list')

    def get_initial(self):
        return {k: v for k, v in self.object.params.items()}

    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('Update RemoteApp'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

    def get_success_message(self, cleaned_data):
        return update_success_msg % ({'name': cleaned_data['name']})


class RemoteAppDetailView(AdminUserRequiredMixin, DetailView):
    template_name = 'applications/remote_app_detail.html'
    model = RemoteApp
    context_object_name = 'remote_app'

    def get_context_data(self, **kwargs):
        context = {
            'app': _('Assets'),
            'action': _('RemoteApp detail'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)


class UserRemoteAppListView(LoginRequiredMixin, TemplateView):
    template_name = 'applications/user_remote_app_list.html'

    def get_context_data(self, **kwargs):
        context = {
            'action': _('My RemoteApp'),
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)