Exemplo n.º 1
0
def prepare_temporal_resource_directories(cls):

    from django.conf import settings

    cls.tmp_dir = mkdtemp()

    # Whoosh indexes
    cls.old_index_dir = settings.WIRECLOUD_INDEX_DIR
    settings.WIRECLOUD_INDEX_DIR = os.path.join(cls.tmp_dir, 'whoosh_indexes')

    # catalogue deployer
    cls.old_catalogue_deployer = catalogue.wgt_deployer
    cls.catalogue_tmp_dir_backup = os.path.join(cls.tmp_dir,
                                                'catalogue_backup')
    cls.catalogue_tmp_dir = os.path.join(cls.tmp_dir, 'catalogue')
    catalogue.wgt_deployer = WgtDeployer(cls.catalogue_tmp_dir)

    # showcase deployer
    cls.old_deployer = showcase.wgt_deployer
    cls.localcatalogue_tmp_dir_backup = os.path.join(cls.tmp_dir,
                                                     'localcatalogue_backup')
    cls.localcatalogue_tmp_dir = os.path.join(cls.tmp_dir, 'localcatalogue')
    showcase.wgt_deployer = WgtDeployer(cls.localcatalogue_tmp_dir)

    # deploy resource files
    for resource_file in cls.base_resources:
        resource_file = open(
            os.path.join(cls.shared_test_data_dir, resource_file), 'rb')
        resource_wgt = WgtFile(resource_file)
        catalogue.add_packaged_resource(resource_file,
                                        None,
                                        wgt_file=resource_wgt,
                                        deploy_only=True)
        showcase.wgt_deployer.deploy(resource_wgt)
        resource_file.close()

    # And freeze the resource files backup directories
    if os.path.exists(cls.localcatalogue_tmp_dir):
        os.rename(cls.localcatalogue_tmp_dir,
                  cls.localcatalogue_tmp_dir_backup)
    else:
        os.mkdir(cls.localcatalogue_tmp_dir_backup)

    if os.path.exists(cls.catalogue_tmp_dir):
        os.rename(cls.catalogue_tmp_dir, cls.catalogue_tmp_dir_backup)
    else:
        os.mkdir(cls.catalogue_tmp_dir_backup)
Exemplo n.º 2
0
from io import BytesIO

from django.core.cache import cache
from django.conf import settings
from django.db.models import Q
from django.template import Context, Template
from lxml import etree

from wirecloud.catalogue.models import CatalogueResource
from wirecloud.commons.utils.http import ERROR_FORMATTERS, get_absolute_static_url, get_current_domain
from wirecloud.commons.utils.template import UnsupportedFeature
from wirecloud.commons.utils.wgt import WgtDeployer, WgtFile
from wirecloud.platform.models import Widget, XHTML
from wirecloud.platform.plugins import get_active_features, get_widget_api_extensions

wgt_deployer = WgtDeployer(settings.GADGETS_DEPLOYMENT_DIR)
WIDGET_ERROR_FORMATTERS = ERROR_FORMATTERS.copy()


def get_html_widget_error_response(request, mimetype, status_code, context):
    from django.shortcuts import render
    return render(request,
                  'wirecloud/widget_error.html',
                  context,
                  status=status_code,
                  content_type=mimetype)


WIDGET_ERROR_FORMATTERS.update({
    'text/html; charset=utf-8':
    get_html_widget_error_response,
Exemplo n.º 3
0
from django.conf import settings
from django.utils import timezone
from django.utils.translation import get_language, ugettext as _
import markdown

from wirecloud.catalogue.models import CatalogueResource
from wirecloud.commons.models import Organization
from wirecloud.commons.utils.downloader import download_http_content, download_local_file
from wirecloud.commons.utils.html import clean_html
from wirecloud.commons.utils.http import get_absolute_reverse_url, force_trailing_slash
from wirecloud.commons.utils.template import ObsoleteFormatError, TemplateParser, TemplateFormatError, TemplateParseException
from wirecloud.commons.utils.version import Version
from wirecloud.commons.utils.wgt import InvalidContents, WgtDeployer, WgtFile

wgt_deployer = WgtDeployer(settings.CATALOGUE_MEDIA_ROOT)


def extract_resource_media_from_package(template, package, base_path):

    overrides = {}
    resource_info = template.get_resource_info()

    if resource_info['image'] != '':
        if not resource_info['image'].startswith(
            ('http://', 'https://', '//', '/')):
            image_path = os.path.normpath(resource_info['image'])
            package.extract_file(resource_info['image'],
                                 os.path.join(base_path, image_path), True)
        elif resource_info['image'].startswith(('//', '/')):
            overrides['image'] = template.get_absolute_url(