def get_sobject_base(my, dirs): # add <project_code>/<table> search_type_obj = my.sobject.get_search_type_obj() project_code = my.sobject.get_project().get_code() dirs.append( project_code ) #db_name = search_type_obj.get_database() #dirs.append( db_name ) from pyasm.biz import ProdSetting if project_code not in ["admin", 'sthpw']: icon_separation = ProdSetting.get_value_by_key("use_icon_separation") if not icon_separation: # put in a default icon_separation = "false" ProdSetting.create('use_icon_separation', icon_separation, 'string',\ description='Determines whether icons are in complete separate directories') if icon_separation == 'true': if my.snapshot and my.snapshot.get_value("context") == "icon": dirs.append("icon") elif my.get_file_type() == "icon": dirs.append("icon") #process = my.snapshot.get_value("process") #search_type = my.snapshot.get_value("search_type") # add a concept of branching # from pyasm.web import WidgetSettings # branch = WidgetSettings.get_value_by_key("current_branch") # #WidgetSettings.set_value_by_key("current_branch", branch) # if branch: # #dirs.append( "perforce" ) # dirs.append( branch ) table = search_type_obj.get_table() dirs.append( table ) return dirs
def get_sobject_base(self, dirs): # add <project_code>/<table> search_type_obj = self.sobject.get_search_type_obj() project_code = self.sobject.get_project().get_code() dirs.append( project_code ) #db_name = search_type_obj.get_database() #dirs.append( db_name ) from pyasm.biz import ProdSetting if project_code not in ["admin", 'sthpw']: icon_separation = ProdSetting.get_value_by_key("use_icon_separation") if not icon_separation: # put in a default icon_separation = "false" ProdSetting.create('use_icon_separation', icon_separation, 'string',\ description='Determines whether icons are in complete separate directories') if icon_separation == 'true': if self.snapshot and self.snapshot.get_value("context") == "icon": dirs.append("icon") elif self.get_file_type() == "icon": dirs.append("icon") #process = self.snapshot.get_value("process") #search_type = self.snapshot.get_value("search_type") # add a concept of branching # from pyasm.web import WidgetSettings # branch = WidgetSettings.get_value_by_key("current_branch") # #WidgetSettings.set_value_by_key("current_branch", branch) # if branch: # #dirs.append( "perforce" ) # dirs.append( branch ) table = search_type_obj.get_table() dirs.append( table ) return dirs
def get_format_value(my, value, format): if format not in ['Checkbox'] and value == '': return '' # ------------------------------------------------ # Integer if format == '-1234': if not value: # Case where value is '', 0, 0.0, -0.0 . value = 0 value = "%0.0f" % my.convert_to_float(value) elif format == '-1,234': if not value: value = 0 # Group the value into three numbers seperated by a comma. value = my.number_format(value, places=0) # ------------------------------------------------ # Float elif format == '-1234.12': if not value: value = 0 value = "%0.2f" % my.convert_to_float(value) elif format == '-1,234.12': # break the value up by 3s if not value: value = 0 value = my.number_format(value, places=2) # ------------------------------------------------ # Percentage elif format == '-13%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.0f" % my.convert_to_float(value) + "%" elif format == '-12.95%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.2f" % my.convert_to_float(value) + "%" # ------------------------------------------------ # Currency elif format == '-$1,234': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] elif format == '-$1,234.00': if not value: value = 0 value = my.currency_format(value, grouping=True) elif format == '-$1,234.--': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] + ".--" elif format == '-$1,234.00 CAD': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True, monetary=True) # ------------------------------------------------ # Date elif format == '31/12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y") elif format == 'December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B %d, %Y") elif format == '31/12/1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%Y") elif format == 'Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %y") elif format == 'Dec 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %Y") elif format == '31 Dec, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %b, %Y") elif format == '31 December 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %B %Y") elif format == 'Fri, Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %b %d, %y") elif format == 'Fri 31/Dec 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a %d/%b %y") elif format == 'Fri, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %B %d, %Y") elif format == 'Friday, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%A, %B %d, %Y") elif format == '12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d") elif format == '99-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%y-%m-%d") elif format == '1999-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y-%m-%d") elif format == '12-31-1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d-%Y") elif format == '12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%y") elif format == '31/Dec': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%b") elif format == 'December': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B") elif format == '52': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%U") # ------------------------------------------------ # Time elif format == '13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M") elif format == '13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M:%S") elif format == '01:37 PM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%I:%M %p") elif format == '01:37:46 PM': if not value: value = '' else: value = parser.parse(value) from pyasm.common import SPTDate timezone = my.get_option('timezone') if not timezone: pass elif timezone == "local": value = SPTDate.convert_to_local(value) else: value = SPTDate.convert_to_timezone(value, "EDT") value = value.strftime("%I:%M:%S %p") elif format == '31/12/99 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M") elif format == '31/12/99 13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M:%S") elif format == 'DATETIME': if not value: value = '' else: value = parser.parse(value) setting = ProdSetting.get_value_by_key('DATETIME') if not setting: setting = "%Y-%m-%d %H:%M" value = value.strftime(setting) elif format == 'DATE': if not value: value = '' else: value = parser.parse(value) setting = ProdSetting.get_value_by_key('DATE') if not setting: setting = "%Y-%m-%d" value = value.strftime(setting) # ------------------------------------------------ # Scientific elif format == '-1.23E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" elif format == '-1.234E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" # ------------------------------------------------ # Boolean # false = 0, true = 1 elif format in ['True|False']: if value: value = 'True' else: value = 'False' elif format in ['true|false']: if value: value = 'true' else: value = 'false' elif format == 'Checkbox': div = DivWdg() 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) div.add_class('spt_format_checkbox_%s' % my.get_name()) version = my.parent_wdg.get_layout_version() if version == "2": pass else: 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 ); ''' }) value = div # ------------------------------------------------ # Timecode elif format in [ 'MM:SS.FF', 'MM:SS:FF', 'MM:SS', 'HH:MM:SS.FF', 'HH:MM:SS:FF', 'HH:MM:SS' ]: fps = my.get_option('fps') if not fps: fps = 24 else: fps = int(fps) timecode = TimeCode(frames=value, fps=fps) value = timecode.get_timecode(format) # ------------------------------------------------ # Text formats elif format in ['wiki']: pass return value
def get_format_value(my, value, format): if format not in ['Checkbox'] and value == '': return '' # ------------------------------------------------ # Integer if format == '-1234': if not value: # Case where value is '', 0, 0.0, -0.0 . value = 0 value = "%0.0f" % my.convert_to_float(value) elif format == '-1,234': if not value: value = 0 # Group the value into three numbers seperated by a comma. value = my.number_format(value, places=0) # ------------------------------------------------ # Float elif format == '-1234.12': if not value: value = 0 value = "%0.2f" % my.convert_to_float(value) elif format == '-1,234.12': # break the value up by 3s if not value: value = 0 value = my.number_format(value, places=2) # ------------------------------------------------ # Percentage elif format == '-13%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.0f" % my.convert_to_float(value) + "%" elif format == '-12.95%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.2f" % my.convert_to_float(value) + "%" # ------------------------------------------------ # Currency elif format == '-$1,234': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] elif format == '-$1,234.00': if not value: value = 0 value = my.currency_format(value, grouping=True) elif format == '-$1,234.--': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] + ".--" elif format == '-$1,234.00 CAD': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True, monetary=True) elif format == '($1,234.00)': # break the value up by 3s if not value or value == "0": value = " " else: value = my.currency_format(value, grouping=True) if value.startswith("-"): value = "<span style='color: #F00'>(%s)</span>" % value.replace("-", "") # ------------------------------------------------ # Date elif format == '31/12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y") elif format == 'December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B %d, %Y") elif format == '31/12/1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%Y") elif format == 'Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %y") elif format == 'Dec 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %Y") elif format == '31 Dec, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %b, %Y") elif format == '31 December 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %B %Y") elif format == 'Fri, Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %b %d, %y") elif format == 'Fri 31/Dec 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a %d/%b %y") elif format == 'Fri, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %B %d, %Y") elif format == 'Friday, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%A, %B %d, %Y") elif format == '12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d") elif format == '99-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%y-%m-%d") elif format == '1999-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y-%m-%d") elif format == '12-31-1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d-%Y") elif format == '12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%y") elif format == '31/Dec': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%b") elif format == 'December': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B") elif format == '52': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%U") # ------------------------------------------------ # Time elif format == '13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M") elif format == '13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M:%S") elif format == '01:37 PM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%I:%M %p") elif format == '01:37:46 PM': if not value: value = '' else: value = parser.parse(value) from pyasm.common import SPTDate timezone = my.get_option('timezone') if not timezone: pass elif timezone == "local": value = SPTDate.convert_to_local(value) else: value = SPTDate.convert_to_timezone(value, "EDT") value = value.strftime("%I:%M:%S %p") elif format == '31/12/99 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M") elif format == '31/12/99 13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M:%S") elif format == 'DATETIME': if not value: value = '' else: value = parser.parse(value) setting = ProdSetting.get_value_by_key('DATETIME') if not setting: setting = "%Y-%m-%d %H:%M" value = value.strftime(setting) elif format == 'DATE': if not value: value = '' else: value = parser.parse(value) setting = ProdSetting.get_value_by_key('DATE') if not setting: setting = "%Y-%m-%d" value = value.strftime(setting) # ------------------------------------------------ # Scientific elif format == '-1.23E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" elif format == '-1.234E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" # ------------------------------------------------ # Boolean # false = 0, true = 1 elif format in ['True|False']: if value: value = 'True' else: value = 'False' elif format in ['true|false']: if value: value = 'true' else: value = 'false' elif format == 'Checkbox': div = DivWdg() 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) div.add_class('spt_format_checkbox_%s' % my.get_name()) version = my.parent_wdg.get_layout_version() if version == "2": pass else: 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 ); ''' } ) value = div # ------------------------------------------------ # Timecode elif format in ['MM:SS.FF','MM:SS:FF', 'MM:SS', 'HH:MM:SS.FF', 'HH:MM:SS:FF', 'HH:MM:SS']: fps = my.get_option('fps') if not fps: fps = 24 else: fps = int(fps) timecode = TimeCode(frames=value, fps=fps) value = timecode.get_timecode(format) # ------------------------------------------------ # Text formats elif format in ['wiki']: pass return value
def get_format_value(my, value, format, format_option=None): '''format is required. format_option is optional where applicable like fps for timecode''' if value == '': return value if isinstance(value, datetime.datetime): value = str(value) elif not isinstance(value, basestring): value = str(value) if value.startswith("{") and value.endswith("}"): from pyasm.search import Search value = Search.eval(value) # ------------------------------------------------ # Integer if format == '-1234': if not value: # Case where value is '', 0, 0.0, -0.0 . value = 0 value = "%0.0f" % my.convert_to_float(value) elif format == '-1,234': if not value: value = 0 # Group the value into three numbers seperated by a comma. value = my.number_format(value, places=0) # ------------------------------------------------ # Float elif format == '-1234.12': if not value: value = 0 value = "%0.2f" % my.convert_to_float(value) elif format == '-1,234.12': # break the value up by 3s if not value: value = 0 elif isinstance(value, basestring): value = float(value) value = my.number_format(value, places=2) # ------------------------------------------------ # Percentage elif format == '-13%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.0f" % my.convert_to_float(value) + "%" elif format == '-12.95%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.2f" % my.convert_to_float(value) + "%" # ------------------------------------------------ # Currency elif format == '-$1,234': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] elif format == '-$1,234.00': if not value: value = 0 value = my.currency_format(value, grouping=True) elif format == '-$1,234.--': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] + ".--" elif format == '-$1,234.00 CAD': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True, monetary=True) elif format == '($1,234.00)': # break the value up by 3s if not value: value = "-" else: value = my.currency_format(value, grouping=True) if value.startswith("-"): value = "(%s)" % value.replace("-", "") # ------------------------------------------------ # Date elif format == '31/12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y") elif format == 'December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B %d, %Y") elif format == '31/12/1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%Y") elif format == 'Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %y") elif format == 'Dec 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %Y") elif format == '31 Dec, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %b, %Y") elif format == '31 December 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %B %Y") elif format == 'Fri, Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %b %d, %y") elif format == 'Fri 31/Dec 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a %d/%b %y") elif format == 'Fri, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %B %d, %Y") elif format == 'Friday, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%A, %B %d, %Y") elif format == '12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d") elif format == '99-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%y-%m-%d") elif format == '1999-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y-%m-%d") elif format == '12-31-1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d-%Y") elif format == '12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%y") elif format == '31/Dec': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%b") elif format == 'December': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B") elif format == '52': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%U") # ------------------------------------------------ # Time elif format == '13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M") elif format == '13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M:%S") elif format == '01:37 PM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%I:%M %p") elif format == '01:37:46 PM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%I:%M:%S %p") elif format == '31/12/99 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M") elif format == '99/12/31 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%y/%m/%d %H:%M") elif format == '1999/12/31 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y/%m/%d %H:%M") elif format == 'YYYY/MM/DD HH:MM AM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y/%m/%d %I:%M %p") elif format == '31/12/99 13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M:%S") elif format == 'DATETIME': if not value: value = '' else: value = parser.parse(value) from pyasm.biz import ProdSetting setting = ProdSetting.get_value_by_key('DATETIME') if not setting: setting = "%Y-%m-%d %H:%M" value = value.strftime(setting) elif format == 'DATE': if not value: value = '' else: value = parser.parse(value) from pyasm.biz import ProdSetting setting = ProdSetting.get_value_by_key('DATE') if not setting: setting = "%Y-%m-%d" value = value.strftime(setting) # ------------------------------------------------ # Scientific elif format == '-1.23E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" elif format == '-1.234E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" # ------------------------------------------------ # Boolean # false = 0, true = 1 elif format in ['True|False']: if value: value = 'True' else: value = 'False' elif format in ['true|false']: if value: value = 'true' else: value = 'false' # ------------------------------------------------ # Timecode elif format in ['MM:SS.FF','MM:SS:FF', 'MM:SS', 'HH:MM:SS.FF', 'HH:MM:SS:FF','HH:MM:SS']: #fps = my.get_option('fps') fps = format_option if not fps: fps = 24 else: fps = int(fps) timecode = TimeCode(frames=value, fps=fps) value = timecode.get_timecode(format) # ------------------------------------------------ # Dictionary elif format == "DICT": dict_as_str = "" dict_list = [] if not value: value = '' else: for key, value in sorted(value.iteritems()): dict_list.append("%s : %s" % (key, value)) dict_as_str = "<br />".join(dict_list) value = dict_as_str # ------------------------------------------------ # File Size elif format in ['KB']: value = float(value) ext = " B" if not value: value = 0 ext = "B" elif value > 1024**5/2: value = float(value)/1024**5 ext = "PB" elif value > 1024**4/2: value = float(value)/1024**4 ext = "TB" elif value > 1024**3/2: value = float(value)/1024**3 ext = "GB" elif value > 1024**2/2: value = float(value)/1024**2 ext = "MB" elif value > 1024/2: value = float(value)/1024 ext = "KB" else: value = int(value) return "%s B" % value value = my.currency_format(value, grouping=True) # HACK: remove $ and last decimal value = value[1:-1] value = "%s %s" % (value, ext) return value
def send(cls, to_users, cc_users, bcc_users, subject, message, cc_emails=[], bcc_emails=[], from_user=None): cc = set() sender = set() to_emails = set() total_cc_emails = set() total_bcc_emails = set() recipients = set() if cc_emails: total_cc_emails.update(cc_emails) if bcc_emails: total_bcc_emails.update(bcc_emails) if from_user: sender.add(from_user) user_email = from_user else: user_email = Environment.get_login().get_full_email() if not user_email: raise TacticException("Sender's email is empty. Please check the email attribute of [%s]." %Environment.get_user_name()) sender.add(user_email) for x in to_users: if isinstance(x, Login): email = x.get_full_email() elif isinstance(x, SObject): email = x.get_value("email", no_exception=True) else: email = x email_list = [] if email.find(',') != -1: email_list = [y.strip() for y in email.split(',') if y.strip()] for email in email_list: cls.add_email(to_emails, email) else: if not email: print "WARNING: email for [%s] cannot be determined" % x continue cls.add_email(to_emails, email) for x in cc_users: if isinstance(x, Login): email = x.get_full_email() elif isinstance(x, SObject): email = x.get_value("email", no_exception=True) else: email = x email_list = [] if email.find(',') != -1: email_list = [y.strip() for y in email.split(',') if y.strip()] for email in email_list: cls.add_email(total_cc_emails, email) else: if not email: print "WARNING: email for [%s] cannot be determined" % x continue cls.add_email(total_cc_emails, email) for x in bcc_users: if isinstance(x, Login): email = x.get_full_email() elif isinstance(x, SObject): email = x.get_value("email", no_exception=True) else: email = x email_list = [] if email.find(',') != -1: email_list = [y.strip() for y in email.split(',') if y.strip()] for email in email_list: cls.add_email(total_bcc_emails, email) else: if not email: print "WARNING: email for [%s] cannot be determined" % x continue cls.add_email(total_bcc_emails, email) total_cc_emails = total_cc_emails - to_emails total_bcc_emails = total_bcc_emails - to_emails - total_cc_emails charset = 'us-ascii' is_uni = False if type(message) == types.UnicodeType: message = message.encode('utf-8') subject = subject.encode('utf-8') charset = 'utf-8' is_uni = True if "<html>" in message: st = 'html' else: st = 'plain' msg = MIMEText(message, _subtype=st, _charset=charset) ''' msg['Subject'] = subject msg['From'] = user_email msg['Reply-To'] = user_email msg['To'] = ", ".join(to_emails) msg['Cc'] = ','.join(total_cc_emails) msg['Bcc'] = ','.join(total_bcc_emails) msg['Date'] = formatdate(localtime=True) ''' msg.add_header('Subject', subject) msg.add_header('From', user_email) msg.add_header('Reply-To', user_email) msg.add_header('To', ", ".join(to_emails)) msg.add_header('Cc', ", ".join(total_cc_emails)) msg.add_header('Bcc', ", ".join(total_bcc_emails)) msg.add_header('Date', formatdate(localtime=True)) if is_uni: msg.add_header('html_encoding', 'base64') email_to_sender = ProdSetting.get_value_by_key('email_to_sender') if not email_to_sender: email_to_sender = 'true' if email_to_sender in ['False','false']: recipients = total_bcc_emails|total_cc_emails|to_emails else: recipients = total_bcc_emails|total_cc_emails|to_emails|sender email = EmailTriggerThread(user_email, recipients, "%s" %msg.as_string()) email.start()
def get_format_value(my, value, format, format_option=None): '''format is required. format_option is optional where applicable like fps for timecode''' if value == '': return value if isinstance(value, datetime.datetime): value = str(value) elif not isinstance(value, basestring): value = str(value) if value.startswith("{") and value.endswith("}"): from pyasm.search import Search value = Search.eval(value) # ------------------------------------------------ # Integer if format == '-1234': if not value: # Case where value is '', 0, 0.0, -0.0 . value = 0 value = "%0.0f" % my.convert_to_float(value) elif format == '-1,234': if not value: value = 0 # Group the value into three numbers seperated by a comma. value = my.number_format(value, places=0) # ------------------------------------------------ # Float elif format == '-1234.12': if not value: value = 0 value = "%0.2f" % my.convert_to_float(value) elif format == '-1,234.12': # break the value up by 3s if not value: value = 0 elif isinstance(value, basestring): value = float(value) value = my.number_format(value, places=2) # ------------------------------------------------ # Percentage elif format == '-13%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.0f" % my.convert_to_float(value) + "%" elif format == '-12.95%': if not value: value = 0 value = my.convert_to_float(value) * 100 value = "%0.2f" % my.convert_to_float(value) + "%" # ------------------------------------------------ # Currency elif format == '-$1,234': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] elif format == '-$1,234.00': if not value: value = 0 value = my.currency_format(value, grouping=True) elif format == '-$1,234.--': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True) value = value[0:-3] + ".--" elif format == '-$1,234.00 CAD': # break the value up by 3s if not value: value = 0 value = my.currency_format(value, grouping=True, monetary=True) elif format == '($1,234.00)': # break the value up by 3s if not value: value = "-" else: value = my.currency_format(value, grouping=True) if value.startswith("-"): value = "(%s)" % value.replace("-", "") # ------------------------------------------------ # Date elif format == '31/12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y") elif format == 'December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B %d, %Y") elif format == '31/12/1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%Y") elif format == 'Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %y") elif format == 'Dec 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%b %d, %Y") elif format == '31 Dec, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %b, %Y") elif format == '31 December 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d %B %Y") elif format == 'Fri, Dec 31, 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %b %d, %y") elif format == 'Fri 31/Dec 99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a %d/%b %y") elif format == 'Fri, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%a, %B %d, %Y") elif format == 'Friday, December 31, 1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%A, %B %d, %Y") elif format == '12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d") elif format == '99-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%y-%m-%d") elif format == '1999-12-31': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y-%m-%d") elif format == '12-31-1999': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%d-%Y") elif format == '12/99': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%m-%y") elif format == '31/Dec': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%b") elif format == 'December': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%B") elif format == '52': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%U") # ------------------------------------------------ # Time elif format == '13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M") elif format == '13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%H:%M:%S") elif format == '01:37 PM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%I:%M %p") elif format == '01:37:46 PM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%I:%M:%S %p") elif format == '31/12/99 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M") elif format == '99/12/31 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%y/%m/%d %H:%M") elif format == '1999/12/31 13:37': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y/%m/%d %H:%M") elif format == 'YYYY/MM/DD HH:MM AM': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%Y/%m/%d %I:%M %p") elif format == '31/12/99 13:37:46': if not value: value = '' else: value = parser.parse(value) value = value.strftime("%d/%m/%y %H:%M:%S") elif format == 'DATETIME': if not value: value = '' else: value = parser.parse(value) from pyasm.biz import ProdSetting setting = ProdSetting.get_value_by_key('DATETIME') if not setting: setting = "%Y-%m-%d %H:%M" value = value.strftime(setting) elif format == 'DATE': if not value: value = '' else: value = parser.parse(value) from pyasm.biz import ProdSetting setting = ProdSetting.get_value_by_key('DATE') if not setting: setting = "%Y-%m-%d" value = value.strftime(setting) # ------------------------------------------------ # Scientific elif format == '-1.23E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" elif format == '-1.234E+03': if not value: value = '' else: try: value = "%.2e" % my.convert_to_float(value) except: value = "0.00" # ------------------------------------------------ # Boolean # false = 0, true = 1 elif format in ['True|False']: if value: value = 'True' else: value = 'False' elif format in ['true|false']: if value: value = 'true' else: value = 'false' # ------------------------------------------------ # Timecode elif format in [ 'MM:SS.FF', 'MM:SS:FF', 'MM:SS', 'HH:MM:SS.FF', 'HH:MM:SS:FF', 'HH:MM:SS' ]: #fps = my.get_option('fps') fps = format_option if not fps: fps = 24 else: fps = int(fps) timecode = TimeCode(frames=value, fps=fps) value = timecode.get_timecode(format) # ------------------------------------------------ # Dictionary elif format == "DICT": dict_as_str = "" dict_list = [] if not value: value = '' else: for key, value in sorted(value.iteritems()): dict_list.append("%s : %s" % (key, value)) dict_as_str = "<br />".join(dict_list) value = dict_as_str # ------------------------------------------------ # File Size elif format in ['KB']: value = float(value) ext = " B" if not value: value = 0 ext = "B" elif value > 1024**5 / 2: value = float(value) / 1024**5 ext = "PB" elif value > 1024**4 / 2: value = float(value) / 1024**4 ext = "TB" elif value > 1024**3 / 2: value = float(value) / 1024**3 ext = "GB" elif value > 1024**2 / 2: value = float(value) / 1024**2 ext = "MB" elif value > 1024 / 2: value = float(value) / 1024 ext = "KB" else: value = int(value) return "%s B" % value value = my.currency_format(value, grouping=True) # HACK: remove $ and last decimal value = value[1:-1] value = "%s %s" % (value, ext) elif format in ['ROOT']: value, ext = os.path.splitext(value) elif format in ['EXT']: base, value = os.path.splitext(value) value = value.lstrip(".") elif format in ['BASENAME']: value = os.path.basename(value) elif format in ['DIRNAME']: value = os.path.dirname(value) return value
def get_custom_setting(my, key): from pyasm.biz import ProdSetting value = ProdSetting.get_value_by_key(key) return value
def get_custom_setting(self, key): from pyasm.biz import ProdSetting value = ProdSetting.get_value_by_key(key) return value
def send(cls, to_users, cc_users, bcc_users, subject, message, cc_emails=[], bcc_emails=[], from_user=None): cc = set() sender = set() to_emails = set() total_cc_emails = set() total_bcc_emails = set() recipients = set() if cc_emails: total_cc_emails.update(cc_emails) if bcc_emails: total_bcc_emails.update(bcc_emails) if from_user: sender.add(from_user) user_email = from_user else: user_email = Environment.get_login().get_full_email() if not user_email: raise TacticException( "Sender's email is empty. Please check the email attribute of [%s]." % Environment.get_user_name()) sender.add(user_email) for x in to_users: if isinstance(x, Login): email = x.get_full_email() elif isinstance(x, SObject): email = x.get_value("email", no_exception=True) else: email = x email_list = [] if email.find(',') != -1: email_list = [y.strip() for y in email.split(',') if y.strip()] for email in email_list: cls.add_email(to_emails, email) else: if not email: print "WARNING: email for [%s] cannot be determined" % x continue cls.add_email(to_emails, email) for x in cc_users: if isinstance(x, Login): email = x.get_full_email() elif isinstance(x, SObject): email = x.get_value("email", no_exception=True) else: email = x email_list = [] if email.find(',') != -1: email_list = [y.strip() for y in email.split(',') if y.strip()] for email in email_list: cls.add_email(total_cc_emails, email) else: if not email: print "WARNING: email for [%s] cannot be determined" % x continue cls.add_email(total_cc_emails, email) for x in bcc_users: if isinstance(x, Login): email = x.get_full_email() elif isinstance(x, SObject): email = x.get_value("email", no_exception=True) else: email = x email_list = [] if email.find(',') != -1: email_list = [y.strip() for y in email.split(',') if y.strip()] for email in email_list: cls.add_email(total_bcc_emails, email) else: if not email: print "WARNING: email for [%s] cannot be determined" % x continue cls.add_email(total_bcc_emails, email) total_cc_emails = total_cc_emails - to_emails total_bcc_emails = total_bcc_emails - to_emails - total_cc_emails charset = 'us-ascii' is_uni = False if type(message) == types.UnicodeType: message = message.encode('utf-8') subject = subject.encode('utf-8') charset = 'utf-8' is_uni = True if "<html>" in message: st = 'html' else: st = 'plain' msg = MIMEText(message, _subtype=st, _charset=charset) ''' msg['Subject'] = subject msg['From'] = user_email msg['Reply-To'] = user_email msg['To'] = ", ".join(to_emails) msg['Cc'] = ','.join(total_cc_emails) msg['Bcc'] = ','.join(total_bcc_emails) msg['Date'] = formatdate(localtime=True) ''' msg.add_header('Subject', subject) msg.add_header('From', user_email) msg.add_header('Reply-To', user_email) msg.add_header('To', ", ".join(to_emails)) msg.add_header('Cc', ", ".join(total_cc_emails)) msg.add_header('Bcc', ", ".join(total_bcc_emails)) msg.add_header('Date', formatdate(localtime=True)) if is_uni: msg.add_header('html_encoding', 'base64') email_to_sender = ProdSetting.get_value_by_key('email_to_sender') if not email_to_sender: email_to_sender = 'true' if email_to_sender in ['False', 'false']: recipients = total_bcc_emails | total_cc_emails | to_emails else: recipients = total_bcc_emails | total_cc_emails | to_emails | sender email = EmailTriggerThread(user_email, recipients, "%s" % msg.as_string()) email.start()