def _get_target_span(self): # get the target span search = Search(self.container_cls.SEARCH_TYPE) self._order_search(search) groups = search.get_sobjects() if groups: self.container_sobj = groups[0] target_span = SpanWdg(css='med') group_table = Table(self.GROUP_TABLE_NAME, css='table') group_table.add_style('width', '30em') group_table.add_col(css='small') group_table.add_col(css='small') group_table.add_col() target_span.add(group_table) group_table.add_row_cell(search.get_search_type_obj()\ .get_description(), "heading") checkbox = CheckboxWdg() checkbox.set_option("onclick", \ "a=new Elements('container_ids');a.toggle_all(this);") group_table.add_row() group_table.add_cell(checkbox) col_name = group_table.get_next_col_name() toggle_control = HiddenRowToggleWdg(col_name, is_control=True, auto_index=True) group_table.add_cell(toggle_control) group_table.add_cell('MASTER CONTROL') remove_cmd = HiddenWdg(SObjectGroupCmd.REMOVE_CMD) self.add(remove_cmd) for group in groups: group_table.add_row() checkbox = CheckboxWdg("container_ids") checkbox.set_option("value", group.get_primary_key_value()) toggle = HiddenRowToggleWdg(col_name, auto_index=True) toggle.store_event() group_details = ItemInContainerWdg(group, self.item_sobj, self.item_cls, self.grouping_cls) # set the target content of the toggle toggle.set_static_content(group_details) group_table.add_cell(checkbox) group_table.add_cell(toggle, add_hidden_wdg=True) group_table.add_cell(group.get_description()) num_items = group_details.get_num_items() if num_items: td = group_table.add_cell("( %s )" % num_items, 'no_wrap') td.add_style('color: #777') else: group_table.add_blank_cell() return target_span
def init(my): my.is_refresh = my.kwargs.get('is_refresh') my.file_path = my.kwargs.get('file_path') my.search_type = my.kwargs.get('search_type') my.search_type_obj = SearchType.get(my.search_type) web = WebContainer.get_web() my.encoder = web.get_form_value('encoder') title_row_checkbox = CheckboxWdg("has_title") my.has_title = title_row_checkbox.is_checked() lowercase_title_checkbox = CheckboxWdg("lowercase_title") my.lowercase_title = lowercase_title_checkbox.is_checked()
def get_item_div(my, sobjects, related_type): item_div = DivWdg() item_div.add_style("margin: 15px 10px") sobject = sobjects[0] checkbox = CheckboxWdg('related_types') item_div.add(checkbox) checkbox.set_attr("value", related_type) if related_type in ["sthpw/snapshot", "sthpw/file"]: checkbox.set_checked() item_div.add(" ") item_div.add(related_type) item_div.add(": ") if related_type.startswith("@SOBJECT"): related_sobjects = Search.eval(related_type, [sobject], list=True) else: try: related_sobjects = [] for sobject in sobjects: sobjs = sobject.get_related_sobjects(related_type) related_sobjects.extend(sobjs) except Exception, e: print "WARNING: ", e related_sobjects = []
def get_files_checkbox_from_file_list(file_sobjects, selected_file_sobjects): """ Given a list of file sobjects, return a table of Checkbox widgets (CheckboxWdg) using the file paths and codes. If a file is also in the selected_file_sobjects list, check it automatically. :param file_sobjects: List of file sobjects :param selected_file_sobjects: List of file sobjects (that are already selected) :return: Table """ files_checkbox_table = Table() header_row = files_checkbox_table.add_row() header = files_checkbox_table.add_header(data='Files', row=header_row) header.add_style('text-align', 'center') header.add_style('text-decoration', 'underline') for file_sobject in file_sobjects: checkbox = CheckboxWdg(name=file_sobject.get_code()) if file_sobject.get_code() in [ selected_file.get_code() for selected_file in selected_file_sobjects ]: checkbox.set_checked() checkbox_row = files_checkbox_table.add_row() files_checkbox_table.add_cell(data=checkbox, row=checkbox_row) files_checkbox_table.add_cell(data=file_sobject.get_value('file_path'), row=checkbox_row) return files_checkbox_table
def get_title(my): mode = my.get_option("mode") title = SpanWdg() #loader = LoaderButtonWdg() #loader.set_load_script( my.get_load_script() ) #return loader search_type = my.get_search_type() cb_name = '%s_%s' % (search_type, my.CB_NAME) master_cb = CheckboxWdg('master_control') master_cb.add_behavior({ 'type': 'click_up', 'propagate_evt': True, 'cbjs_action': ''' var inputs = spt.api.Utility.get_inputs(bvr.src_el.getParent('.spt_table'),'%s','.spt_latest_%s'); for (var i = 0; i < inputs.length; i++) inputs[i].checked = bvr.src_el.checked; ''' % (cb_name, mode) }) title.add(master_cb) if mode == "input": title.add("Receive") else: title.add("Deliver") return title
def init(self): self.add("Process: ") checkbox = CheckboxWdg("process") checkbox.set_option("value", "on") checkbox.set_persistence() checkbox.add_event("onclick", "document.form.submit()") self.add(checkbox)
def postprocess(my): web = get_web_container() my.files = [] my.file_types = [] if my.get_option('upload_type') == 'arbitrary': my._upload_arbitrary_files() else: my._upload_specified_files() context = my.get_value("%s|context" % my.name) subcontext = my.get_value("%s|subcontext" % my.name) if subcontext: context = '%s/%s' % (context, subcontext) description = my.get_value("%s|description" % my.name) from pyasm.widget import CheckboxWdg cb = CheckboxWdg("%s|is_revision" % my.get_input_name()) is_rev = cb.is_checked(False) # let checkin take care of moving files to the lib from pyasm.checkin import FileCheckin my.checkin = FileCheckin.get( my.sobject, my.files, my.file_types, \ context=context, snapshot_type="file" ) my.checkin.set_description(description) my.checkin.set_revision(is_rev) my.checkin.execute() my.sobjects.append(my.sobject) my.info['context'] = context my.add_description('File Publish for [%s]' % my.sobject.get_code()) # remove the files in upload area for file in my.files: if os.path.exists(file): os.unlink(file) Trigger.call(my, "email")
def get_ping_wdg(my): div = DivWdg() div.add_class("spt_diagnostics_ping") ping_div = DivWdg() div.add(ping_div) ping_div.add( CheckboxWdg() ) ping_div.add_behavior( { 'type': 'load', 'cbjs_action': ''' var server = TacticServerStub.get(); var result = server.ping(); var msg = 'wow'; var status_el = spt.get_cousin(bvr.src_el, ".spt_diagnostics_ping",".spt_diagnostics_ping_status"); status_el.innerHTML = result; ''' } ) # Test database connection ping_div.add("Test Server Ping") status_div = DivWdg() status_div.add_class("spt_diagnostics_ping_status") status_div.add("Checking ...") div.add(status_div) return div
def get_instantiation_wdg(my): setting = my.get_default_setting() default_instantiation = setting.get('instantiation') div = DivWdg() is_unchecked = True default_cb = None for value in my.get_instantiation_options(): name = my.get_element_name("instantiation") checkbox = CheckboxWdg(name) if value == default_instantiation: default_cb = checkbox checkbox.set_option("value", value) checkbox.set_persistence() if checkbox.is_checked(): is_unchecked = False checkbox.add_behavior({ 'type': 'click_up', 'propagate_evt': True, "cbjs_action": "spt.toggle_checkbox(bvr, '.spt_ui_options', '%s')" % name }) span = SpanWdg(checkbox, css='small') span.add(value) div.add(span) if is_unchecked: default_cb.set_checked() return div
def get_render_icon_wdg(my): '''Checkbox determines whether to create icon''' div = DivWdg() div.add("Create Icon: ") checkbox = CheckboxWdg("render") checkbox.set_persistence() div.add(checkbox) return div
def init(self): self.add("Show assigned only: ") self.checkbox = CheckboxWdg("show_assigned_only") self.checkbox.set_option("value", "on") self.checkbox.set_persistence() self.checkbox.add_event("onclick", "document.form.submit()") self.add(self.checkbox) self.add_class("med")
def get_display(self): sobject = self.get_current_sobject() checkbox = CheckboxWdg() checkbox.set_name(self.name) checkbox.set_option("value", sobject.get_search_key()) return checkbox
def get_display(self): sobject = self.get_current_sobject() search_key = sobject.get_search_key() div = DivWdg() checkbox = CheckboxWdg("search_key") checkbox.set_option("value", search_key) div.add(checkbox) return div
def get_item_wdg(self, item, is_template=False): item_div = DivWdg() item_div.add_style("margin-top: 3px") if is_template == True: item_div.add_style("display: none") #item_div.add_style("border: solid 1px blue") item_div.add_class("spt_list_template_item") else: item_div.add_class("spt_list_item") outer = DivWdg() outer.add_style("float: left") outer.add_style("text-align: left") outer.add(item) if self.show_enabled: checkbox = CheckboxWdg("enabled") checkbox.add_style("float: left") checkbox.set_checked() else: checkbox = HiddenWdg("enabled") item_div.add(checkbox) #item_div.add(item) item_div.add(outer) from tactic.ui.widget import IconButtonWdg add_wdg = DivWdg() add_wdg.add_class("hand") add_wdg.add_class("SPT_DTS") #add_wdg.add("(+)") add_wdg.add_class("spt_add") button = IconButtonWdg(title="Add Entry", icon="BS_PLUS") add_wdg.add(button) add_wdg.add_style("float: left") add_wdg.add_style("opacity: 0.5") #add_wdg.add_style("margin: 3px") item_div.add(add_wdg) remove_wdg = DivWdg() remove_wdg.add_class("hand") remove_wdg.add_class("SPT_DTS") #remove_wdg.add("(-)") remove_wdg.add_class("spt_remove") button = IconButtonWdg(title="Remove Entry", icon="BS_REMOVE") remove_wdg.add(button) remove_wdg.add_style("float: left") remove_wdg.add_style("opacity: 0.5") #remove_wdg.add_style("margin: 3px") item_div.add(remove_wdg) item_div.add("<br clear='all'/>") return item_div
def get_display(self): top = DivWdg() top.add_class("spt_project_top") self.set_as_panel(top) inner = DivWdg() top.add(inner) inner.add_style("padding: 10px") inner.add_color("background", "background") inner.add("In this project, I want to manage: <br/><br/>") categories = [ 'Project Management', 'Asset Management', 'Budgets and Expenses', 'Ticketing' ] category_items = { 'Project Management': [ 'Tasks', 'Work Hours', 'Project Tasks', 'Scheduling', 'Task Pipelines' ], 'Asset Management': ['Central Asset Library'], 'Budgets and Expenses': ['Expense List'], 'Ticketing': [ 'Tickets', 'Sprints', 'Burn Down', ], } categories_div = DivWdg() inner.add(categories_div) for category in categories: category_div = DivWdg() categories_div.add(category_div) category_div.add(category) items = category_items.get(category) for item in items: item_div = DivWdg() category_div.add(item_div) item_div.add(" " * 5) checkbox = CheckboxWdg() item_div.add(checkbox) item_div.add(item) category_div.add_style("margin-bottom: 5px") return top
def get_export_wdg(my): div = DivWdg() """ # get the sync folder and dynamically load in the project #base_dir = "C:/Users/Southpaw/Dropbox/sync_share_folder" base_dir = "/home/apache/rsync" project_codes = ['game'] project_codes.sort() project_code = "game" server = "FL" server_code = "FL" """ div.add( "This will export out the current state of the project and can be reimported back in on a remote server<br/><br/>" ) div.add(my.get_security_wdg()) export_div = DivWdg() div.add(export_div) export_div.add_style("margin: 30px") checkbox = CheckboxWdg() export_div.add(checkbox) export_div.add(" " * 2) export_div.add("Export template") export_div.add("<br/>" * 2) checkbox = CheckboxWdg() export_div.add(checkbox) export_div.add(" " * 2) export_div.add("Export data") export_div.add("<br/>" * 2) checkbox = CheckboxWdg() export_div.add(checkbox) export_div.add(" " * 2) export_div.add("Export files") export_div.add("<br/>" * 2) return div
def get_create_view_wdg(my, search_type): # create popup create_popup = PopupWdg("create_action") create_popup.set_auto_hide(False) create_popup.add("Enter name of view: ") create_popup.add(TextWdg("create_view_name")) #create_popup.add( HtmlElement.br(2) ) #create_popup.add( "Copy from template: " ) #template_select = SelectWdg("copy_from_template") #template_select.add_empty_option("-- None --") #template_select.set_option("values", "list|summary|task") #create_popup.add( template_select ) create_popup.add(HtmlElement.br(2)) create_popup.add( CheckboxWdg('auto_create_edit', label='Auto Create Edit View')) create_popup.add(HtmlElement.br(2, clear="all")) from pyasm.prod.web import ProdIconButtonWdg, ProdIconSubmitWdg create_icon = ProdIconButtonWdg('Create') ajax = AjaxCmd() ajax.register_cmd("pyasm.widget.CustomCreateViewCbk") ajax.add_element_name("create_view_name") ajax.add_element_name("auto_create_edit") ajax.set_option("search_type", search_type) ajax.set_option("project", Project.get_project_code()) div = ajax.generate_div() div.set_post_ajax_script('document.form.submit()') create_icon.add_event( "onclick", "%s;%s" % (ajax.get_on_script(), "toggle_display('create_action')")) cancel_icon = ProdIconButtonWdg('Cancel') cancel_icon.add_event("onclick", "toggle_display('create_action')") span = SpanWdg() span.add(create_icon) span.add(cancel_icon) create_popup.add(span) create_popup.add(HtmlElement.br()) # add the create button create = IconButtonWdg("Create View", IconWdg.SAVE, True) create.add_event("onclick", "%s" % create_popup.get_on_script()) # lay it all out widget = Widget() widget.add(create_popup) widget.add(create) widget.add(div) return widget
def get_item_div(self, sobjects, related_type): item_div = DivWdg() item_div.add_style("margin: 15px 10px") sobject = sobjects[0] checkbox = CheckboxWdg('related_types') item_div.add(checkbox) checkbox.add_style("vertical-align: bottom") checkbox.set_attr("value", related_type) if related_type in ["sthpw/snapshot", "sthpw/file"]: checkbox.set_checked() checked_types = self.kwargs.get("checked_types") if checked_types == "__ALL__": checkbox.set_checked() item_div.add(" ") item_div.add(related_type) item_div.add(": ") if related_type.startswith("@SOBJECT"): related_sobjects = Search.eval(related_type, [sobject], list=True) else: try: related_sobjects = [] for sobject in sobjects: sobjs = sobject.get_related_sobjects(related_type) related_sobjects.extend(sobjs) except Exception as e: print("WARNING: ", e) related_sobjects = [] item_div.add("(%s)" % len(related_sobjects)) if len(related_sobjects) == 0: item_div.add_style("opacity: 0.5") return None else: # leave them unchecked for now to account for user's careless delete behavior pass # skip checking login by default to avoid accidental delete #if related_type != 'sthpw/login': # checkbox.set_checked() return item_div
def get_display(self): outer_div = DivWdg() outer_div.set_id('link_components_to_packages_div') table = Table() table.add_attr('id', 'link_components_to_packages_table') table.add_style('width', '100%') table.add_border(style='solid', color='#F2F2F2', size='1px') order_code = self.order_sobject.get_code() components = get_component_sobjects_from_order_code(order_code) packages = get_package_sobjects_from_order_code(order_code) existing_component_package_links = self.get_existing_entries( components, packages) package_row = table.add_row() table.add_cell(row=package_row) for package in packages: table.add_cell(package.get('name'), row=package_row) for component in components: component_row = table.add_row() component_row.set_id(component.get_code()) table.add_cell(component.get('name'), row=component_row) for package in packages: checkbox = CheckboxWdg(name='{0}_{1}'.format( component.get_code(), package.get_code())) if self.component_package_link_exists( component, package, existing_component_package_links): checkbox.set_checked() checkbox_cell = table.add_cell(checkbox) checkbox_cell.add_style('text-align', 'center') outer_div.add(table) submit_button = SubmitWdg('Submit') submit_button.add_behavior(self.get_submit_button_behavior()) outer_div.add(submit_button) return outer_div
def get_database_wdg(self): div = DivWdg() database_div = DivWdg() div.add(database_div) database_div.add(CheckboxWdg()) # Test database connection database_div.add("Test Database Connection") status_div = DivWdg() status_div.add_class("spt_diagnostics_database") status_div.add("Checking ...") div.add(status_div) return div
def setup_checkboxes_div(header_text, reasons_list): checkbox_table = Table() header_row = checkbox_table.add_row() header = checkbox_table.add_header(data=header_text, row=header_row) header.add_style('text-align', 'center') header.add_style('text-decoration', 'underline') for reason_id, reason_name in reasons_list: checkbox = CheckboxWdg(name=reason_id) checkbox_row = checkbox_table.add_row() checkbox_table.add_cell(data=checkbox, row=checkbox_row) checkbox_table.add_cell(data=reason_name, row=checkbox_row) return checkbox_table
def get_asset_management_wdg(self): div = DivWdg() div.add_class("spt_diagnostics_dam") handoff_div = DivWdg() handoff_div.add_behavior({ 'type': 'load', 'cbjs_action': ''' var server = TacticServerStub.get(); var handoff_dir = server.get_handoff_dir(); var applet = spt.Applet.get(); applet.makedirs(handoff_dir); var random_number=Math.floor(Math.random()*100) var filename = 'test'+random_number+'.txt'; applet.create_file(handoff_dir+'/'+filename, 'test'); var cmd = 'tactic.ui.app.DiagnosticsHandoffDirTestCmd'; var args = { handoff_dir: handoff_dir, filename: filename }; server.execute_cmd(cmd, args); var status_el = spt.get_cousin(bvr.src_el, ".spt_diagnostics_dam",".spt_diagnostics_handoff_status"); status_el.innerHTML = "OK"; ''' }) # Test handoff directory div.add(handoff_div) handoff_div.add(CheckboxWdg()) handoff_div.add("Test Handoff Directory") handoff_status_div = DivWdg() handoff_status_div.add_class("spt_diagnostics_handoff_status") handoff_status_div.add("Checking ...") div.add(handoff_status_div) return div
def get_format_wdg(my, value, format, display_value): div = DivWdg() if format not in ['Checkbox'] and value == '': return div if format == 'Checkbox': div.add_style("width: 100%") div.add_class("spt_boolean_top") from pyasm.widget import CheckboxWdg checkbox = CheckboxWdg(my.get_name()) checkbox.set_option("value", "true") if value: checkbox.set_checked() div.add(checkbox) checkbox.add_behavior({ 'type': 'click_up', 'propagate_evt': True, 'cbjs_action': ''' var cached_data = {}; var value_wdg = bvr.src_el; var top_el = bvr.src_el.getParent(".spt_boolean_top"); spt.dg_table.edit.widget = top_el; var key_code = spt.kbd.special_keys_map.ENTER; spt.dg_table.inline_edit_cell_cbk( value_wdg, cached_data ); ''' }) elif format == '-$1,234.00': if value < 0: div.add_style("color: red") div.add("(%s)" % display_value.replace("-", "")) else: div.add_style("color: black") div.add(display_value) else: div.add(display_value) return div
def get_equipment_checkboxes(self): equipment_search = Search('twog/equipment') equipment = equipment_search.get_sobjects() equipment_checkbox_table = Table() for equipment_sobject in equipment: checkbox = CheckboxWdg(name=equipment_sobject.get_code()) if equipment_sobject.get_code() in [equipment.get_code() for equipment in self.selected_equipment]: checkbox.set_checked() checkbox_row = equipment_checkbox_table.add_row() equipment_checkbox_table.add_cell(data=checkbox, row=checkbox_row) equipment_checkbox_table.add_cell(data=equipment_sobject.get_value('name'), row=checkbox_row) return equipment_checkbox_table
def get_asset_dir_wdg(self): div = DivWdg() asset_dir_div = DivWdg() div.add(asset_dir_div) asset_dir_div.add(CheckboxWdg()) asset_dir_div.add("Test Asset Directory") status = self.test_asset_dir() status_div = DivWdg() status_div.add_class("spt_diagnostics_asset_dir") status_div.add(status) div.add(status_div) return div
def handle_xml_mode(self, custom_table, mode): tbody = custom_table.add_tbody() tbody.add_class("spt_custom_xml") if mode != 'xml': tbody.add_style('display: none') # extra for custom config_xml custom_table.add_row() td = custom_table.add_cell() td.add("Config XML Definition") div = DivWdg() div.set_id("config_xml_options") #div.add_style("display: none") div.add_style("margin-top: 10px") default = ''' <element name=''> <display class=''> <option></option> </display> </element> ''' config_xml_wdg = TextAreaWdg("config_xml") config_xml_wdg.set_option("rows", "8") config_xml_wdg.set_option("cols", "50") config_xml_wdg.set_value(default) div.add(config_xml_wdg) custom_table.add_cell(div) # create columns custom_table.add_row() td = custom_table.add_cell() create_columns_wdg = CheckboxWdg("create_columns") create_columns_wdg.set_checked() td.add("Create required columns? ") td = custom_table.add_cell() td.add(create_columns_wdg) custom_table.close_tbody()
def get_load_balance_wdg(my): div = DivWdg() div.add_class("spt_diagnostics_load_balance") load_div = DivWdg() div.add(load_div) load_div.add_behavior( { 'type': 'load', 'cbjs_action': ''' var server = TacticServerStub.get(); var ports = {}; var num_ports = 0; for (var i=0; i<10; i++) { var info = server.get_connection_info(); var port = info.port; if (typeof(ports[port]) == 'undefined') { ports[port] = 0; num_ports += 1; } ports[port] += 1 } var msg = "Number of ports: "+num_ports; var status_el = spt.get_cousin(bvr.src_el, ".spt_diagnostics_load_balance",".spt_diagnostics_load_status"); status_el.innerHTML = "OK - "+msg; ''' } ) # Test load balancing load_div.add( CheckboxWdg() ) load_div.add("Test Load Balancing") load_status_div = DivWdg() load_status_div.add_class("spt_diagnostics_load_status") load_status_div.add("Checking ...") div.add(load_status_div) return div
def get_display(self): search_wdg = DivWdg() search_wdg.add_class("spt_table_search") prefix = HiddenWdg("prefix", "introspect") search_wdg.add(prefix) hidden = HiddenWdg("introspect", "true") search_wdg.add(hidden) class_name = HiddenWdg("class_name", "tactic.ui.cgapp.IntrospectWdg") search_wdg.add(class_name) checkbox = CheckboxWdg("search") search_wdg.add("Session Filter: ") search_wdg.add(checkbox) self.top.add(search_wdg) return self.top
def get_files_checkboxes(self): file_in_package_sobjects = get_file_in_package_sobjects_by_package_code(self.package_sobject.get_code()) file_sobjects = get_file_sobjects_from_file_in_package_sobjects(file_in_package_sobjects) files_checkbox_table = Table() header_row = files_checkbox_table.add_row() header = files_checkbox_table.add_header(data='Files', row=header_row) header.add_style('text-align', 'center') header.add_style('text-decoration', 'underline') for file_sobject, file_in_package_sobject in zip(file_sobjects, file_in_package_sobjects): checkbox = CheckboxWdg(name=file_sobject.get_code()) checkbox_row = files_checkbox_table.add_row() files_checkbox_table.add_cell(data=checkbox, row=checkbox_row) files_checkbox_table.add_cell(data=file_sobject.get_value('file_path'), row=checkbox_row) return files_checkbox_table
def get_files_checkbox_for_task(self): files_checkbox_table = Table() header_row = files_checkbox_table.add_row() header = files_checkbox_table.add_header(data='Files', row=header_row) header.add_style('text-align', 'center') header.add_style('text-decoration', 'underline') for file_sobject in self.order_files: checkbox = CheckboxWdg(name=file_sobject.get_code()) if file_sobject.get_code() in [selected_file.get_code() for selected_file in self.selected_files]: checkbox.set_checked() checkbox_row = files_checkbox_table.add_row() files_checkbox_table.add_cell(data=checkbox, row=checkbox_row) files_checkbox_table.add_cell(data=file_sobject.get_value('file_path'), row=checkbox_row) return files_checkbox_table