def asset_edit(request, id):
    shop = request.shop
    asset = get_object_or_404(Asset, pk=id)
    if asset.theme.shop != shop and asset.is_editable():
        raise Http404
    if request.method == 'POST':
        form = AssetEditForm(shop=shop, data=request.POST)
        if form.is_valid():
            text = form.cleaned_data['text']
            asset.file.save(asset.file.name, ContentFile(str(text)))

            asset.save()
            asset.render()

            request.flash['message'] = unicode(_("File successfully edited."))
            request.flash['severity'] = "success"
            return HttpResponseRedirect(reverse('asset_edit', args=[id]))
    else:
        text = asset.file.read()
        form = AssetEditForm(shop=shop, initial={'text': text})
    return render_to_response('themes/asset_edit.html', {
        'form': form,
        'asset': asset,
        'templates': shop.theme.template_set.all(),
    }, RequestContext(request))
def asset_edit(request, id):
    shop = request.shop
    asset = get_object_or_404(Asset, pk=id)
    if asset.theme.shop != shop and asset.is_editable():
        raise Http404
    if request.method == 'POST':
        form = AssetEditForm(shop=shop, data=request.POST)
        if form.is_valid():
            text = form.cleaned_data['text']
            asset.file.save(asset.file.name, ContentFile(str(text)))
            
            asset.save()
            asset.render()
            
            request.flash['message'] = unicode(_("File successfully edited."))
            request.flash['severity'] = "success"
            return HttpResponseRedirect(reverse('asset_edit', args=[id]))
    else:
        text = asset.file.read()
        form = AssetEditForm(shop=shop, initial={'text':text})
    return render_to_response('themes/asset_edit.html',
                              {
                               'form': form,
                               'asset': asset,
                               'templates': shop.theme.template_set.all(),
                               },
                              RequestContext(request))    
def theme(request, id=None):
    shop = request.shop
    theme = shop.theme
    edit = request.GET.get('edit', None)
    if id is None:
        template = Template.objects.filter(theme=theme, name='layout').get()
        edit = 'template'
    else:
        if edit == 'template':  
            template = get_object_or_404(Template, pk=id)
            if template.theme.shop != shop:
                raise Http404
        elif edit == 'asset':
            asset = get_object_or_404(Asset, pk=id)
            if asset.theme.shop != shop and asset.is_editable():
                raise Http404
            
    param = {}
    if edit == 'template':
        text = copy.copy(template.text)
        form_template = TemplateForm(request.POST or None, instance=template)
        if form_template.is_valid():
            if text != form_template.cleaned_data['text']:
                shop.last_date_to_change_layout = datetime.datetime.now()
                shop.save()
                form_template.save()
#            request.flash['message'] = unicode(_("Template successfully saved."))
#            request.flash['severity'] = "success"
            return HttpResponse('Template successfully saved.')
            #return HttpResponseRedirect(reverse('web_store_theme', args=[template.id])+"?edit=template")
        version_list = Version.objects.get_for_object(template).order_by('-pk')[:10]
        param = {'form_template': form_template,
                 'version_list': version_list,
                 'template': template}

    else: # edit == 'asset'
    
        try: 
            if request.method == 'POST':
                form_asset = AssetEditForm(shop=shop, data=request.POST)
                if form_asset.is_valid():
                    text = form_asset.cleaned_data['text']
                    if asset.file.storage.exists(asset.file.name):
                        asset.file.storage.delete(asset.file.name)
                    asset.file.save(asset.file.name, ContentFile(str(text)))
                    
                    try:
                        shop.last_date_to_change_layout = datetime.datetime.now()
                        shop.save()
                        asset.save()
                        asset.render()
                    except Exception,e:
                        return HttpResponse(e)
    
                    return HttpResponse('File successfully saved.')
                else:
                    errors = "\n".join(["%s" % (v.as_text()) for k,v in form_asset.errors.iteritems()])
                    return HttpResponse(errors)
            else:
def theme(request, id=None):
    shop = request.shop
    theme = shop.theme
    edit = request.GET.get('edit', None)
    if id is None:
        template = Template.objects.filter(theme=theme, name='layout').get()
        edit = 'template'
    else:
        if edit == 'template':
            template = get_object_or_404(Template, pk=id)
            if template.theme.shop != shop:
                raise Http404
        elif edit == 'asset':
            asset = get_object_or_404(Asset, pk=id)
            if asset.theme.shop != shop and asset.is_editable():
                raise Http404

    param = {}
    if edit == 'template':
        text = copy.copy(template.text)
        form_template = TemplateForm(request.POST or None, instance=template)
        if form_template.is_valid():
            if text != form_template.cleaned_data['text']:
                shop.last_date_to_change_layout = datetime.datetime.now()
                shop.save()
                form_template.save()


#            request.flash['message'] = unicode(_("Template successfully saved."))
#            request.flash['severity'] = "success"
            return HttpResponse('Template successfully saved.')
            #return HttpResponseRedirect(reverse('web_store_theme', args=[template.id])+"?edit=template")
        version_list = Version.objects.get_for_object(template).order_by(
            '-pk')[:10]
        param = {
            'form_template': form_template,
            'version_list': version_list,
            'template': template
        }

    else:  # edit == 'asset'

        try:
            if request.method == 'POST':
                form_asset = AssetEditForm(shop=shop, data=request.POST)
                if form_asset.is_valid():
                    text = form_asset.cleaned_data['text']
                    if asset.file.storage.exists(asset.file.name):
                        asset.file.storage.delete(asset.file.name)
                    asset.file.save(asset.file.name, ContentFile(str(text)))

                    try:
                        shop.last_date_to_change_layout = datetime.datetime.now(
                        )
                        shop.save()
                        asset.save()
                        asset.render()
                    except Exception, e:
                        return HttpResponse(e)

                    return HttpResponse('File successfully saved.')
                else:
                    errors = "\n".join([
                        "%s" % (v.as_text())
                        for k, v in form_asset.errors.iteritems()
                    ])
                    return HttpResponse(errors)
            else:
                        shop.save()
                        asset.save()
                        asset.render()
                    except Exception, e:
                        return HttpResponse(e)

                    return HttpResponse('File successfully saved.')
                else:
                    errors = "\n".join([
                        "%s" % (v.as_text())
                        for k, v in form_asset.errors.iteritems()
                    ])
                    return HttpResponse(errors)
            else:
                text = asset.file.read()
                form_asset = AssetEditForm(shop=shop, initial={'text': text})

                param = {'form_asset': form_asset, 'asset': asset}
        except:
            logging.exception("MUERE!!!!!!!!!!!!!!!!!")

    add_asset_form = AssetForm()

    param.update({
        'theme': theme,
        'add_asset_form': add_asset_form,
        'assets': shop.theme.asset_set.all(),
        'templates': theme.get_templates(),
    })

    return render_to_response('store_admin/web_store/theme.html', param,