#-*- coding: utf-8 -*-

# Copyright 2012-2013 Calculate Ltd. http://www.calculate-linux.org
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
import  sys, time, os

from calculate.lib.datavars import VariableError,DataVarsError,DataVars
from calculate.core.server.func import WsdlBase
from desktop import DesktopError
from utils.cl_desktop import ClDesktopLogoutAction,ClDesktopAction
import desktop

from calculate.lib.cl_lang import setLocalTranslate,getLazyLocalTranslate
setLocalTranslate('cl_desktop3',sys.modules[__name__])
__ = getLazyLocalTranslate(_)


class Wsdl(WsdlBase):
    methods = [
        #
        # вывести пользователя из сеанса
        #
        {
        # идентификатор метода
        'method_name':"desktop_logout",
        # категория метода
        'category':__('Desktop'),
        # заголовок метода 
        'title':__("User Logout"),
        # иконка для графической консоли
        'image':'system-log-out',
        # метод присутствует в графической консоли
        'gui':True,
        # консольная команда
        'command':'cl-desktop-logout',
        # права для запуска метода 
        'rights':['userconfigure'],
        # объект содержащий модули для действия
        'logic':{'Desktop':desktop.Desktop},
        # описание действия
        'action':ClDesktopLogoutAction,
        # объект переменных
        'datavars':"desktop",
        'native_error':(VariableError,DataVarsError,
                        DesktopError),
        # значения по умолчанию для переменных этого метода
        'setvars':{'cl_action!':'logout'},
        # описание груп (список лямбда функций)
        'groups':[
            lambda group:group(_("User logout"),
                normal=('cl_desktop_login',),
                next_label=_("Perform"))]},
        #
        # настроить пользовательский сеанс
        #
        {
        # идентификатор метода
        'method_name':"desktop",
        # категория метода
        'category':__('Desktop'),
        # заголовок метода 
        'title':__("Configure User"),
        # иконка для графической консоли
        'image':'user-desktop,preferences-desktop',
        # метод присутствует в графической консоли
        'gui':True,
        # консольная команда
        'command':'cl-desktop',
        # права для запуска метода 
        'rights':['userconfigure'],
        # объект содержащий модули для действия
        'logic':{'Desktop':desktop.Desktop},
        # описание действия
        'action':ClDesktopAction,
        # объект переменных
        'datavars':"desktop",
        'native_error':(VariableError,DataVarsError,
                        DesktopError),
        # значения по умолчанию для переменных этого метода
        'setvars':{'cl_action!':'desktop',
                       'cl_protect_use_set!':'off'},
        # описание груп (список лямбда функций)
        'groups':[
            lambda group:group(_("Configure user"),
                normal=('ur_login',),
                expert=('cl_desktop_force_setup_set','cl_verbose_set',
                        'cl_templates_locate'),
                next_label=_("Perform"))]},
        ]
