Исправлено использование --force

Добавлена поддержка выполнения -sf (если force указан в списке с
однобуквенными параметрами) пересчёт view добавлен с целью исключить
ложное срабатывание например в этой ситуации -soff
master-3.5 3.5.0_alpha3
parent 53172f8a57
commit 5bb3443f5b

@ -13,7 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from calculate.core.server.local_call import Display, Methods from calculate.core.server.local_call import Display, Methods, has_force_arg
from sudsds import WebFault from sudsds import WebFault
from sudsds.transport import TransportError from sudsds.transport import TransportError
@ -276,17 +276,31 @@ def https_server(client, args, unknown_args, url, clVarsCore, wait_thread):
return 1 return 1
elif args.method and args.help: elif args.method and args.help:
view_params = get_view_params(client, args.method + '_view', # вычислить наличие флага --force
step = None, expert = True, try:
onlyhelp = True) dispatch_usenew = has_force_arg(unknown_args)
view = get_view(client, args.method, client.sid, view_params) while True:
wait_thread.stop() view_params = get_view_params(client, args.method + '_view',
sys.stdout.write("\b") step=None, expert=True,
sys.stdout.flush() onlyhelp=True,
method_parser = get_method_argparser(view, args) dispatch_usenew=dispatch_usenew)
method_parser.print_help() view = get_view(client, args.method, client.sid, view_params)
client.service.clear_method_cache(client.sid, args.method) method_parser = get_method_argparser(view, args)
_unknown_args = method_parser.fixBoolVariables(unknown_args)
_args, _unknown_args = method_parser.parse_known_args(_unknown_args)
if dispatch_usenew == _args.no_questions:
method_parser.print_help()
break
else:
client.service.clear_method_cache(client.sid, args.method)
dispatch_usenew = _args.no_questions
finally:
wait_thread.stop()
sys.stdout.write("\b")
sys.stdout.flush()
else: else:
method_result = call_method(client, args, unknown_args, wait_thread) method_result = call_method(client, args, unknown_args, wait_thread)
mr = get_message_receiver(client) mr = get_message_receiver(client)
@ -336,7 +350,6 @@ def main(wait_thread):
sym_link = os.path.basename(sys.argv[0]) sym_link = os.path.basename(sys.argv[0])
if sym_link != 'cl-console': if sym_link != 'cl-console':
import calculate.core.server.loaded_methods as loaded_methods import calculate.core.server.loaded_methods as loaded_methods
from calculate.core.datavars import DataVarsCore
ob = DataVarsCore() ob = DataVarsCore()
ob.importCore() ob.importCore()

@ -13,8 +13,10 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import argparse
import time, os, sys import time, os, sys
import re
import subprocess import subprocess
from OpenSSL import crypto from OpenSSL import crypto
import shlex import shlex
@ -127,12 +129,13 @@ def _create_obj(client, method):
return view_params return view_params
def get_view_params(client, method, step = None, expert = None, brief = None, def get_view_params(client, method, step = None, expert = None, brief = None,
onlyhelp = False): onlyhelp = False, dispatch_usenew = False):
view_params = _create_obj(client, method) view_params = _create_obj(client, method)
view_params.step = step view_params.step = step
view_params.expert = expert view_params.expert = expert
view_params.brief = brief view_params.brief = brief
view_params.onlyhelp = onlyhelp view_params.onlyhelp = onlyhelp
view_params.dispatch_usenew = dispatch_usenew
return view_params return view_params
@ -339,3 +342,4 @@ class MessageDispatcher(object):
def ask_password(self, message): def ask_password(self, message):
answer = self.methods.askPassword(message.message, message.id == 2) answer = self.methods.askPassword(message.message, message.id == 2)
self.parent.send_message(answer) self.parent.send_message(answer)

@ -16,7 +16,7 @@
import argparse, sys import argparse, sys
from calculate.core.server.api_types import ViewInfoAdapter from calculate.core.server.api_types import ViewInfoAdapter
from calculate.core.server.local_call import Methods from calculate.core.server.local_call import Methods, has_force_arg
from function import _create_obj, get_view_params, print_brief, _print from function import _create_obj, get_view_params, print_brief, _print
from calculate.lib.cl_lang import setLocalTranslate from calculate.lib.cl_lang import setLocalTranslate
@ -112,11 +112,37 @@ def get_view(client, method, sid, view_params):
def call_method(client, args, unknown_args, wait_thread): def call_method(client, args, unknown_args, wait_thread):
method = args.method method = args.method
stdin_passwd = args.stdin_passwd stdin_passwd = args.stdin_passwd
view_params = get_view_params(client, method + '_view', step=None, \
expert=True)
view = get_view(client, method, client.sid, view_params) # вычислить наличие флага --force
method_parser = get_method_argparser(view, args) try:
dispatch_usenew = has_force_arg(unknown_args)
except BaseException:
wait_thread.stop()
sys.stdout.write('\r')
sys.stdout.flush()
raise
method_parser = None
view = None
while True:
view_params = get_view_params(client, method + '_view', step=None,
expert=True,
dispatch_usenew=dispatch_usenew)
view = get_view(client, method, client.sid, view_params)
method_parser = get_method_argparser(view, args)
_unknown_args = method_parser.fixBoolVariables(unknown_args)
_args, _drop_args = method_parser.parse_known_args(_unknown_args)
if dispatch_usenew == _args.no_questions:
break
else:
client.service.clear_method_cache(client.sid, args.method)
dispatch_usenew = _args.no_questions
param_object = _create_obj(client, method) param_object = _create_obj(client, method)
try: try:
unknown_args = method_parser.fixBoolVariables(unknown_args) unknown_args = method_parser.fixBoolVariables(unknown_args)
@ -133,7 +159,7 @@ def call_method(client, args, unknown_args, wait_thread):
sys.stdout.flush() sys.stdout.flush()
_print (_('Unknown parameter'), i) _print (_('Unknown parameter'), i)
raise Exception(1) raise Exception(1)
if not view.groups is None: if view.groups is not None:
param_object, steps = collect_object(client, param_object, view, args, param_object, steps = collect_object(client, param_object, view, args,
wait_thread,stdin_passwd=stdin_passwd) wait_thread,stdin_passwd=stdin_passwd)
if steps.label and hasattr (param_object, 'CheckOnly'): if steps.label and hasattr (param_object, 'CheckOnly'):

Loading…
Cancel
Save