#!/usr/bin/env python
# -*- coding: utf-8 -*-
# weiyu / rendering / bridging views
#
# Copyright (C) 2012-2013 Wang Xuerui <idontknw.wang-at-gmail-dot-com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from __future__ import unicode_literals, division

__all__ = [
        'scss_bridge_view',
        ]

from os.path import exists, normcase, normpath, realpath, abspath, sep
from os.path import join as pathjoin

from .decorators import renderable
from ..shortcuts import http, view


@http
@renderable('scss')
@view
def scss_bridge_view(request, path):
    conf = request.site['scss-bridge']
    SCSS_ROOT = normcase(conf['root'])

    # TODO: extract this path manipulation code out (which is the same as
    # that in staticfile_view)
    norm_relpath = normpath('/' + path).lstrip(sep)
    real_path = normcase(realpath(abspath(pathjoin(SCSS_ROOT, norm_relpath))))

    if not exists(real_path):
        return (
                404,
                {},
                {},
                )

    return (
            200,
            {},
            {
                'scss_file': real_path,
                },
            )


# vim:set ai et ts=4 sw=4 sts=4 fenc=utf-8:
