diff --git a/cms/bin/simplecms b/cms/bin/simplecms index a2c5ff4..8712ae6 100755 --- a/cms/bin/simplecms +++ b/cms/bin/simplecms @@ -20,6 +20,7 @@ Successfully created project "$1"! Things to do next: - create a database +- ./manage.py makemigrations - ./manage.py migrate - ./manage.py createsuperuser - ./manage.py runserver --nostatic diff --git a/cms/middleware.py b/cms/middleware.py index 0722fc4..867a662 100644 --- a/cms/middleware.py +++ b/cms/middleware.py @@ -6,7 +6,7 @@ def locate(filename): for path, dirs, files in os.walk(os.getcwd(), followlinks=True): for f in files: if f == filename: - return os.path.join(path, filename) + yield os.path.join(path, filename) class SassMiddleware: '''Simple SASS middleware that intercepts requests for .css files and @@ -20,16 +20,18 @@ class SassMiddleware: if settings.DEBUG and request.path.endswith('.css'): css_file = request.path.rsplit('/',1)[1] sass_file = css_file[:-4] - sass_path = locate(sass_file) - if sass_path and os.path.exists(sass_path): - css_path = sass_path + '.css' - map_path = css_path + '.map' - css = compile(filename=sass_path, output_style='nested') - css, mapping = compile(filename=sass_path, source_map_filename=map_path) - with open(css_path, 'w') as f: - f.write(css) - with open(map_path, 'w') as f: - f.write(mapping) + sass_paths = locate(sass_file) + if sass_paths: + for sass_path in sass_paths: + if os.path.exists(sass_path): + css_path = sass_path + '.css' + map_path = css_path + '.map' + css = compile(filename=sass_path, output_style='nested') + css, mapping = compile(filename=sass_path, source_map_filename=map_path) + with open(css_path, 'w') as f: + f.write(css) + with open(map_path, 'w') as f: + f.write(mapping) response = self.get_response(request) return response diff --git a/cms/static/cms/admin.scss b/cms/static/cms/admin.scss index 5382cfb..a6e137b 100644 --- a/cms/static/cms/admin.scss +++ b/cms/static/cms/admin.scss @@ -41,6 +41,7 @@ form.cms { div.wrapper { max-width: none; flex: 1 1 800px; + @media(min-width: 1000px) { flex: 0 1 800px } padding: 0 0.5em; padding-top: 0.25em; } diff --git a/cms/static/cms/admin.scss.css b/cms/static/cms/admin.scss.css index 6510bb2..c3367ac 100644 --- a/cms/static/cms/admin.scss.css +++ b/cms/static/cms/admin.scss.css @@ -32,6 +32,9 @@ form.cms { flex: 1 1 800px; padding: 0 0.5em; padding-top: 0.25em; } + @media (min-width: 1000px) { + form.cms div.wrapper { + flex: 0 1 800px; } } form.cms fieldset { background: #fff6; border: 0.5px solid #ccc; diff --git a/cms/static/cms/admin.scss.css.map b/cms/static/cms/admin.scss.css.map index ae80126..2cfe5a9 100644 --- a/cms/static/cms/admin.scss.css.map +++ b/cms/static/cms/admin.scss.css.map @@ -5,5 +5,5 @@ "admin.scss" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/cms/templatetags/cms.py b/cms/templatetags/cms.py index e57dddd..35c0932 100644 --- a/cms/templatetags/cms.py +++ b/cms/templatetags/cms.py @@ -70,12 +70,17 @@ class IncludeSectionNode(template.Node): csrf_token = self.csrf_token.resolve(context) request = self.request.resolve(context) perms = self.perms.resolve(context) + view = registry.get_view(section, request) - section_context = view.get_context_data( - csrf_token=csrf_token, - section=section, - request=request, - perms=perms, - ) + initial_context = { + 'csrf_token': csrf_token, + 'section': section, + 'request': request, + 'perms': perms, + } + if hasattr(section, 'invalid_form'): + context['form'] = section.invalid_form + + section_context = view.get_context_data(**initial_context) t = context.template.engine.get_template(view.template_name) return t.render(template.Context(section_context)) diff --git a/cms/views.py b/cms/views.py index a33733c..9fbaddf 100644 --- a/cms/views.py +++ b/cms/views.py @@ -79,7 +79,7 @@ class PageView(detail.DetailView): result = view.post(request) if isinstance(result, HttpResponse): return result - section.context['form'] = result + section.invalid_form = result context.update({ 'page': page,