Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import paste.fileapp
- import traceback
- import json
- from datetime import datetime, timedelta
- import logging
- log = logging.getLogger(__name__)
- import copy
- import sys
- import os
- # os.environ["NLS_LANG"] = "AMERICAN_AMERICA.UTF8"
- sys.path.append(os.path.join(os.path.expanduser("~"), "bm/config/TimeMonitoring/calendar_views"))
- from viewheader import ViewHeaderSingleton, create_view_header
- from timetrackingconsts import ViewConfig, defaultViewConfig
- from rbs_db.db_functions import get_connection
- from calendar_vacation import getViewData, \
- get_view_configs, \
- update_view_data_config, \
- get_view_interval,\
- apply_if_not_exists
- _CONNECTION_STRING = None
- CONNECTION_STRING = None
- #######################
- # from rbs_db.connection import ConnectionManager
- # ConMgr = ConnectionManager()
- # CONNECTION_STRING = "itron/itron@itron.t48.ru:1521/XE"
- ######################
- #Rabus.ajax.getJson("GET_CALENDAR_DATA", "USER_SKUD", Ext.encode({"FD":"01.01.2015 00:00:00","TD":"31.01.2015 23:59:59", "USER_ID":8006,"SHOW_SUMS": "True","CALENDAR_TYPE":["1","10","11","2","3","4","6","8"],"CALENDAR_TYPE_DISPLAY": ["Рабочее время","Отгул (в счет отпуска)","Нерабочие дни","Отпуск","Болезнь","За свой счет","Прогул","Командировка"],"SUM_CALENDAR_TYPE": ["1","10","2","3","4","6","8","7"],"SUM_CALENDAR_TYPE_DISPLAY": ["Рабочее время","Отгул (в счет отпуска)","Нерабочие дни","Отпуск","Болезнь","За свой счет","Прогул","Командировка"]}))
- _DECODE_SYSTEM = 'cp1251'
- #параметры представлений
- _VIEW_CONFIG = {
- "CALENDAR_VACATION_2": {
- "view_name": "CALENDAR_VACATIN_2",
- "layout": "left_vertical",
- "children_layout": "left_vertical",
- "children_tables": {"parameters": True, "calendars": True},
- "xlsx_file_name": u"Календарь отпусков",
- "tab_title": u"График отпусков/больничных",
- "ONE_TABLE": True
- },
- "USER_SKUD": {
- "view_name": "USER_SKUD",
- "layout": "left_vertical",
- "children_layout": "default",
- "children_tables": {},
- "xlsx_file_name": u"Табель рабочего времени",
- "tab_title": u"Табель рабочего времени",
- "ONE_TABLE": True
- }
- }
- def exec_request(call_name, call_type, call_params, connection_string = _CONNECTION_STRING):
- ##################################
- user_id = call_params.get("USER_ID")
- user_id = user_id[0]
- # conn = ConMgr.get_connection(CONNECTION_STRING)
- # cur = conn.cursor()
- # from pylons import session
- # login = session.get("user")
- # res1 = cur.execute("SELECT ID, NAME FROM OBJ WHERE ID=(SELECT OBJ_ID FROM ATTR WHERE VAL=:LOGIN)", {"LOGIN": str(login.upper())})
- # for i in res1:
- # user_id = i[0]
- #################################
- #def exec_request(call_name, call_type, params):
- # call_params = (json.loads(call_params) if call_params else {})
- call_params_default = copy.deepcopy(call_params)
- ### получение и обновление конфигов для построения
- ### представления
- (view_config, view_data_config) = get_view_configs(call_type, connection_string)
- view_config["connection_string"] = connection_string
- print connection_string
- view_config["_view_name"] = call_type
- # обновление конфига отвечающего за параметры печати и
- # общий вид название вкладки и так далее
- l_view_config = _VIEW_CONFIG.get(call_type)
- l_view_config.update(view_config) # обновление под user_skud
- ## обновление конфига отвечающего
- ## за отображаемые данные
- view_data_config = update_view_data_config(view_data_config, defaultViewConfig) #обновление дефолтных параметров для user_skud
- viewConfig = ViewConfig(**view_data_config)
- viewConfig.update(call_params) # обновление конфига по умолчанию
- viewConfig.update({"VIEW_NAME": call_type}) # обновление имени
- # установка сумм в часах
- # переопределение выполняется если не задано в конфигурации
- hours_calendar_types = viewConfig.get_hours_calendar_types()
- if len(hours_calendar_types) == 0:
- if call_type == "USER_SKUD":
- # для user_skud в часах выводятся календари
- viewConfig.update({"HOURS_CALENDAR_TYPES": viewConfig.get_calendar_type()})
- else:
- viewConfig.update({"HOURS_CALENDAR_TYPES": []})
- (call_params["fd"], call_params["td"]) = get_view_interval(call_params.get("FD"), call_params.get("TD"))
- apply_if_not_exists(call_params, l_view_config)
- print "fd = ", call_params["fd"]
- print "td = ", call_params["td"]
- #для печатной формы не нужно, выводить часть сумм в начале
- #такое требование
- if call_name == "GET_VIEW_XLS":
- viewConfig.set_start_calendar_sums([])
- viewConfig.set_start_calendar_sums_display([])
- viewConfig.set_is_print_mode(True)
- viewheader = create_view_header(call_params, viewConfig)
- #выполнение запроса и получение результата
- if call_name == 'GET_CALENDAR_DATA':
- a = getViewData(call_params, viewConfig) # call_params
- print "a = ", a
- print "user_id = ", user_id
- sums = a._get_sum_for_period(user_id, period="period")
- print sums
- start_sums = a._get_start_sum_for_period(user_id, period="period")
- print start_sums
- sums.extend(start_sums)
- #####
- #dic = {}
- #for el in sums:
- #arr = el
- #dic[arr[1]] = arr[3]
- #print dic
- #####
- # print "sums = ", sums
- return sums
- # return dic
- def is_exec():
- try:
- a = p1
- return True
- except NameError:
- return False
- try:
- if __name__ == "__main__":
- os.environ["NLS_LANG"] = "AMERICAN_AMERICA.UTF8"
- # import base64
- CONNECTION_STRING = "itron/itron@itron.t48.ru:1521/XE"
- # CONNECTION_STRING = base64.decodestring("aXRyb240L2l0cm9uNEBkZXYudDQ4LnJ1OjE1MjEveGU=")
- from test_lk_timetable import params_d
- defaultParams = params_d # заменила с {} на params
- params_d["USER_ID"] = [7419]
- params_d["FD"] = "01.01.2015 00:00:00"
- params_d["TD"] = "31.01.2015 00:00:00"
- result = exec_request("GET_CALENDAR_DATA", "USER_SKUD", defaultParams, CONNECTION_STRING)
- elif is_exec():
- (call_name, call_type, call_params) = (p1, p2, p3)
- if call_name != "GET_CALENDAR_DATA":
- raise Exception(u"Недопустимый тип вызова %s " % (call_name))
- if call_type == "USER_SKUD":
- call_params = json.loads(p3)
- retval = exec_request("GET_CALENDAR_DATA", "USER_SKUD", call_params)
- print "retval = ", retval
- else:
- raise Exception(u"Не поддерживаемая операция %s " % (call_type))
- except Exception as e:
- log.exception(e)
- retval = {'retval': 'error', 'msg': traceback.format_exc(e)}
- print traceback.format_exc(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement