def settings_value(key, *args, **kwargs): """Return a settings value specified by the given key.""" if 'user' in kwargs: if not kwargs['user'] or (kwargs['user'] and kwargs['user'].is_authenticated is False): return InvenTreeUserSetting.get_setting(key) return InvenTreeUserSetting.get_setting(key, user=kwargs['user']) return InvenTreeSetting.get_setting(key)
def settings_value(key, *args, **kwargs): """ Return a settings value specified by the given key """ if 'user' in kwargs: return InvenTreeUserSetting.get_setting(key, user=kwargs['user']) return InvenTreeSetting.get_setting(key)
def render_date(context, date_object): """ Renders a date according to the preference of the provided user Note that the user preference is stored using the formatting adopted by moment.js, which differs from the python formatting! """ if date_object is None: return None if type(date_object) == str: date_object = date_object.strip() # Check for empty string if len(date_object) == 0: return None # If a string is passed, first convert it to a datetime try: date_object = date.fromisoformat(date_object) except ValueError: logger.warning(f"Tried to convert invalid date string: {date_object}") return None # We may have already pre-cached the date format by calling this already! user_date_format = context.get('user_date_format', None) if user_date_format is None: user = context.get('user', None) if user and user.is_authenticated: # User is specified - look for their date display preference user_date_format = InvenTreeUserSetting.get_setting('DATE_DISPLAY_FORMAT', user=user) else: user_date_format = 'YYYY-MM-DD' # Convert the format string to Pythonic equivalent replacements = [ ('YYYY', '%Y'), ('MMM', '%b'), ('MM', '%m'), ('DD', '%d'), ] for o, n in replacements: user_date_format = user_date_format.replace(o, n) # Update the context cache context['user_date_format'] = user_date_format if isinstance(date_object, (datetime, date)): return date_object.strftime(user_date_format) return date_object