def _process_task(my, task, mode): project = Project.get_project_code() if not task.kwargs.get("user"): user = Environment.get_user_name() if not task.kwargs.get("project"): project_code = Project.get_project_code() task.kwargs['project'] = project_code task.kwargs['mode'] = mode
def copy_sobject(my, sobject, dst_search_type, context=None, checkin_mode='inplace'): new_sobject = SearchType.create(dst_search_type) search_type = SearchType.get(dst_search_type) columns = SearchType.get_columns(dst_search_type) data = sobject.get_data() for name, value in data.items(): if name in ['id','pipeline_code']: continue if name not in columns: continue if not value: continue if name == "code": value = Common.get_next_sobject_code(sobject, 'code') if not value: continue new_sobject.set_value(name, value) if SearchType.column_exists(dst_search_type, "project_code"): project_code = Project.get_project_code() new_sobject.set_value("project_code", project_code) new_sobject.commit() # get all of the current snapshots and file paths associated if not context: snapshots = Snapshot.get_all_current_by_sobject(sobject) else: snapshots = [Snapshot.get_current_by_sobject(sobject, context)] if not snapshots: return msgs = [] for snapshot in snapshots: #file_paths = snapshot.get_all_lib_paths() file_paths_dict = snapshot.get_all_paths_dict() file_types = file_paths_dict.keys() if not file_types: continue # make sure the paths match the file_types file_paths = [file_paths_dict.get(x)[0] for x in file_types] mode = checkin_mode # checkin the files (inplace) try: context = snapshot.get_value('context') checkin = FileCheckin(new_sobject, context=context, file_paths=file_paths, file_types=file_types, mode=mode) checkin.execute() #print "done: ", context, new_sobject.get_related_sobjects("sthpw/snapshot") except CheckinException, e: msgs.append('Post-process Check-in Error for %s: %s ' %(context, e.__str__()))
def execute(self): self.base_dir = self.kwargs.get("base_dir") if not self.base_dir: self.base_dir = Environment.get_template_dir() self.project_code = self.kwargs.get("project_code") if not self.project_code: self.project_code = Project.get_project_code() assert self.project_code # project code can be called anything, and we want to have a _template suffix for the template code #self.plugin_code = "%s_template" % self.project_code #self.template_project_code = re.sub( '_template$', '', self.plugin_code) self.template_project_code = self.project_code self.project = Project.get_by_code(self.project_code) if not self.project: raise TacticException('This project [%s] does not exist'%self.project_code) self.project_type = self.project.get_value("type") if not self.project_type: self.project_type = self.project_code Project.set_project(self.project_code) self.export_template()
def get_display(self): web = WebContainer.get_web() user = WebContainer.get_user_name() local_dir = web.get_local_dir() context_url = web.get_site_context_url().to_string() server = web.get_base_url().to_string() upload_url = web.get_upload_url() html = Html() html.writeln('<script language="JavaScript" src="resource:///res/RunHCommand.js"></script>') html.writeln('''\n<script>try{ app = new PyHoudini(); } catch(e){ app = null;} if (app) { app.user = '******'; app.local_dir = '%(local_dir)s'; app.context_url = '%(context_url)s'; app.base_url = '%(server)s'; app.upload_url = '%(upload_url)s'; app.project_code = '%(project_code)s';} </script>'''%{'user': user, 'local_dir': local_dir, 'context_url' : context_url, 'server': server, 'upload_url': upload_url, 'project_code': Project.get_project_code()}) return html
def copy_sobject(self, sobject, dst_search_type, context=None, checkin_mode='inplace'): new_sobject = SearchType.create(dst_search_type) search_type = SearchType.get(dst_search_type) columns = SearchType.get_columns(dst_search_type) data = sobject.get_data() for name, value in data.items(): if name in ['id','pipeline_code']: continue if name not in columns: continue if not value: continue if name == "code": value = Common.get_next_sobject_code(sobject, 'code') if not value: continue new_sobject.set_value(name, value) if SearchType.column_exists(dst_search_type, "project_code"): project_code = Project.get_project_code() new_sobject.set_value("project_code", project_code) new_sobject.commit() # get all of the current snapshots and file paths associated if not context: snapshots = Snapshot.get_all_current_by_sobject(sobject) else: snapshots = [Snapshot.get_current_by_sobject(sobject, context)] if not snapshots: return msgs = [] for snapshot in snapshots: #file_paths = snapshot.get_all_lib_paths() file_paths_dict = snapshot.get_all_paths_dict() file_types = file_paths_dict.keys() if not file_types: continue # make sure the paths match the file_types file_paths = [file_paths_dict.get(x)[0] for x in file_types] mode = checkin_mode # checkin the files (inplace) try: context = snapshot.get_value('context') checkin = FileCheckin(new_sobject, context=context, file_paths=file_paths, file_types=file_types, mode=mode) checkin.execute() #print "done: ", context, new_sobject.get_related_sobjects("sthpw/snapshot") except CheckinException, e: msgs.append('Post-process Check-in Error for %s: %s ' %(context, e.__str__()))
def get_display(my): widget = DivWdg() my.set_as_panel(widget, class_name='spt_view_panel spt_panel') # create a table widget and set the sobjects to it table_id = "main_body_table" filter = my.kwargs.get('filter') table = TableLayoutWdg(table_id=table_id, search_type="sthpw/timecard", \ view="table", inline_search=True, filter=filter, search_view='search' ) search_type = "sthpw/timecard" from tactic.ui.app import SearchWdg search_wdg = SearchWdg(search_type=search_type, view='search', filter=filter) widget.add(search_wdg) search = search_wdg.get_search() # FIX to current project timecard for now search.add_filter('project_code', Project.get_project_code()) #search.add_project_filter() table.alter_search(search) print "SEA ", search.get_statement() sobjects = search.get_sobjects() print "SOB ", sobjects table.set_sobjects(sobjects, search) widget.add(table) #widget.add(SpecialDayWdg()) return widget
def clear_db_cache(cls): Container.put(cls.KEY, None) from pyasm.biz import Project project_code = Project.get_project_code() key = "%s:%s" % (cls.KEY, project_code) Container.put(key, None)
def execute(my): my.base_dir = my.kwargs.get("base_dir") if not my.base_dir: my.base_dir = Environment.get_template_dir() my.project_code = my.kwargs.get("project_code") if not my.project_code: my.project_code = Project.get_project_code() assert my.project_code # project code can be called anything, and we want to have a _template suffix for the template code #my.plugin_code = "%s_template" % my.project_code #my.template_project_code = re.sub( '_template$', '', my.plugin_code) my.template_project_code = my.project_code my.project = Project.get_by_code(my.project_code) if not my.project: raise TacticException('This project [%s] does not exist' % my.project_code) my.project_type = my.project.get_value("type") if not my.project_type: my.project_type = my.project_code Project.set_project(my.project_code) my.export_template()
def get(cls, texture_code, parent_code, project_code=None, is_multi=False): if not project_code: project_code = Project.get_project_code() search = Search(cls.SEARCH_TYPE, project_code) #search.set_show_retired(True) if texture_code: search.add_filter('code', texture_code) # backward compatible with using shot code if isinstance(parent_code, basestring): from pyasm.prod.biz import Shot parent = Shot.get_by_code(parent_code) else: parent = parent_code if not parent: if is_multi: return [] else: return None search.add_filter('search_type', parent.get_search_type()) search.add_filter('search_id', parent.get_id()) parent_key = SearchKey.get_by_sobject(parent) search_type = search.get_search_type() key = "%s|%s|%s" % (search_type, texture_code, parent_key) sobj = cls.get_by_search(search, key, is_multi=is_multi) return sobj
def get_defaults(self): '''specifies the defaults for this sobject''' project_code = Project.get_project_code() me = Environment.get_user_name() defaults = {"project_code": project_code, "login": me} return defaults
def get_to(my): recipients = super(GeneralPublishEmailHandler, my).get_to() sobj = my.sobject search = Search(Task) search_type = sobj.get_search_type() search_id = sobj.get_id() search.add_filter('search_type', search_type) search.add_filter('search_id', search_id) # it will get the context if process not found #search.add_filter('process', note.get_process()) from pyasm.biz import Project search.add_filter('project_code', Project.get_project_code()) tasks = search.get_sobjects() for task in tasks: assigned = my._get_login(task.get_assigned()) if assigned: recipients.add(assigned) supe = my._get_login(task.get_supervisor()) if supe: recipients.add(supe) return recipients
def get_display(self): web = WebContainer.get_web() user = WebContainer.get_user_name() local_dir = web.get_local_dir() context_url = web.get_site_context_url().to_string() server = web.get_base_url().to_string() upload_url = web.get_upload_url() html = Html() html.writeln( '<script language="JavaScript" src="resource:///res/RunHCommand.js"></script>' ) html.writeln( '''\n<script>try{ app = new PyHoudini(); } catch(e){ app = null;} if (app) { app.user = '******'; app.local_dir = '%(local_dir)s'; app.context_url = '%(context_url)s'; app.base_url = '%(server)s'; app.upload_url = '%(upload_url)s'; app.project_code = '%(project_code)s';} </script>''' % { 'user': user, 'local_dir': local_dir, 'context_url': context_url, 'server': server, 'upload_url': upload_url, 'project_code': Project.get_project_code() }) return html
def execute(self): # save prefix local_prefix = self.get_value("local_prefix") self.server_prefix = Config.get_value("install", "server") if not local_prefix and not self.server_prefix: raise TacticException("Cannot have empty local server prefix") if local_prefix and local_prefix != self.server_prefix: Config.set_value("install", "server", local_prefix) Config.save_config() self.project_code = self.get_value("project") if not self.project_code: self.project_code = Project.get_project_code() # create a share share = SearchType.create("sthpw/sync_server") self.handle_info(share) self.handle_sync_mode(share) share.commit()
def get_to(my): recipients = super(GeneralPublishEmailHandler, my).get_to() sobj = my.sobject search = Search(Task) search_type = sobj.get_search_type() search_id = sobj.get_id() search.add_filter('search_type', search_type) search.add_filter('search_id', search_id ) # it will get the context if process not found #search.add_filter('process', note.get_process()) from pyasm.biz import Project search.add_filter('project_code', Project.get_project_code()) tasks = search.get_sobjects() for task in tasks: assigned = my._get_login(task.get_assigned()) if assigned: recipients.add(assigned) supe = my._get_login(task.get_supervisor()) if supe: recipients.add(supe) return recipients
def postprocess(self): web = WebContainer.get_web() values = web.get_form_values("select_key") if not values or values == ['']: return dst_sobject = self.sobject project_code = Project.get_project_code() for value in values: src_sobject = Search.get_by_search_key(value) if not src_sobject: continue connection = SearchType.create("sthpw/connection") connection.set_value("src_search_type", src_sobject.get_search_type()) connection.set_value("dst_search_type", dst_sobject.get_search_type()) connection.set_value("src_search_id", src_sobject.get_id()) connection.set_value("dst_search_id", dst_sobject.get_id()) connection.set_value("context", "reference") connection.set_value("project_code", project_code) connection.commit()
def execute(self): self.base_dir = self.kwargs.get("base_dir") if not self.base_dir: self.base_dir = Environment.get_template_dir() self.project_code = self.kwargs.get("project_code") if not self.project_code: self.project_code = Project.get_project_code() assert self.project_code # project code can be called anything, and we want to have a _template suffix for the template code #self.plugin_code = "%s_template" % self.project_code #self.template_project_code = re.sub( '_template$', '', self.plugin_code) self.template_project_code = self.project_code self.project = Project.get_by_code(self.project_code) if not self.project: raise TacticException('This project [%s] does not exist' % self.project_code) self.project_type = self.project.get_value("type") if not self.project_type: self.project_type = self.project_code Project.set_project(self.project_code) self.export_template()
def _get_result(my, sobject): # get the parent or relation column = my.get_column() parent_id = sobject.get_value(column) parent = my.parents_dict.get(parent_id) if not parent: return super(ForeignKeyElementWdg,my).get_display() template = my.get_option('template') # if not set, then look at the schema if not template: schema = Schema.get_by_project_code( Project.get_project_code() ) search_type = parent.get_base_search_type() template = schema.get_attr_by_search_type(search_type,'display_template') if template: value = NamingUtil.eval_template(template, sobject, parent=parent) else: # NOTE: put something ... anything as a default columns = parent.get_search_type_obj().get_columns() if not len(columns): value = parent.get_value(columns[0]) else: value = parent.get_value(columns[1]) return value
def get_db_triggers(cls): site_triggers = Container.get(cls.KEY) if site_triggers == None: # find all of the triggers search = Search("sthpw/trigger") search.add_project_filter() site_triggers = search.get_sobjects() Container.put(cls.KEY, site_triggers) # find all of the project triggers from pyasm.biz import Project project_code = Project.get_project_code() key = "%s:%s" % (cls.KEY, project_code) project_triggers = Container.get(key) if project_triggers == None: if project_code not in ['admin', 'sthpw']: try: search = Search("config/trigger") project_triggers = search.get_sobjects() except SearchException, e: print "WARNING: ", e project_triggers = [] else: project_triggers = [] Container.put(key, project_triggers)
def get_security_wdg(my): div = DivWdg() div.add_class("spt_security") div.add( "A server can sync either be scoped for a single project or all projects. Transactions that occur in the admin project never get synced." ) div.add("<br/>" * 2) div.add("Project: ") search = Search("sthpw/project") search.add_filters("code", ['admin', 'unittest'], op='not in') search.add_order_by("title") projects = search.get_sobjects() select = SelectWdg("projects") div.add(select) labels = [x.get_value("title") for x in projects] values = [x.get_value("code") for x in projects] project_code = Project.get_project_code() if project_code != 'admin': select.set_value(project_code) select.set_option("labels", labels) select.set_option("values", values) select.add_empty_option("-- All --") div.add("<br/>" * 2) return div
def get_security_wdg(self): div = DivWdg() div.add_class("spt_security") div.add("A server can sync either be scoped for a single project or all projects. Transactions that occur in the admin project never get synced.") div.add("<br/>"*2) div.add("Project: ") search = Search("sthpw/project") search.add_filters("code", ['admin','unittest'], op='not in') search.add_order_by("title") projects = search.get_sobjects() select = SelectWdg("projects") div.add(select) labels = [x.get_value("title") for x in projects] values = [x.get_value("code") for x in projects] project_code = Project.get_project_code() if project_code != 'admin': select.set_value(project_code) select.set_option("labels", labels) select.set_option("values", values) select.add_empty_option("-- All --") div.add("<br/>"*2) return div
def get_db_triggers(cls): site_triggers = Container.get(cls.KEY) if site_triggers == None: # find all of the triggers search = Search("sthpw/trigger") search.add_project_filter() site_triggers = search.get_sobjects() Container.put(cls.KEY, site_triggers) # find all of the project triggers from pyasm.biz import Project project_code = Project.get_project_code() key = "%s:%s" % (cls.KEY, project_code) project_triggers = Container.get(key) if project_triggers == None: if project_code not in ['admin','sthpw']: try: search = Search("config/trigger") project_triggers = search.get_sobjects() except SearchException, e: print "WARNING: ", e project_triggers = [] else: project_triggers = [] Container.put(key, project_triggers)
def get_display(my): web = WebContainer.get_web() user = WebContainer.get_user_name() local_dir = web.get_local_dir() context_url = web.get_site_context_url().to_string() server = web.get_base_url().to_string() upload_url = web.get_upload_url() html = Html() html.writeln('''\n<script>try{ app = new PyXSI(); } catch(e){ app = null;} if (app) { app.user = '******'; app.local_dir = '%(local_dir)s'; app.context_url = '%(context_url)s'; app.base_url = '%(server)s'; app.upload_url = '%(upload_url)s'; app.project_code = '%(project_code)s';} </script>'''%{'user': user, 'local_dir': local_dir, 'context_url' : context_url, 'server': server, 'upload_url': upload_url, 'project_code': Project.get_project_code()}) return html
def add(command, kwargs, queue_type, priority, description, message_code=None): queue = SearchType.create("sthpw/queue") queue.set_value("project_code", Project.get_project_code()) #queue.set_sobject_value(sobject) if not queue_type: queue_type = "default" queue.set_value("queue", queue_type) queue.set_value("state", "pending") queue.set_value("login", Environment.get_user_name()) queue.set_value("command", command) data = jsondumps(kwargs) queue.set_value("data", data) if message_code: queue.set_value("message_code", message_code) if not priority: priority = 9999 queue.set_value("priority", priority) if description: queue.set_value("description", description) queue.set_user() queue.commit() return queue
def execute(my): my.base_dir = my.kwargs.get("base_dir") if not my.base_dir: my.base_dir = Environment.get_template_dir() my.project_code = my.kwargs.get("project_code") if not my.project_code: my.project_code = Project.get_project_code() assert my.project_code # project code can be called anything, and we want to have a _template suffix for the template code #my.plugin_code = "%s_template" % my.project_code #my.template_project_code = re.sub( '_template$', '', my.plugin_code) my.template_project_code = my.project_code my.project = Project.get_by_code(my.project_code) if not my.project: raise TacticException('This project [%s] does not exist'%my.project_code) my.project_type = my.project.get_value("type") if not my.project_type: my.project_type = my.project_code Project.set_project(my.project_code) my.export_template()
def get_notification_wdg(my): widget = Widget() nav = DivWdg(css="filter_box") widget.add(nav) search_filter = SearchFilterWdg(columns=['subject', 'message']) nav.add(search_filter) project_code = Project.get_project_code() user_name = Environment.get_user_name() # get all the notifications that were sent to you search = Search("sthpw/notification_login") search.add_filter("login", user_name) search.add_filter("project_code", project_code) #search.add_filter("type", "to") notification_logins = search.get_sobjects() notification_ids = [x.get_value("notification_log_id") for x in notification_logins] table = TableWdg("sthpw/notification_log") search = Search("sthpw/notification_log") search.add_filter("project_code", project_code) search.add_filters("id", notification_ids) search_filter.alter_search(search) table.set_search(search) widget.add(table) return widget
def get_by_key(key, auto_create=True): login = WebContainer.get_user_name() dict_key = '%s:%s' % (WidgetSettings.SEARCH_TYPE, login) settings_dict = Container.get(dict_key) setting = None if not settings_dict: settings_dict = {} Container.put(dict_key, settings_dict) search = Search(WidgetSettings.SEARCH_TYPE) search.add_filter("project_code", Project.get_project_code()) search.add_filter("login", login) settings = search.get_sobjects() for setting in settings: settings_dict[setting.get_value('key')] = setting setting = settings_dict.get(key) # autocreate if it does not exist if auto_create and setting == None: setting = WidgetSettings.create(key) settings_dict[setting.get_value('key')] = setting return setting
def _get_result(self, sobject): # get the parent or relation column = self.get_column() parent_id = sobject.get_value(column) parent = self.parents_dict.get(parent_id) if not parent: return super(ForeignKeyElementWdg,self).get_display() template = self.get_option('template') # if not set, then look at the schema if not template: schema = Schema.get_by_project_code( Project.get_project_code() ) search_type = parent.get_base_search_type() template = schema.get_attr_by_search_type(search_type,'display_template') if template: value = NamingUtil.eval_template(template, sobject, parent=parent) else: # NOTE: put something ... anything as a default columns = parent.get_search_type_obj().get_columns() if not len(columns): value = parent.get_value(columns[0]) else: value = parent.get_value(columns[1]) return value
def add(command, kwargs, queue_type, priority, description, message_code=None): queue = SearchType.create("sthpw/queue") queue.set_value("project_code", Project.get_project_code()) #queue.set_sobject_value(sobject) queue.set_value("queue", queue_type) queue.set_value("state", "pending") queue.set_value("login", Environment.get_user_name()) queue.set_value("command", command) data = jsondumps(kwargs) queue.set_value("data", data) if message_code: queue.set_value("message_code", message_code) queue.set_value("priority", priority) queue.set_value("description", description) queue.set_user() queue.commit() return queue
def get_by_key(key, auto_create=True): login = WebContainer.get_user_name() dict_key = '%s:%s' %(WidgetSettings.SEARCH_TYPE, login) settings_dict = Container.get(dict_key) setting = None if not settings_dict: settings_dict = {} Container.put(dict_key, settings_dict) search = Search(WidgetSettings.SEARCH_TYPE) search.add_filter("project_code", Project.get_project_code()) search.add_filter("login", login) settings = search.get_sobjects() for setting in settings: settings_dict[setting.get_value('key')] = setting setting = settings_dict.get(key) # autocreate if it does not exist if auto_create and setting == None: setting = WidgetSettings.create(key) settings_dict[setting.get_value('key')] = setting return setting
def get(cls, texture_code, parent_code, project_code=None, is_multi=False): if not project_code: project_code = Project.get_project_code() search = Search( cls.SEARCH_TYPE, project_code ) #search.set_show_retired(True) if texture_code: search.add_filter('code', texture_code) # backward compatible with using shot code if isinstance(parent_code, basestring): from pyasm.prod.biz import Shot parent = Shot.get_by_code(parent_code) else: parent = parent_code if not parent: if is_multi: return [] else: return None search.add_filter('search_type', parent.get_search_type()) search.add_filter('search_id', parent.get_id()) parent_key = SearchKey.get_by_sobject(parent) search_type = search.get_search_type() key = "%s|%s|%s" % (search_type, texture_code, parent_key) sobj = cls.get_by_search(search, key, is_multi=is_multi) return sobj
def get_project_url(self): base_url = self.get_base_url() site_url = self.get_site_url().to_string() base_url.append_to_base(site_url) project_code = Project.get_project_code() base_url.append_to_base( project_code ) return base_url
def get_project_url(self): base_url = self.get_base_url() site_url = self.get_site_url().to_string() base_url.append_to_base(site_url) project_code = Project.get_project_code() base_url.append_to_base(project_code) return base_url
def is_admin_page(my): project_code = Project.get_project_code() request_url = my.get_request_url() request_str = request_url.to_string() if request_str.endswith("/%s/admin" % project_code) or request_str.endswith("/admin/Index"): return True else: return False
def get_context_data(self, search_type=None): '''get the list of contexts that can be checked in with this widget''' # usually there is no pipeline for prod/shot_instance #search_type = self.search_type labels, values = Pipeline.get_process_select_data(search_type, \ project_code=Project.get_project_code()) return labels, values
def execute(my): my.search_type = my.kwargs.get("search_type") my.element_name = my.kwargs.get("element_name") assert my.search_type assert my.element_name interval = my.kwargs.get('interval') if not interval: interval = 120 data_type = my.kwargs.get('data_type') if not data_type: data_type = 'float' class_name = 'tactic.ui.app.aggregate_wdg.AggregateCmd' priority = None user = Environment.get_user_name() # these interval jobs need to have a specific code code = "aggregate|%s|%s" % (my.search_type, my.element_name) # check to see if the job exists job = Search.get_by_code("sthpw/queue", code) if not job: job = SearchType.create("sthpw/queue") job.set_value("code", code) job.set_value("project_code", Project.get_project_code() ) job.set_value("class_name", class_name) job.set_value("command", class_name) job.set_value("login", user) job.set_value("queue", 'interval') # this is meaningless job.set_value("priority", 9999) # not sure what to do here if it already exists job.set_value("state", 'pending') # add a column to the table from pyasm.command import ColumnAddCmd from pyasm.search import AlterTable column_name = my.element_name cmd = ColumnAddCmd(my.search_type, column_name, data_type) cmd.execute() # modify the table #alter = AlterTable(my.search_type) #alter.modify(my.search_type, data_type) #print alter.get_statements() job.set_value("serialized", str(my.kwargs) ) job.set_value("interval", interval) job.commit()
def is_admin_page(self): project_code = Project.get_project_code() request_url = self.get_request_url() request_str = request_url.to_string() if request_str.endswith("/%s/admin" % project_code) or \ request_str.endswith("/admin/Index"): return True else: return False
def get_edit_menu(my): opt_spec_list = [] security = Environment.get_security() project_code = Project.get_project_code() access_keys = my._get_access_keys("retire_delete", project_code) if security.check_access("builtin", access_keys, "allow"): if not my.layout or my.layout.can_select(): opt_spec_list.extend( [ { "type": "action", "label": "Retire Selected Items", "bvr_cb": {"cbjs_action": "spt.dg_table.gear_smenu_retire_selected_cbk(evt,bvr);"}, }, { "type": "action", "label": "Delete Selected Items", "bvr_cb": { "cbjs_action": """ spt.dg_table.gear_smenu_delete_selected_cbk(evt,bvr); """ }, }, {"type": "separator"}, ] ) opt_spec_list.extend( [ { "type": "action", "label": "Show Server Transaction Log", "bvr_cb": { "cbjs_action": "spt.popup.get_widget(evt, bvr)", "options": { "class_name": "tactic.ui.popups.TransactionPopupWdg", "title": "Transaction Log", "popup_id": "TransactionLog_popup", }, }, } ] ) # MTM TURNED OFF TO PREVENT AUTO-UNDOING # # { "type": "separator" }, # # { "type": "action", "label": "Undo Last Server Transaction", # "bvr_cb": {'cbjs_action': "spt.undo_cbk(evt, bvr);"} # }, # # { "type": "action", "label": "Redo Last Server Transaction", # "bvr_cb": {'cbjs_action': "spt.redo_cbk(evt, bvr);"} # }, return {"menu_tag_suffix": "EDIT", "width": 200, "opt_spec_list": opt_spec_list}
def get_context_data(my, search_type=None): '''get the list of contexts that can be checked in with this widget''' # usually there is no pipeline for prod/shot_instance #search_type = my.search_type labels, values = Pipeline.get_process_select_data(search_type, \ project_code=Project.get_project_code()) return labels, values
def get_display(my): web = WebContainer.get_web() if not my.view: view = web.get_form_value("filter|view") # 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, 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", my.search_type) ajax.set_option("project", Project.get_project_code()) if my.view: ajax.set_option("template_view", my.view) create_icon.add_event( "onclick", "%s;%s" % (ajax.get_on_script(), "toggle_display('create_action');setTimeout('document.form.submit()',1000)"), ) 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) # Browser does not have create # widget.add(create) return widget
def get_defaults(self): '''specifies the defaults for this sobject''' project_code = Project.get_project_code() me = Environment.get_user_name() defaults = { "project_code": project_code, "login": me } return defaults
def get_widget_url(self): url = self.get_site_url() url.append_to_base( "default" ) project_code = Project.get_project_code() url.set_option("project", project_code) url.append_to_base("WidgetServer/") return url
def get_widget_url(self): url = self.get_site_url() url.append_to_base("default") project_code = Project.get_project_code() url.set_option("project", project_code) url.append_to_base("WidgetServer/") return url
def execute(self): self.search_type = self.kwargs.get("search_type") self.element_name = self.kwargs.get("element_name") assert self.search_type assert self.element_name interval = self.kwargs.get('interval') if not interval: interval = 120 data_type = self.kwargs.get('data_type') if not data_type: data_type = 'float' class_name = 'tactic.ui.app.aggregate_wdg.AggregateCmd' priority = None user = Environment.get_user_name() # these interval jobs need to have a specific code code = "aggregate|%s|%s" % (self.search_type, self.element_name) # check to see if the job exists job = Search.get_by_code("sthpw/queue", code) if not job: job = SearchType.create("sthpw/queue") job.set_value("code", code) job.set_value("project_code", Project.get_project_code()) job.set_value("class_name", class_name) job.set_value("command", class_name) job.set_value("login", user) job.set_value("queue", 'interval') # this is meaningless job.set_value("priority", 9999) # not sure what to do here if it already exists job.set_value("state", 'pending') # add a column to the table from pyasm.command import ColumnAddCmd from pyasm.search import AlterTable column_name = self.element_name cmd = ColumnAddCmd(self.search_type, column_name, data_type) cmd.execute() # modify the table #alter = AlterTable(self.search_type) #alter.modify(self.search_type, data_type) #print alter.get_statements() job.set_value("serialized", str(self.kwargs)) job.set_value("interval", interval) job.commit()
def get_display(my): web = WebContainer.get_web() if not my.view: view = web.get_form_value("filter|view") # 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, 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", my.search_type) ajax.set_option("project", Project.get_project_code()) if my.view: ajax.set_option("template_view", my.view) create_icon.add_event( "onclick", "%s;%s" % (ajax.get_on_script(), "toggle_display('create_action');setTimeout('document.form.submit()',1000)" )) 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) # Browser does not have create #widget.add(create) return widget
def create(key): login = WebContainer.get_login().get_login() settings = SObjectFactory.create(WidgetSettings.SEARCH_TYPE) settings.set_value("key",key) settings.set_value("login",login) settings.set_value("data","") settings.set_value("project_code", Project.get_project_code()) settings.commit(triggers=False) return settings
def create(key): login = WebContainer.get_login().get_login() settings = SObjectFactory.create(WidgetSettings.SEARCH_TYPE) settings.set_value("key", key) settings.set_value("login", login) settings.set_value("data", "") settings.set_value("project_code", Project.get_project_code()) settings.commit(triggers=False) return settings
def check(self): self.search_type = self.kwargs.get("search_type") self.values = self.kwargs.get("values") self.db_resource = SearchType.get_db_resource_by_search_type(self.search_type) self.database = self.db_resource.get_database() self.search_type_obj = SearchType.get(self.search_type) if self.database != Project.get_project_code() and self.database !='sthpw': raise TacticException('You are not allowed to delete the sType [%s] from another project [%s].' %(self.search_type, self.database)) return False return True
def check(my): my.search_type = my.kwargs.get("search_type") my.values = my.kwargs.get("values") my.db_resource = SearchType.get_db_resource_by_search_type(my.search_type) my.database = my.db_resource.get_database() my.search_type_obj = SearchType.get(my.search_type) if my.database != Project.get_project_code() and my.database !='sthpw': raise TacticException('You are not allowed to delete the sType [%s] from another project [%s].' %(my.search_type, my.database)) return False return True
def get_edit_menu(my): opt_spec_list = [] security = Environment.get_security() project_code = Project.get_project_code() access_keys = my._get_access_keys("retire_delete", project_code) if security.check_access("builtin", access_keys, "allow"): if not my.layout or my.layout.can_select(): opt_spec_list.extend([ { "type": "action", "label": "Retire Selected Items", "bvr_cb": {'cbjs_action': "spt.dg_table.gear_smenu_retire_selected_cbk(evt,bvr);"} }, { "type": "action", "label": "Delete Selected Items", "bvr_cb": {'cbjs_action': ''' spt.dg_table.gear_smenu_delete_selected_cbk(evt,bvr); '''} }, {"type": "separator"} ]) opt_spec_list.extend([ { "type": "action", "label": "Show Server Transaction Log", "bvr_cb": { 'cbjs_action': "spt.popup.get_widget(evt, bvr)", 'options': { 'class_name': 'tactic.ui.popups.TransactionPopupWdg', 'title': 'Transaction Log', 'popup_id': 'TransactionLog_popup' } } }, { "type": "separator" }, { "type": "action", "label": "Undo Last Server Transaction", "bvr_cb": {'cbjs_action': "spt.undo_cbk(evt, bvr);"} }, { "type": "action", "label": "Redo Last Server Transaction", "bvr_cb": {'cbjs_action': "spt.redo_cbk(evt, bvr);"} }, ]) return { 'menu_tag_suffix': 'EDIT', 'width': 200, 'opt_spec_list': opt_spec_list}
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_next_redo(): from pyasm.biz import Project namespace = Project.get_project_code() user_name = Environment.get_user_name() search = Search("sthpw/transaction_log") search.add_filter("login", user_name) search.add_filter("namespace", namespace) search.add_filter("type", "redo") search.add_order_by("timestamp") sobject = search.get_sobject() return sobject
def get(cls, texture_code, parent_code, project_code=None, is_multi=False): '''TODO: use search_type, id for the parent search''' if not project_code: project_code = Project.get_project_code() search = Search(cls.SEARCH_TYPE, project_code) #search.set_show_retired(True) if texture_code: search.add_filter('code', texture_code) search.add_filter('asset_code', parent_code) search_type = search.get_search_type() key = "%s|%s|%s" % (search_type, texture_code, parent_code) sobj = cls.get_by_search(search, key, is_multi=is_multi) return sobj
def get_last(type=None): #namespace = SearchType.get_project() from pyasm.biz import Project namespace = Project.get_project_code() user_name = Environment.get_user_name() search = Search("sthpw/transaction_log") search.add_filter("login", user_name) search.add_filter("namespace", namespace) if type: search.add_filter("type", type) search.add_order_by("timestamp desc") sobject = search.get_sobject() return sobject