mirror of https://github.com/jumpserver/jumpserver
				
				
				
			initial sudo views
							parent
							
								
									d9278c2c24
								
							
						
					
					
						commit
						82412831d5
					
				|  | @ -0,0 +1,14 @@ | |||
| """ | ||||
|     jumpserver.__app__.hands.py | ||||
|     ~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
|     This app depends other apps api, function .. should be import or write mack here. | ||||
| 
 | ||||
|     Other module of this app shouldn't connect with other app. | ||||
| 
 | ||||
|     :copyright: (c) 2014-2016 by Jumpserver Team. | ||||
|     :license: GPL v2, see LICENSE for more details. | ||||
| """ | ||||
| 
 | ||||
| 
 | ||||
| from users.utils import AdminUserRequiredMixin | ||||
|  | @ -334,7 +334,7 @@ class Sudo(models.Model): | |||
|                    "Host_Alias": self.hosts, | ||||
|                    "Runas_Alias": self.runas, | ||||
|                    "Extra_Lines": self.extras, | ||||
|                    "privileges": self.privileges} | ||||
|                    "Privileges": self.privileges} | ||||
|         return template.render(context) | ||||
| 
 | ||||
|     @property | ||||
|  | @ -392,7 +392,7 @@ root    ALL=(ALL:ALL) ALL | |||
| # JumpServer Generate User privilege is here. | ||||
| # Note privileges is a tuple list like [(user, host, runas, command, nopassword),] | ||||
| {% if privileges -%} | ||||
| {% for User_Flag, Host_Flag, Runas_Flag, Command_Flag, NopassWord in privileges -%} | ||||
| {% for User_Flag, Host_Flag, Runas_Flag, Command_Flag, NopassWord in Privileges -%} | ||||
| {% if NopassWord -%} | ||||
| {{ User_Flag }} {{ Host_Flag }}=({{ Runas_Flag }}) NOPASSWD: {{ Command_Flag }} | ||||
| {%- else -%} | ||||
|  |  | |||
|  | @ -1,2 +1,41 @@ | |||
| # ~*~ coding: utf-8 ~*~ | ||||
| # | ||||
| 
 | ||||
| 
 | ||||
| class CreateHostAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class CreateUserAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class CreateCmdAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class CreateRunasAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class CreateExtralineAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class UpdateHostAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class UpdateUserAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class UpdateCmdAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class UpdateRunasAliasMinxin(object): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class UpdateExtralineAliasMinxin(object): | ||||
|     pass | ||||
|  | @ -1,3 +1,121 @@ | |||
| from django.shortcuts import render | ||||
| # ~*~ coding: utf-8 ~*~ | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| # Create your views here. | ||||
| from django.conf import settings | ||||
| from django.views.generic.list import ListView, MultipleObjectMixin | ||||
| from django.views.generic.edit import CreateView, DeleteView, UpdateView | ||||
| from django.views.generic.detail import DetailView, SingleObjectMixin | ||||
| 
 | ||||
| from .hands import AdminUserRequiredMixin | ||||
| from .utils import * | ||||
| 
 | ||||
| 
 | ||||
| class SudoListView(AdminUserRequiredMixin, ListView): | ||||
|     paginate_by = settings.CONFIG.DISPLAY_PER_PAGE | ||||
|     model = Asset | ||||
|     context_object_name = 'asset_list' | ||||
|     template_name = 'assets/asset_list.html' | ||||
| 
 | ||||
|     def get_queryset(self): | ||||
|         queryset = super(AssetListView, self).get_queryset() | ||||
|         queryset = sorted(queryset, key=self.sorted_by_valid_and_ip) | ||||
|         return queryset | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def sorted_by_valid_and_ip(asset): | ||||
|         ip_list = int_seq(asset.ip.split('.')) | ||||
|         ip_list.insert(0, asset.is_valid()[0]) | ||||
|         return ip_list | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = { | ||||
|             'app': 'Assets', | ||||
|             'action': 'asset list', | ||||
|             'tag_list': [(i.id,i.name,i.asset_set.all().count())for i in Tag.objects.all().order_by('name')] | ||||
| 
 | ||||
|         } | ||||
|         kwargs.update(context) | ||||
|         return super(AssetListView, self).get_context_data(**kwargs) | ||||
| 
 | ||||
| 
 | ||||
| class SudoCreateView(AdminUserRequiredMixin, | ||||
|                      CreateHostAliasMinxin, | ||||
|                      CreateUserAliasMinxin, | ||||
|                      CreateCmdAliasMinxin, | ||||
|                      CreateRunasAliasMinxin, | ||||
|                      CreateExtralineAliasMinxin, | ||||
|                      CreateView): | ||||
|     model = Asset | ||||
|     tag_type = 'asset' | ||||
|     form_class = AssetCreateForm | ||||
|     template_name = 'assets/asset_create.html' | ||||
|     success_url = reverse_lazy('assets:asset-list') | ||||
| 
 | ||||
|     def form_valid(self, form): | ||||
|         asset = form.save() | ||||
|         asset.created_by = self.request.user.username or 'Admin' | ||||
|         asset.save() | ||||
|         return super(AssetCreateView, self).form_valid(form) | ||||
| 
 | ||||
|     def form_invalid(self, form): | ||||
|         print(form.errors) | ||||
|         return super(AssetCreateView, self).form_invalid(form) | ||||
| 
 | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = { | ||||
|             'app': 'Assets', | ||||
|             'action': 'Create asset', | ||||
|         } | ||||
|         kwargs.update(context) | ||||
| 
 | ||||
|         return super(AssetCreateView, self).get_context_data(**kwargs) | ||||
| 
 | ||||
| 
 | ||||
| class SudoUpdateView(AdminUserRequiredMixin, | ||||
|                      UpdateHostAliasMinxin, | ||||
|                      UpdateUserAliasMinxin, | ||||
|                      UpdateCmdAliasMinxin, | ||||
|                      UpdateRunasAliasMinxin, | ||||
|                      UpdateExtralineAliasMinxin, | ||||
|                      UpdateView): | ||||
|     model = Asset | ||||
|     form_class = AssetCreateForm | ||||
|     template_name = 'assets/asset_update.html' | ||||
|     success_url = reverse_lazy('assets:asset-list') | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = { | ||||
|             'app': 'Assets', | ||||
|             'action': 'Update asset', | ||||
|         } | ||||
|         kwargs.update(context) | ||||
|         return super(AssetUpdateView, self).get_context_data(**kwargs) | ||||
| 
 | ||||
|     def form_invalid(self, form): | ||||
|         print(form.errors) | ||||
|         return super(AssetUpdateView, self).form_invalid(form) | ||||
| 
 | ||||
| 
 | ||||
| class SudoDeleteView(DeleteView): | ||||
|     model = Asset | ||||
|     template_name = 'assets/delete_confirm.html' | ||||
|     success_url = reverse_lazy('assets:asset-list') | ||||
| 
 | ||||
| 
 | ||||
| class SudoDetailView(DetailView): | ||||
|     model = Asset | ||||
|     context_object_name = 'asset' | ||||
|     template_name = 'assets/asset_detail.html' | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         asset_groups = self.object.groups.all() | ||||
|         context = { | ||||
|             'app': 'Assets', | ||||
|             'action': 'Asset detail', | ||||
|             'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all() | ||||
|                                    if asset_group not in asset_groups], | ||||
|             'asset_groups': asset_groups, | ||||
|         } | ||||
|         kwargs.update(context) | ||||
|         return super(AssetDetailView, self).get_context_data(**kwargs) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Administrator
						Administrator