コード例 #1
0
ファイル: rest_handler.py プロジェクト: zieglerm/TACTIC
    def GET(self):
        method = self.kwargs.get("method")
        print self.kwargs
        print "method: ", method
        print "expression: ", self.kwargs.get("expression")

        # /rest/get_by_code/cars/CAR00009

        # /rest/query?search_type=sthpw/cars
        if method == "query":
            code = self.kwargs.get("data")
            from pyasm.search import Search
            sobject = Search.get_by_code(search_type, code)
            sobject_dict = sobject.get_sobject_dict()
            return sobject_dict

        # /rest/expression/@SOBJECT(sthpw/task)
        elif method == "expression":
            expression = self.kwargs.get("expression")
            server = TacticServerStub.get()
            return server.eval(expression)

        # /rest/simple_checkin?search_key=dfadfdsas&data={}
        elif method == "expression":
            expression = self.kwargs.get("expression")
            server = TacticServerStub.get()
            return server.eval(expression)

        return {}
コード例 #2
0
ファイル: rest_handler.py プロジェクト: 0-T-0/TACTIC
    def GET(my):
        method = my.kwargs.get("method")
        print my.kwargs
        print "method: ", method
        print "expression: ", my.kwargs.get("expression")


        # /rest/get_by_code/cars/CAR00009

        # /rest/query?search_type=sthpw/cars
        if method == "query":
            code = my.kwargs.get("data")
            from pyasm.search import Search
            sobject = Search.get_by_code(search_type, code)
            sobject_dict = sobject.get_sobject_dict()
            return sobject_dict

        # /rest/expression/@SOBJECT(sthpw/task)
        elif method == "expression":
            expression = my.kwargs.get("expression")
            server = TacticServerStub.get()
            return server.eval(expression)

        # /rest/simple_checkin?search_key=dfadfdsas&data={}
        elif method == "expression":
            expression = my.kwargs.get("expression")
            server = TacticServerStub.get()
            return server.eval(expression)


        return {}
コード例 #3
0
    def update_related(self, login_group, prev_login_group):
        '''Update related table login_in_group'''

        search = Search('sthpw/login_in_group')
        search.add_filter('login_group', prev_login_group)
        login_in_groups = search.get_sobjects()

        if login_in_groups:

            server = TacticServerStub.get()
            login_in_group_dict = {}

            data = {"login_group": login_group}

            for login_in_group in login_in_groups:
                login_in_group_code = login_in_group.get("code")
                login_in_group_sk = server.build_search_key(
                    "sthpw/login_in_group", login_in_group_code)
                login_in_group_dict[login_in_group_sk] = data

            try:
                server.update_multiple(login_in_group_dict)
            except Exception, e:
                raise TacticException('Error updating login_in_group %s' %
                                      e.str())
コード例 #4
0
    def execute(my):
        #protocol = 'xmlrpc'
        protocol = 'local'
        if protocol == 'local':
            server = TacticServerStub.get()
        else:
            server = TacticServerStub(protocol=protocol, setup=False)
            TacticServerStub.set(server)

            project = my.data.get("project")
            ticket = my.data.get("ticket")
            assert project
            assert ticket
            server.set_server("localhost")
            server.set_project(project)
            server.set_ticket(ticket)

        my.class_name = my.data.get('class_name')
        assert my.class_name
        my.kwargs = my.data.get('kwargs')
        if not my.kwargs:
            my.kwags = {}

        #trigger = eval("%s(**my.kwargs)" % my.class_name)
        trigger = Common.create_from_class_path(my.class_name,
                                                kwargs=my.kwargs)

        input_data = my.get_input_data()
        trigger.set_input(input_data)
        trigger.execute()
コード例 #5
0
    def execute(my):
        #protocol = 'xmlrpc'
        protocol = 'local'
        if protocol == 'local':
            server = TacticServerStub.get()
        else:
            server = TacticServerStub(protocol=protocol, setup=False)
            TacticServerStub.set(server)

            project = my.data.get("project")
            ticket = my.data.get("ticket")
            assert project
            assert ticket
            server.set_server("localhost")
            server.set_project(project)
            server.set_ticket(ticket)

        my.class_name = my.data.get('class_name')
        assert my.class_name

        # get the script to run
        script_code = my.data.get("script_code")
        if script_code:
            search_type = "config/custom_script"
            search_key = server.build_search_key(search_type, script_code)
            script_obj = server.get_by_search_key(search_key)
            script = script_obj.get('script')
            my.run_script(script)
        else:
            print "Nothing to run"
コード例 #6
0
ファイル: subprocess_trigger.py プロジェクト: 0-T-0/TACTIC
    def execute(my):
        #protocol = 'xmlrpc'
        protocol = 'local'
        if protocol == 'local':
            server = TacticServerStub.get()
        else:
            server = TacticServerStub(protocol=protocol,setup=False)
            TacticServerStub.set(server)

            project = my.data.get("project")
            ticket = my.data.get("ticket")
            assert project
            assert ticket
            server.set_server("localhost")
            server.set_project(project)
            server.set_ticket(ticket)

        my.class_name = my.data.get('class_name')
        assert my.class_name
        my.kwargs = my.data.get('kwargs')
        if not my.kwargs:
            my.kwags = {}


        #trigger = eval("%s(**my.kwargs)" % my.class_name)
        trigger = Common.create_from_class_path(my.class_name, kwargs=my.kwargs)

        input_data = my.get_input_data()
        trigger.set_input(input_data)
        trigger.execute()
コード例 #7
0
ファイル: subprocess_trigger.py プロジェクト: 0-T-0/TACTIC
    def execute(my):
        #protocol = 'xmlrpc'
        protocol = 'local'
        if protocol == 'local':
            server = TacticServerStub.get()
        else:
            server = TacticServerStub(protocol=protocol,setup=False)
            TacticServerStub.set(server)

            project = my.data.get("project")
            ticket = my.data.get("ticket")
            assert project
            assert ticket
            server.set_server("localhost")
            server.set_project(project)
            server.set_ticket(ticket)

        my.class_name = my.data.get('class_name')
        assert my.class_name

        # get the script to run
        script_code = my.data.get("script_code")
        if script_code:
            search_type = "config/custom_script"
            search_key = server.build_search_key(search_type, script_code)
            script_obj = server.get_by_search_key(search_key)
            script = script_obj.get('script')
            my.run_script(script)
        else:
            print "Nothing to run"
コード例 #8
0
ファイル: asset_security.py プロジェクト: PaulDoessel/tactic
def accesshandler(request):

    cookies = Cookie.get_cookies(request)

    # if login ticket cookie does not exist, then deny
    if not cookies.has_key('login_ticket'):
        # just refuse access
        return apache.HTTP_FORBIDDEN

    ticket = cookies['login_ticket'].value
    if not ticket:
        return apache.HTTP_FORBIDDEN

    server = TacticServerStub.get(protocol='local')
    expr = "@SOBJECT(sthpw/ticket['ticket','%s'])" % ticket
    sobject = server.eval(expr, single=True)
    now = SPTDate.now()
    expiry = sobject.get("expiry")
    if expiry and expiry < str(now):
        return apache.HTTP_FORBIDDEN

    request.add_common_vars()
    path = str(request.subprocess_env['REQUEST_URI'])
    if path == None:
        return apache.HTTP_FORBIDDEN

    # FIXME: find some mechanism which is more acceptable ... like /icons
    #if path.find("_icon_") != -1:
    #    return apache.OK

    return apache.OK
コード例 #9
0
def main(server=None, input_data=None):
    if not input_data:
        input_data = {}

    if not server:
        server = TacticServerStub.get()

    input_sobject = input_data.get('sobject')

    order_code = input_sobject.get('code')
    priority = input_sobject.get('priority')

    component_search = Search('twog/component')
    component_search.add_filter('order_code', order_code)
    component_sobjects = component_search.get_sobjects()

    for component_sobject in component_sobjects:
        tasks = get_task_sobjects_from_component_sobject(component_sobject)

        data_to_insert = {}

        for task in tasks:
            task_search_key = server.build_search_key('sthpw/task', task.get_code(), project_code='twog')

            data_to_insert[task_search_key] = {'priority': priority}

        server.update_multiple(data_to_insert)
コード例 #10
0
def get_client_img(client_code):
    img_path = ''
    client_search = Search("twog/client")
    client_search.add_filter('code', client_code)
    client_search_object = client_search.get_sobject()

    if client_search_object:
        client_id = client_search_object.get_id()

        snaps_s = Search("sthpw/snapshot")
        snaps_s.add_filter('search_id', client_id)
        snaps_s.add_filter('search_type', 'twog/client?project=twog')
        snaps_s.add_filter('is_current', '1')
        snaps_s.add_filter('version', '0', op='>')
        snaps_s.add_where("\"context\" in ('publish','icon','MISC')")
        snaps_s.add_order_by('timestamp desc')
        snaps = snaps_s.get_sobjects()

        if len(snaps) > 0:
            server = TacticServerStub.get()
            snap = snaps[0]
            img_path = server.get_path_from_snapshot(snap.get_code(), mode="web")

            if img_path:
                img_path = 'http://' + server.get_server_name() + img_path
        return img_path
    else:
        return None
コード例 #11
0
 def init(my):
     from client.tactic_client_lib import TacticServerStub
     from pyasm.common import Environment
     my.server = TacticServerStub.get()
     my.login = Environment.get_login()
     my.user = my.login.get_login()
     my.movement_code = my.kwargs.get('movement_code')
コード例 #12
0
ファイル: dataflow_test.py プロジェクト: zieglerm/TACTIC
    def get_input_state(self, sobject, process):

        pipeline = Pipeline.get_by_sobject(sobject)

        # use the first input process
        input_processes = pipeline.get_input_processes(process)
        if not input_processes:
            return {}

        # get the first process for now
        p = input_processes[0]

        process_name = p.get_name()

        key = self.get_state_key(sobject, process_name)

        from tactic_client_lib import TacticServerStub
        server = TacticServerStub.get()

        from pyasm.common import jsonloads
        message = server.get_message(key)
        message = message.get("message")
        if not message:
            state = {}
        else:
            state = jsonloads(message)

        return state
コード例 #13
0
 def init(my):
     from client.tactic_client_lib import TacticServerStub
     from pyasm.common import Environment
     my.server = TacticServerStub.get()
     my.sk = ''
     my.code = ''
     my.name = ''
コード例 #14
0
 def get_display(my):
     from tactic_client_lib import TacticServerStub
     server = TacticServerStub.get()
     print "MY.KWARGS = %s" % my.kwargs
     title_codes = my.kwargs.get('title_codes').split('|')
     order_titles = {}
     for title_code in title_codes:
         title = server.eval("@SOBJECT(twog/title['code','%s'])" % title_code)
         if title:
             title = title[0]
             order_code = title.get('order_code')
             if order_code not in order_titles.keys():
                 order = server.eval("@SOBJECT(twog/order['code','%s'])" % order_code)[0]
                 order_titles[order_code] = {'order': order, 'titles': []}
             order_titles[order_code]['titles'].append(title)
     widget = DivWdg()
     table = Table()
     for order_code in order_titles.keys():
         table.add_row()
         table.add_cell('ORDER: %s' % order_titles[order_code]['order'].get('name'))
         for title in order_titles[order_code]['titles']:
             table.add_row() 
             title_name = title.get('title')
             if title.get('episode') not in [None,'']:
                 title_name = '%s: %s' % (title_name, title.get('episode'))
             table.add_cell('TITLE: %s' % title_name)
             
     widget.add(table)
     return widget
コード例 #15
0
 def get_subject(my):
     from tactic_client_lib import TacticServerStub
     server = TacticServerStub.get()
     eq = my.sobject
     equipment_name = eq.get_value('name')
     work_order_code = eq.get_value('work_order_code')
     work_order = None
     proj = None
     title = None
     order = None
     if work_order_code not in [None,'']:
         work_order = server.eval("@SOBJECT(twog/work_order['code','%s'])" % work_order_code)[0]
         proj = server.eval("@SOBJECT(twog/proj['code','%s'])" % work_order.get('proj_code'))[0]
         title = server.eval("@SOBJECT(twog/title['code','%s'])" % proj.get('title_code'))[0]
         order = server.eval("@SOBJECT(twog/order['code','%s'])" % title.get('order_code'))[0]
     po_number = ''
     order_name = ''
     title_title = ''
     title_episode = ''
     proj_code = ''
     if order: 
         po_number = order.get('po_number')
         order_name = order.get('name')
     if title:
         title_title = title.get('title')
         title_episode = title.get('episode')
     if proj:
         proj_code = proj.get('code')
  
     subject = 'Equipment Added by Operator in %s (%s), to %s: %s-%s-%s ' % (order_name, po_number, title_title, title_episode, proj_code, work_order_code)
     return subject
コード例 #16
0
    def get_to(my):
        from tactic_client_lib import TacticServerStub
        from pyasm.common import Environment
        recipients = set()
        to = '*****@*****.**'
        login_obj = Environment.get_login()
        login = login_obj.get_login()
        server = TacticServerStub.get()
        eq = my.sobject
        wo_code = eq.get_value('work_order_code')
        
        if wo_code not in [None,'']:
            wo = server.eval("@SOBJECT(twog/work_order['code','%s'])" % wo_code)
            if wo:
                wo = wo[0]
                if wo.get('login') != login:
                    the_obj = Login.get_by_code(wo.get('login'))
                    if the_obj:
                        recipients.add(the_obj)
#                    creator_login_obj = server.eval("@SOBJECT(sthpw/login['login','%s'])" % wo.get('login'))
#                    if creator_login_obj:
#                        creator_login_obj = creator_login_obj[0]
#                        #to = creator_login_obj.get('email')
#                        to = creator_login_obj
        print "RETURN Recipients: %s" % recipients        
        return recipients
コード例 #17
0
def main(args):
    # USAGE: create_project.py <project_code> <project_title> <project_type> 
    project_code = args[0]
    project_title = args[1]
    project_type = args[2]

    assert project_type in ['prod','flash','simple','unittest']
    assert project_title

    regexs = '^\d|\W'
    m = re.search(r'%s' % regexs, project_code) 
    if m:
        raise TacticApiException('<project_code> cannot contain special characters or start with a number.')

    server = TacticServerStub.get();
    # do the actual work
    server.start("Create Project", "Project creation for [%s] of type [%s]" % (project_code, project_type))
    try:
        args = {
        'project_code': project_code,
        'project_title': project_title,
        'project_type': project_type}
    
    
        
        class_name = "tactic.command.CreateProjectCmd";
        ret_val = server.execute_cmd(class_name, args=args);
        print ret_val
    except:
        server.abort()
        raise
    else:
        server.finish()
コード例 #18
0
ファイル: command_test.py プロジェクト: mincau/TACTIC
    def execute(self):
        Container.put("TestApiHandler", "test_api_handler")
        
        # test that you can run the client api from here
        server = TacticServerStub.get()
        server.start("Api Trigger test")
        try:
            test = server.ping()
            Container.put("TestApiHandler/ping", test)

            # do some more tests
            search_type = "unittest/person"
            code = "jack"
            search_key = server.build_search_key(search_type, code)

            Container.put("TestApiHandler/search_key", search_key)
            # insert
            data = { 'code': code }
            server.insert(search_type, data)
            # query
            sobject = server.get_by_search_key(search_key)
            Container.put("TestApiHandler/code", sobject.get('code'))

        finally:
            server.abort()
コード例 #19
0
ファイル: test_trigger.py プロジェクト: rajubuddha/TACTIC
    def execute(my):
        server = TacticServerStub.get()
        server.start("Starting city insert trigger",
                     "On inserting seoul, insert incheon")

        try:

            city_key = my.get_input_value("search_key")
            mode = my.get_input_value("mode")
            if mode == 'delete':
                return
            city = server.get_by_search_key(city_key)
            if city.get('code') == 'seoul':
                # make sure triggers=False to avoid infinite loop
                server.insert('unittest/city', {
                    'code': 'incheon',
                    'country_code': 'korea'
                },
                              triggers=False)

            if city.get('code') == 'incheon':
                raise TacticException(
                    'Should not have reached this point and fired this trigger.'
                )

        except:
            server.abort()
            raise
        else:
            server.finish()
コード例 #20
0
ファイル: command_test.py プロジェクト: mincau/TACTIC
    def execute(self):
        # ensure that the protocol is "local"
        server = TacticServerStub.get()
        if server.get_protocol() != "local":
            raise Exception("TacticServerStub protocol is not 'local'")

        # test some inputs
        is_insert = self.get_input_value("is_insert")
        if is_insert != True:
            raise Exception("is_insert != True")

        is_insert = self.get_input_value("is_insert")
        if is_insert != True:
            raise Exception("is_insert != True")

        search_key = self.get_input_value('search_key')
        if search_key != 'unittest/person?project=unittest&code=fred':
            raise Exception("search_key != 'unittest/person?project=unittest&code=fred'")

        prev_data = self.get_input_value('prev_data')
        if prev_data.get('code') != None:
            raise Exception("prev_data['code'] != None")

        prev_data = self.get_input_value('update_data')
        if prev_data.get('code') != 'fred':
            raise Exception("update_data['code'] != 'fred'")
コード例 #21
0
    def execute(self):
        # ensure that the protocol is "local"
        server = TacticServerStub.get()
        if server.get_protocol() != "local":
            raise Exception("TacticServerStub protocol is not 'local'")

        # test some inputs
        is_insert = self.get_input_value("is_insert")
        if is_insert != True:
            raise Exception("is_insert != True")

        is_insert = self.get_input_value("is_insert")
        if is_insert != True:
            raise Exception("is_insert != True")

        search_key = self.get_input_value('search_key')
        if search_key != 'unittest/person?project=unittest&code=fred':
            raise Exception(
                "search_key != 'unittest/person?project=unittest&code=fred'")

        prev_data = self.get_input_value('prev_data')
        if prev_data.get('code') != None:
            raise Exception("prev_data['code'] != None")

        prev_data = self.get_input_value('update_data')
        if prev_data.get('code') != 'fred':
            raise Exception("update_data['code'] != 'fred'")
コード例 #22
0
ファイル: workflow.py プロジェクト: jayvdb/TACTIC
    def log_message(my, sobject, process, status):

        # need to use API for now
        key = "%s|%s|status" % (sobject.get_search_key(), process)
        from tactic_client_lib import TacticServerStub
        server = TacticServerStub.get()
        server.log_message(key, status)
コード例 #23
0
    def execute(self):
        Container.put("TestApiHandler", "test_api_handler")

        # test that you can run the client api from here
        server = TacticServerStub.get()
        server.start("Api Trigger test")
        try:
            test = server.ping()
            Container.put("TestApiHandler/ping", test)

            # do some more tests
            search_type = "unittest/person"
            code = "jack"
            search_key = server.build_search_key(search_type, code)

            Container.put("TestApiHandler/search_key", search_key)
            # insert
            data = {'code': code}
            server.insert(search_type, data)
            # query
            sobject = server.get_by_search_key(search_key)
            Container.put("TestApiHandler/code", sobject.get('code'))

        finally:
            server.abort()
コード例 #24
0
ファイル: asset_security.py プロジェクト: 0-T-0/TACTIC
def accesshandler(request):

    cookies = Cookie.get_cookies(request)

    # if login ticket cookie does not exist, then deny
    if not cookies.has_key('login_ticket'):
        # just refuse access
        return apache.HTTP_FORBIDDEN

    ticket = cookies['login_ticket'].value
    if not ticket:
        return apache.HTTP_FORBIDDEN

    server = TacticServerStub.get(protocol='local')
    expr = "@SOBJECT(sthpw/ticket['ticket','%s'])" % ticket
    sobject = server.eval(expr, single=True)
    now = SPTDate.now()
    expiry = sobject.get("expiry")
    if expiry and expiry < str(now):
        return apache.HTTP_FORBIDDEN

    request.add_common_vars()
    path = str(request.subprocess_env['REQUEST_URI'])
    if path == None:
        return apache.HTTP_FORBIDDEN


    # FIXME: find some mechanism which is more acceptable ... like /icons
    #if path.find("_icon_") != -1:
    #    return apache.OK

    return apache.OK
コード例 #25
0
ファイル: login_group_trigger.py プロジェクト: mincau/TACTIC
    def update_related(self, login_group, prev_login_group):
        '''Update related table login_in_group''' 

        search = Search('sthpw/login_in_group')
        search.add_filter('login_group', prev_login_group)
        login_in_groups = search.get_sobjects()

        if login_in_groups:

            server = TacticServerStub.get()
            login_in_group_dict = {}
            
            data = {
                "login_group": login_group
            }

            for login_in_group in login_in_groups:
                login_in_group_code = login_in_group.get("code")
                login_in_group_sk = server.build_search_key("sthpw/login_in_group", login_in_group_code)
                login_in_group_dict[login_in_group_sk] = data

            try:
                server.update_multiple(login_in_group_dict)
            except Exception, e:
                raise TacticException('Error updating login_in_group %s' % e.str())
コード例 #26
0
    def add_task_to_component(self, process, component_code, login):
        server = TacticServerStub.get()

        component_search = Search('twog/component')
        component_search.add_code_filter(component_code)
        component = component_search.get_sobject()

        server.insert('sthpw/task', {'process': process, 'login': login}, parent_key=component.get_search_key())
コード例 #27
0
    def init(self):
        """
        The special tactic init.

        :return: None
        """
        super(SobjectEditLauncherWdg, self).init()
        self.server = TacticServerStub.get()
コード例 #28
0
ファイル: billing_wdg.py プロジェクト: 2gDigitalPost/custom
 def init(my):
     from client.tactic_client_lib import TacticServerStub
     from pyasm.common import Environment
     my.server = TacticServerStub.get()
     my.sk = ''
     my.user = ''
     my.groups = ''
     my.login_group_rates = {}
コード例 #29
0
 def __init__(my, **kwargs):
     from tactic_client_lib import TacticServerStub
     my.server = TacticServerStub.get()
     my.message_key = kwargs.get("message_key")
     my.paths = kwargs.get("paths")
     my.paths_sizes = kwargs.get("paths_sizes")
     if not my.paths:
         my.paths = []
コード例 #30
0
ファイル: rsync.py プロジェクト: mincau/TACTIC
 def __init__(self, **kwargs):
     from tactic_client_lib import TacticServerStub
     self.server = TacticServerStub.get()
     self.message_key = kwargs.get("message_key")
     self.paths = kwargs.get("paths")
     self.paths_sizes = kwargs.get("paths_sizes")
     if not self.paths:
         self.paths = []
コード例 #31
0
ファイル: python_cmd.py プロジェクト: funic/TACTIC
    def get_results(my):
        code = my.kwargs.get("code")
        script_path = my.kwargs.get("script_path")
        file_path = my.kwargs.get("file_path")


        # if a script path is specified, then get it from the custom_script
        # table
        if script_path:

            folder = os.path.dirname(script_path)
            title = os.path.basename(script_path)

            search = Search("config/custom_script")
            search.add_filter("folder", folder)
            search.add_filter("title", title)
            custom_script = search.get_sobject()
            if not custom_script:
                raise TacticException("Custom script with path [%s/%s] does not exist" % (folder, title) )
            code = custom_script.get_value("script")

        elif file_path:
            f = open(file_path)
            code = f.read()
            f.close()


        server = TacticServerStub.get(protocol='local')
        server.login = Environment.get_user_name()
        spt_mako_results = {}

        #kwargs = {
        #    'server': server,
        #    'spt_mako_results': spt_mako_results
        #}

        code = '''
<%%def name='spt_run_code()'>
<%%
%s
%%>
</%%def>

<%%
spt_mako_results['spt_ret_val'] = spt_run_code()
%%>
''' % code
        

        #template = Template(code, output_encoding='utf-8', input_encoding='utf-8')
        try:
            template = Template(code)
            template.render(server=server,spt_mako_results=spt_mako_results, kwargs=my.kwargs,**my.kwargs)
        except Exception, e:
            print "Error in Mako code: "
            print code
            raise
コード例 #32
0
 def init(my):
     from client.tactic_client_lib import TacticServerStub
     from pyasm.common import Environment
     my.server = TacticServerStub.get()
     my.login = Environment.get_login()
     my.user = my.login.get_login()
     my.code = ''
     my.types = ['Full_Work_Order']
     my.template_files = {'Full_Work_Order': '/var/www/html/source_labels/work_order.html'}
コード例 #33
0
 def get_subject(my):
     from tactic_client_lib import TacticServerStub
     server = TacticServerStub.get()
     print "SERVER = %s" % server
     movement = my.sobject
     movement_code = movement.get_code()
     movement_name = movement.get_value('name')
     subject = 'New Arrivals: %s' % movement_name
     return subject
コード例 #34
0
    def execute(my):
        base_dir = my.kwargs.get("base_dir")
        relative_dir = my.kwargs.get("relative_dir")
        file_name = my.kwargs.get("file_name")
        to_path = my.kwargs.get("to_path")

        from_path = "%s/./%s/%s" % (base_dir, relative_dir, file_name)

        tries = 1
        success = False
        value = ""
        start = time.time()

        message_key = my.kwargs.get("message_key")

        while 1:
            try:
                value = my.sync_paths(from_path, to_path)
                success = True
                break
            except RSyncConnectionException, e:
                time.sleep(60)

                from tactic_client_lib import TacticServerStub
                server = TacticServerStub.get()
                server.log_message(message_key, {"message": str(e)}, "error_retry")
                continue

            except Exception, e:
                print "Failed on try [%s]..." % tries
                raise

                # ping the server to see

                if message_key:
                    from tactic_client_lib import TacticServerStub
                    server = TacticServerStub.get()
                    server.log_message(message_key, {"message": str(e)}, "error_retry")

                time.sleep(tries)
                if tries == 3:
                    break

                tries += 1
コード例 #35
0
    def init(my):
        my.server = TacticServerStub.get()
        my.order_sk = str(my.kwargs.get('order_sk'))
        my.parent_sk = my.kwargs.get('parent_sk')
        my.parent_code = my.parent_sk.split('code=')[1]

        if 'TITLE' in my.parent_code:
            my.title_code = my.parent_code
        else:
            my.title_code = my.server.eval("@GET(twog/proj['code','%s'].title_code)" % my.parent_code)[0]
コード例 #36
0
    def init(my):
        my.server = TacticServerStub.get()
        my.order_sk = str(my.kwargs.get("order_sk"))
        my.parent_sk = my.kwargs.get("parent_sk")
        my.parent_code = my.parent_sk.split("code=")[1]

        if "TITLE" in my.parent_code:
            my.title_code = my.parent_code
        else:
            my.title_code = my.server.eval("@GET(twog/proj['code','%s'].title_code)" % my.parent_code)[0]
コード例 #37
0
    def get_display(self):

        class_name = self.kwargs.get("class_name")
        server_name = self.kwargs.get("server")
        kwargs = self.kwargs.get("kwargs")

        server = TacticServerStub.get(protocol='xmlrpc')
        server.set_server(server_name)
        widget = server.get_widget(class_name, kwargs)
        return widget
コード例 #38
0
ファイル: help_wdg.py プロジェクト: hellios78/TACTIC
    def get_display(my):

        alias = my.kwargs.get("alias")

        my.rel_path = my.kwargs.get("rel_path")
        if not my.rel_path:
            from tactic_client_lib import TacticServerStub

            server = TacticServerStub.get(protocol="local")
            my.rel_path = server.get_doc_link(alias)

        if not my.rel_path or my.rel_path == "none_found":
            # raise TacticException("Help alias [%s] does not exist" % alias)
            layout = DivWdg()
            layout.add(HelpCreateWdg(alias=alias))
            layout.add(HelpDocFilterWdg(alias="main"))
            return layout

        # special condition for plugins path
        if my.rel_path.startswith("/plugins/"):
            plugin_dir = Environment.get_plugin_dir()
            rel_path = my.rel_path.replace("/plugins/", "")
            path = "%s/%s" % (plugin_dir, rel_path)
        elif my.rel_path.startswith("/builtin_plugins/"):
            plugin_dir = Environment.get_builtin_plugin_dir()
            rel_path = my.rel_path.replace("/builtin_plugins/", "")
            path = "%s/%s" % (plugin_dir, rel_path)
        elif my.rel_path.startswith("/assets/"):
            asset_dir = Environment.get_asset_dir()
            rel_path = my.rel_path.replace("/assets/", "")
            path = "%s/%s" % (asset_dir, rel_path)
        else:

            # see if there is an override
            doc_dir = os.environ.get("TACTIC_DOC_DIR")
            if not doc_dir:
                doc_dir = Config.get_value("install", "doc_dir")
            if not doc_dir:
                install_dir = Environment.get_install_dir()
                doc_dir = "%s/doc" % install_dir

            path = "%s/%s" % (doc_dir, my.rel_path)

        html = []
        try:
            f = open(path, "r")
            count = 0
            for line in f:
                line = my.filter_line(line, count)
                html.append(line)
                count += 1
            f.close()
        except Exception, e:
            print "Error processing: ", e
            html.append("Error processing document: %s<br/><br/>" % str(e))
コード例 #39
0
ファイル: session.py プロジェクト: imfog/TACTIC-Handler
    def __init__(self):
        self.xml = None
        self.doc = None
        self.root = None

        from tactic_client_lib import TacticServerStub
        self.server = TacticServerStub.get()

        # TODO: pull this out of here!!!
        self.util = TacticNodeUtil()
        self.app = Application.get()
コード例 #40
0
    def get_display(my):

        alias = my.kwargs.get("alias")

        my.rel_path = my.kwargs.get("rel_path")
        if not my.rel_path:
            from tactic_client_lib import TacticServerStub
            server = TacticServerStub.get(protocol='local')
            my.rel_path = server.get_doc_link(alias)

        if not my.rel_path or my.rel_path == 'none_found':
            #raise TacticException("Help alias [%s] does not exist" % alias)
            layout = DivWdg()
            layout.add(HelpCreateWdg(alias=alias))
            layout.add(HelpDocFilterWdg(alias='main'))
            return layout

        # special condition for plugins path
        if my.rel_path.startswith("/plugins/"):
            plugin_dir = Environment.get_plugin_dir()
            rel_path = my.rel_path.replace("/plugins/", "")
            path = "%s/%s" % (plugin_dir, rel_path)
        elif my.rel_path.startswith("/builtin_plugins/"):
            plugin_dir = Environment.get_builtin_plugin_dir()
            rel_path = my.rel_path.replace("/builtin_plugins/", "")
            path = "%s/%s" % (plugin_dir, rel_path)
        elif my.rel_path.startswith("/assets/"):
            asset_dir = Environment.get_asset_dir()
            rel_path = my.rel_path.replace("/assets/", "")
            path = "%s/%s" % (asset_dir, rel_path)
        else:

            # see if there is an override
            doc_dir = os.environ.get("TACTIC_DOC_DIR")
            if not doc_dir:
                doc_dir = Config.get_value("install", "doc_dir")
            if not doc_dir:
                install_dir = Environment.get_install_dir()
                doc_dir = "%s/doc" % install_dir

            path = "%s/%s" % (doc_dir, my.rel_path)

        html = []
        try:
            f = open(path, 'r')
            count = 0
            for line in f:
                line = my.filter_line(line, count)
                html.append(line)
                count += 1
            f.close()
        except Exception, e:
            print "Error processing: ", e
            html.append("Error processing document: %s<br/><br/>" % str(e))
コード例 #41
0
ファイル: session.py プロジェクト: rajubuddha/TACTIC
    def __init__(my):
        my.xml = None
        my.doc = None
        my.root = None

        from tactic_client_lib import TacticServerStub
        my.server = TacticServerStub.get()

        # TODO: pull this out of here!!!
        my.util = TacticNodeUtil()
        my.app = Application.get()
コード例 #42
0
 def __init__(my, **kwargs):
     from client.tactic_client_lib import TacticServerStub
     from pyasm.common import Environment
     super(WorkOrderPrintExecutePages, my).__init__(**kwargs)
     my.server = TacticServerStub.get()
     my.login = Environment.get_login()
     my.user = my.login.get_login()
     my.codes = str(kwargs.get('codes'))
     my.types = ['Full_Work_Order']
     my.template_files = {'Full_Work_Order': '/var/www/html/source_labels/work_order.html'}
     my.transaction = None
コード例 #43
0
    def add_task_to_component(self, process, component_code, login):
        server = TacticServerStub.get()

        component_search = Search('twog/component')
        component_search.add_code_filter(component_code)
        component = component_search.get_sobject()

        server.insert('sthpw/task', {
            'process': process,
            'login': login
        },
                      parent_key=component.get_search_key())
コード例 #44
0
ファイル: project.py プロジェクト: hellios78/TACTIC
    def get_server(my):
        # do a query for the search
        from tactic_client_lib import TacticServerStub
        if my.protocol == 'xmlrpc':
            stub = TacticServerStub(setup=False, protocol=my.protocol)
            stub.set_server(my.host)
            stub.set_project(my.project_code)
            stub.set_ticket(my.ticket)
        else:
            stub = TacticServerStub.get()

        return stub
コード例 #45
0
        def on_update(my, path, data):
            from tactic_client_lib import TacticServerStub
            server = TacticServerStub.get()
            data['path'] = path

            bytes = data.get("bytes")
            my.total_sent += bytes

            print "path: ", path
            print "total: ", my.total_sent

            server.log_message("wow", data)
コード例 #46
0
ファイル: subprocess_trigger.py プロジェクト: zieglerm/TACTIC
    def set_pipeline_status(self, status, data={}):

        input = self.get_input_data()
        sobject = input.get("sobject")
        search_key = sobject.get("__search_key__")

        process = input.get("process")
        if not process:
            return

        server = TacticServerStub.get()
        print "set_pipeline_event: ", search_key, process, status
        server.call_pipeline_event(search_key, process, status, data)
    def execute(self):
        # Get the task sobject (in this case, should be attached to twog/department_request)
        task_sobject = self.input.get('sobject')

        # Do a sanity check on the search_type to make sure we're working with a twog/department_request
        search_type = task_sobject.get('search_type')

        if search_type != u'twog/department_request?project=twog':
            raise TacticException(
                "Something went wrong. A trigger was called on a task that it should not have been."
                "Trigger Name: {0}".format(self.__class__.__name__))

        # Get the twog/department_request sobject
        search_code = task_sobject.get('search_code')
        department_request_search = Search('twog/department_request')
        department_request_search.add_code_filter(search_code)
        department_request_sobject = department_request_search.get_sobject()

        # Task process should be either 'Request' or 'Approval'
        task_process = task_sobject.get('process').lower()
        # For this trigger, only 'Complete', 'Rejected', and 'Approved' apply
        task_status = task_sobject.get('status').lower()
        # Get a server instance to send the data
        server = TacticServerStub.get()

        if task_process == 'request' and task_status == 'complete':
            # Check if the department request has its 'Response' column filled out. If not, raise an error
            if not department_request_sobject.get('response'):
                raise TacticException(
                    "Before marking the request as 'Complete', you must fill out the 'Response' "
                    "column.")

            # Mark the twog/department_request status as needing approval
            server.update(department_request_sobject.get_search_key(),
                          data={'status': 'approval'})
        elif task_process == 'approval':
            if task_status == 'rejected':
                # Need to set the twog/department_request status back to 'in_progress' so that it appears on the
                # department's list again. Setting the task status to 'Revise' is not handled here (the pipeline
                # takes care of that).
                server.update(department_request_sobject.get_search_key(),
                              data={'status': 'in_progress'})
            elif task_status == 'approved':
                # If the Approval task is marked as 'approved', then the request is finished. Mark the
                # twog/department_request status as 'complete' so it disappears from all views.
                server.update(department_request_sobject.get_search_key(),
                              data={'status': 'complete'})
コード例 #48
0
ファイル: cgapp.py プロジェクト: tws0002/New_HIVE
    def checkin(my, tactic_node, search_key, context):
        '''Standard checkin mechanism.  This is a sample checkin mechanism
        that is full featured enough to handle many situations.

        @params:
          tactic_node: the tactic node to be checkedin
          search_key: the search key to check into
          context: the context to check into

        @return
          snapshot: a dictionary representing the final snapshot
          
        
        '''
        server = TacticServerStub.get()

        # verify that this is not a reference!!!


        # create a snapshot
        snapshot = server.create_snapshot(search_key, context)

        # find all of the dependencies
        dependent_nodes = my.get_dependent_nodes(tactic_node)
        for node in dependent_nodes:
            # find out if there is a node there is a file associated with
            # this tactic node
            files = my.get_dependent_references(node)
            print files


        # update the tactic node with the latest snapshot data.  Also, update
        # the tactic node name as it likely has changed
        node_data = my.set_introspect_data(tactic_node, snapshot)
        tactic_node = node_data.get_app_node_name()


        # add the files to the snapshot
        handler = BaseFileExtractionHandler(tactic_node)
        paths = handler.execute()
        #paths = my.extract_to_files(top_node)
        for path in paths:
            print "path: ", path
            server.add_file(snapshot.get("code"), path, mode='upload')

        return snapshot
コード例 #49
0
ファイル: introspect.py プロジェクト: imfog/TACTIC-Handler
    def commit(self, xml=None):

        if not xml:
            xml = self.xml

        from tactic_client_lib import TacticServerStub
        self.server = TacticServerStub.get()

        search_type = "prod/session_contents"

        # get more info
        pid = os.getpid()
        login = self.server.get_login()

        data = {'pid': pid, 'login': login, 'data': xml}

        self.server.insert(search_type, data)
コード例 #50
0
ファイル: custom_layout_wdg.py プロジェクト: hellios78/TACTIC
    def init(my):
        my.server = TacticServerStub.get(protocol='local')

        sobjects_expr = my.kwargs.get("sobjects_expr")
        if sobjects_expr:
            my.sobjects = Search.eval(sobjects_expr)

        my.data = {}

        # NOTE: this is is for the FilterElement Functionality
        my.show_title = True

        my.layout_wdg = None
        my.config = None
        my.def_config = None
        my.sobject_dicts = None
        my.is_table_element = False

        my.sequence_data = []
コード例 #51
0
ファイル: cgapp.py プロジェクト: rajubuddha/TACTIC
    def load(my,
             search_key,
             context,
             version=-1,
             file_type='main',
             mode='reference',
             namespace=''):
        '''Generic loading function used by TACTIC interface by default

        @params:
        search_key: the search key of the sobject to be loaded
        context: the context of the snapshot to be loaded
        version: the version of the snapshot to be loaded
        file_type: the specific file in the snapshot to be loaded

        mode: reference|import|open: the mode in which to bring the file in
        
        
        '''
        server = TacticServerStub.get()

        # FIXME: do we really need to make 2 calls?
        snapshot = server.get_snapshot(search_key,
                                       context=context,
                                       version=version)
        if not snapshot:
            raise CGAppException("No snapshot found for [%s]" % search_key)

        paths = server.get_paths(search_key, context, version, file_type)
        web_paths = paths.get("web_paths")

        for path in web_paths:
            to_path = my.download(path)
            my.load_file(to_path, namespace=namespace, mode=mode)

        # FIXME: if the instance already exists, it will be auto renmaed by
        # the application ... this gets tricky to discover
        snapshot_code = snapshot.get('code')
        if namespace:
            tactic_node = "%s:tactic_%s" % (namespace, snapshot_code)
        else:
            tactic_node = "tactic_%s" % snapshot_code
        return tactic_node
コード例 #52
0
    def execute(my):

        from tactic_client_lib import TacticServerStub
        server = TacticServerStub.get(protocol='local')

        # create a new snapshot
        snapshot = server.create_snapshot(my.search_key, my.context)

        # get all of the file_types

        file_nodes = my.package_xml.get_nodes("package/file_type")

        count = 0

        for file_node in file_nodes:
            name = my.package_xml.get_attribute(file_node, "name")

            values = my.package_xml.get_node_values_of_children(file_node)
            expression = values.get("expression")
            dir_naming = values.get("dir_naming")
            file_naming = values.get("file_naming")

            files = Search.eval(expression)

            for file in files:
                file_type = "%s%s" % (name, count)
                try:
                    # FIXME: the assumed action is to checkin
                    server.add_file(snapshot,
                                    file,
                                    file_type=file_type,
                                    mode='copy',
                                    dir_naming=dir_naming,
                                    file_naming=file_naming)

                    # What if we just wished to copy?  Can we run the files
                    # through a naming convention filter?

                    count += 1
                except Exception, e:
                    print "WARNING: ", str(e)
コード例 #53
0
    def execute(self, func_name, args=[], kwargs={}):

        server = TacticServerStub.get()

        if args:
            args = jsonloads(args)
        if kwargs:
            kwargs = jsonloads(kwargs)

        if kwargs:
            # Quirk ... when there is a kwargs, the last args is the kwargs
            if args:
                args.pop()
            call = "server.%s(*args, **kwargs)" % func_name
        else:
            call = "server.%s(*args)" % func_name

        try:
            ret_val = eval(call)
        except Exception, e:
            print "ERROR: ", e
            raise
コード例 #54
0
    def test_all(self):
        print "Running Client Application API Test"

        from tactic_client_lib import TacticServerStub

        # set the server to test... assume it is run on the server
        server = "localhost"
        url = "http://%s/tactic/default/Api/" % server

        self.server = TacticServerStub.get()
        project_code = "unittest"
        self.server.set_project(project_code)

        self.server.start("Client API Unittest")

        from tactic_client_lib.application.common import TacticNodeUtil
        self.util = TacticNodeUtil()
        from tactic_client_lib.application.maya import Maya
        self.app = Maya()

        try:
            data = {'code': 'joe'}
            self.person = self.server.insert("unittest/person", data)

            data = {'code': 'mary'}
            self.person2 = self.server.insert("unittest/person", data)

            self._test_load_template()
            self._test_checkin()
            self._test_load()
            self._test_introspect()

        except Exception:
            self.server.abort()
            raise
        else:
            self.server.abort()
コード例 #55
0
ファイル: rest_handler.py プロジェクト: zieglerm/TACTIC
    def POST(self):

        from pyasm.web import WebContainer
        web = WebContainer.get_web()

        method = web.get_form_value("method")
        print "method: ", method

        # make sure there are no special characters in there ie: ()
        p = re.compile('^\w+$')
        if not re.match(p, method):
            raise Exception("Mathod [%s] does not exist" % method)

        from tactic_client_lib import TacticServerStub
        server = TacticServerStub.get()

        if not eval("server.%s" % method):
            raise Exception("Mathod [%s] does not exist" % method)

        keys = web.get_form_keys()

        kwargs = {}
        for key in keys:
            if key in ["method", "login_ticket", "password"]:
                continue

            if key == 'kwargs':
                args = web.get_form_value(key)
                args = jsonloads(args)
                for name, value in args.items():
                    kwargs[name] = value
            else:
                kwargs[key] = web.get_form_value(key)

        call = "server.%s(**kwargs)" % method

        return eval(call)