def get_sobjects(server, event_data):
    """
    Get the required variables for this trigger. Accounts for when the triggering
    sobject is a work order or a task.

    :param server: a tactic server stub object
    :param event_data: the event dictionary
    :return: work order sobject, task sobject
    """
    sobject = event_data.get('sobject')
    sobject_type = ctu.get_sobject_type(sobject.get('__search_key__'))
    work_order = {}
    task = {}
    if sobject_type == 'work_order':
        work_order = sobject
        results = server.query('sthpw/task', filters=[('code', work_order.get('task_code'))])
        if results:
            task = results[0]
    elif sobject_type == 'task' and 'WORK_ORDER' in sobject.get('lookup_code'):
        task = sobject
        results = server.query('twog/work_order', filters=[('code', task.get('lookup_code'))])
        if results:
            work_order = results[0]

    return work_order, task
    def get_display(self):
        """
        Get the code for displaying this widget.

        :return: the sobject edit widget
        """
        search_type = self.kwargs.get('search_type')
        sobject_code = self.kwargs.get('sobject_code')
        if not (search_type and sobject_code):
            return DivWdg('Could not display [{0}]: [{1}]'.format(search_type, sobject_code))

        mode = 'view'
        user_groups = Environment.get_group_names()
        if 'scheduling' in user_groups:
            mode = 'edit'
        sobject_type = ctu.get_sobject_type(search_type)
        # TODO: get a relevant display name
        display_name = sobject_code
        title = '{0} {1}: {2}'.format(mode.title(), sobject_type.title(), display_name)
        edit_widget = EditWdg(search_type=search_type, code=sobject_code, title=title, mode=mode,
                              view='edit', show_header='true')
        return edit_widget