diff --git a/pavelib/assets.py b/pavelib/assets.py index 991fb7f914b1..19bb98ea071e 100644 --- a/pavelib/assets.py +++ b/pavelib/assets.py @@ -172,6 +172,7 @@ def get_theme_sass_dirs(system, theme_dir): certs_css_dir = theme_dir / system / "static" / "certificates" / "css" xmodule_sass_folder = "modules" if system == 'lms' else "descriptors" xmodule_sass_dir = path("common") / "static" / "xmodule" / xmodule_sass_folder / "scss" + xmodule_lookup_dir = path("xmodule") / "css" dependencies = SASS_LOOKUP_DEPENDENCIES.get(system, []) if sass_dir.isdir(): @@ -202,7 +203,9 @@ def get_theme_sass_dirs(system, theme_dir): dirs.append({ "sass_source_dir": xmodule_sass_dir, "css_destination_dir": path("common") / "static" / "css" / "xmodule", - "lookup_paths": dependencies + [ + "lookup_paths": [ + xmodule_lookup_dir, + *dependencies, sass_dir / "partials", system_sass_dir / "partials", system_sass_dir, @@ -237,6 +240,7 @@ def get_system_sass_dirs(system): css_dir = path(system) / "static" / "css" xmodule_sass_folder = "modules" if system == 'lms' else "descriptors" xmodule_sass_dir = path("common") / "static" / "xmodule" / xmodule_sass_folder / "scss" + xmodule_lookup_dir = path("xmodule") / "css" dependencies = SASS_LOOKUP_DEPENDENCIES.get(system, []) dirs.append({ @@ -251,7 +255,9 @@ def get_system_sass_dirs(system): dirs.append({ "sass_source_dir": xmodule_sass_dir, "css_destination_dir": path("common") / "static" / "css" / "xmodule", - "lookup_paths": dependencies + [ + "lookup_paths": [ + xmodule_lookup_dir, + *dependencies, sass_dir / "partials", sass_dir, ], diff --git a/xmodule/static_content.py b/xmodule/static_content.py index a89ab1bf3b31..6730dcb7a0ea 100755 --- a/xmodule/static_content.py +++ b/xmodule/static_content.py @@ -126,29 +126,20 @@ def _write_styles(selector, output_root, classes, css_attribute, suffix): into `output_root` as individual files """ contents = {} + xmodule_scss_path = resource_filename(__name__, "") + "/css/" for class_ in classes: class_css = getattr(class_, css_attribute)() - fragment_paths = class_css.get('scss', []) - if not fragment_paths: - continue - fragment_names = [] - for fragment_path in fragment_paths: - with open(fragment_path, 'rb') as fragment_file: - fragment = fragment_file.read() - fragment_name = "{hash}.{type}".format( - hash=hashlib.md5(fragment).hexdigest(), - type='scss') - # Prepend _ so that sass just includes the files into a single file - filename = '_' + fragment_name - contents[filename] = fragment - fragment_names.append(fragment_name) + rel_fragment_paths = [] + for fragment_path in class_css.get('scss', []): + rel_fragment_path = fragment_path.split(xmodule_scss_path)[1] + rel_fragment_paths.append(rel_fragment_path) module_styles_lines = [] module_styles_lines.append("""{selector}.xmodule_{class_.__name__} {{""".format( class_=class_, selector=selector )) - module_styles_lines.extend(f' @import "{name}";' for name in fragment_names) + module_styles_lines.extend(f' @import "{path}";' for path in rel_fragment_paths) module_styles_lines.append('}') contents[f"{class_.__name__}{suffix}.scss"] = '\n'.join(module_styles_lines)