Advertisement
Guest User

exec

a guest
Jan 29th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.74 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import paste.fileapp
  3. import traceback
  4. import json
  5. from datetime import datetime, timedelta
  6. import logging
  7. log = logging.getLogger(__name__)
  8. import copy
  9. import sys
  10. import os
  11.  
  12. # os.environ["NLS_LANG"] = "AMERICAN_AMERICA.UTF8"
  13. sys.path.append(os.path.join(os.path.expanduser("~"), "bm/config/TimeMonitoring/calendar_views"))
  14.  
  15. from viewheader import ViewHeaderSingleton, create_view_header
  16. from timetrackingconsts import ViewConfig, defaultViewConfig
  17. from rbs_db.db_functions import get_connection
  18. from calendar_vacation import getViewData, \
  19.      get_view_configs, \
  20.      update_view_data_config, \
  21.      get_view_interval,\
  22.      apply_if_not_exists
  23.  
  24. _CONNECTION_STRING = None
  25. CONNECTION_STRING = None
  26.  
  27. #######################
  28. # from rbs_db.connection import ConnectionManager
  29. # ConMgr = ConnectionManager()
  30. # CONNECTION_STRING = "itron/itron@itron.t48.ru:1521/XE"
  31. ######################
  32.  
  33. #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": ["Рабочее время","Отгул (в счет отпуска)","Нерабочие дни","Отпуск","Болезнь","За свой счет","Прогул","Командировка"]}))
  34.  
  35. _DECODE_SYSTEM = 'cp1251'
  36.  
  37. #параметры представлений
  38. _VIEW_CONFIG = {
  39.         "CALENDAR_VACATION_2": {
  40.             "view_name": "CALENDAR_VACATIN_2",
  41.             "layout": "left_vertical",
  42.             "children_layout": "left_vertical",
  43.             "children_tables": {"parameters": True, "calendars": True},
  44.             "xlsx_file_name": u"Календарь отпусков",
  45.             "tab_title": u"График отпусков/больничных",
  46.             "ONE_TABLE": True
  47.             },
  48.         "USER_SKUD": {
  49.             "view_name": "USER_SKUD",
  50.             "layout": "left_vertical",
  51.             "children_layout": "default",
  52.             "children_tables": {},
  53.             "xlsx_file_name": u"Табель рабочего времени",
  54.             "tab_title": u"Табель рабочего времени",
  55.             "ONE_TABLE": True
  56.         }
  57. }
  58.  
  59.  
  60. def exec_request(call_name, call_type, call_params, connection_string = _CONNECTION_STRING):
  61.     ##################################
  62.     user_id = call_params.get("USER_ID")
  63.     user_id = user_id[0]
  64.    
  65.     # conn = ConMgr.get_connection(CONNECTION_STRING)
  66.     # cur = conn.cursor()
  67.     # from pylons import session
  68.     # login = session.get("user")
  69.     # res1 = cur.execute("SELECT ID, NAME FROM OBJ WHERE ID=(SELECT OBJ_ID FROM ATTR WHERE VAL=:LOGIN)", {"LOGIN": str(login.upper())})
  70.     # for i in res1:
  71.     #     user_id = i[0]
  72.     #################################
  73.  
  74.  
  75. #def exec_request(call_name, call_type, params):
  76.    
  77. #    call_params = (json.loads(call_params) if call_params else {})
  78.  
  79.  
  80.     call_params_default = copy.deepcopy(call_params)
  81.    
  82.    
  83.     ### получение и обновление конфигов для построения
  84.     ### представления
  85.     (view_config, view_data_config) = get_view_configs(call_type, connection_string)
  86.     view_config["connection_string"] = connection_string
  87.     print connection_string
  88.     view_config["_view_name"] = call_type
  89.  
  90.     # обновление конфига отвечающего за параметры печати и
  91.     # общий вид название вкладки и так далее
  92.     l_view_config = _VIEW_CONFIG.get(call_type)
  93.     l_view_config.update(view_config)  # обновление под user_skud
  94.  
  95.     ## обновление конфига отвечающего
  96.     ## за отображаемые данные
  97.     view_data_config = update_view_data_config(view_data_config, defaultViewConfig)  #обновление дефолтных параметров для user_skud
  98.  
  99.     viewConfig = ViewConfig(**view_data_config)
  100.     viewConfig.update(call_params)  # обновление конфига по умолчанию
  101.     viewConfig.update({"VIEW_NAME": call_type})  # обновление имени
  102.  
  103.     # установка сумм в часах
  104.     # переопределение выполняется если не задано в конфигурации
  105.     hours_calendar_types = viewConfig.get_hours_calendar_types()
  106.     if len(hours_calendar_types) == 0:
  107.         if call_type == "USER_SKUD":
  108.             # для user_skud в часах выводятся календари
  109.             viewConfig.update({"HOURS_CALENDAR_TYPES": viewConfig.get_calendar_type()})
  110.         else:
  111.             viewConfig.update({"HOURS_CALENDAR_TYPES": []})
  112.  
  113.     (call_params["fd"], call_params["td"]) = get_view_interval(call_params.get("FD"), call_params.get("TD"))
  114.  
  115.     apply_if_not_exists(call_params, l_view_config)
  116.  
  117.     print "fd = ", call_params["fd"]
  118.     print "td = ", call_params["td"]
  119.  
  120.     #для печатной формы не нужно, выводить часть сумм в начале
  121.     #такое требование
  122.     if call_name == "GET_VIEW_XLS":
  123.         viewConfig.set_start_calendar_sums([])
  124.         viewConfig.set_start_calendar_sums_display([])
  125.         viewConfig.set_is_print_mode(True)
  126.  
  127.     viewheader = create_view_header(call_params, viewConfig)
  128.  
  129.     #выполнение запроса и получение результата
  130.     if call_name == 'GET_CALENDAR_DATA':
  131.         a = getViewData(call_params, viewConfig)  # call_params
  132.         print "a = ", a
  133.         print "user_id = ", user_id
  134.         sums = a._get_sum_for_period(user_id, period="period")
  135.         print sums
  136.         start_sums = a._get_start_sum_for_period(user_id, period="period")
  137.         print start_sums
  138.         sums.extend(start_sums)
  139.         #####
  140.         #dic = {}
  141.         #for el in sums:
  142.             #arr = el
  143.             #dic[arr[1]] = arr[3]
  144.         #print dic
  145.         #####
  146. #        print "sums = ", sums
  147.         return sums
  148. #        return dic
  149.  
  150.  
  151. def is_exec():
  152.     try:
  153.         a = p1
  154.         return True
  155.     except NameError:
  156.         return False
  157.  
  158.  
  159. try:
  160.     if __name__ == "__main__":
  161.         os.environ["NLS_LANG"] = "AMERICAN_AMERICA.UTF8"
  162. #        import base64
  163.         CONNECTION_STRING = "itron/itron@itron.t48.ru:1521/XE"
  164. #        CONNECTION_STRING = base64.decodestring("aXRyb240L2l0cm9uNEBkZXYudDQ4LnJ1OjE1MjEveGU=")
  165.  
  166.         from test_lk_timetable import params_d
  167.         defaultParams = params_d  # заменила с {} на params
  168.         params_d["USER_ID"] = [7419]
  169.         params_d["FD"] = "01.01.2015 00:00:00"
  170.         params_d["TD"] = "31.01.2015 00:00:00"
  171.        
  172.         result = exec_request("GET_CALENDAR_DATA", "USER_SKUD", defaultParams, CONNECTION_STRING)
  173.  
  174.  
  175.  
  176.     elif is_exec():
  177.         (call_name, call_type, call_params) = (p1, p2, p3)
  178.  
  179.         if call_name != "GET_CALENDAR_DATA":
  180.             raise Exception(u"Недопустимый тип вызова %s " % (call_name))
  181.  
  182.         if call_type == "USER_SKUD":
  183.             call_params = json.loads(p3)
  184.             retval = exec_request("GET_CALENDAR_DATA", "USER_SKUD", call_params)
  185.             print "retval = ", retval
  186.         else:
  187.             raise Exception(u"Не поддерживаемая операция %s " % (call_type))
  188. except Exception as e:
  189.     log.exception(e)
  190.     retval = {'retval': 'error', 'msg': traceback.format_exc(e)}
  191.     print traceback.format_exc(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement