Пример #1
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A delegate that can be invoked with the <see cref="Stream"/> that the view should be rendered to.</returns>
        public Action<Stream> RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return stream =>{

                var templateManagerProvider =
                    new TemplateManagerProvider()
                        .WithLoader(new TemplateLoader(viewLocationResult.Contents.Invoke()));

                var templateManager =
                    templateManagerProvider.GetNewManager();

                var template = renderContext.ViewCache.GetOrAdd(
                    viewLocationResult,
                    x => templateManager.GetTemplate(string.Empty));

                var context = new Dictionary<string, object> { { "Model", model } };
                var reader = template.Walk(templateManager, context);

                var writer =
                    new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            };
        }
Пример #2
0
        internal string BuildNJangoPage(string workingDirectory, string templateFile, IronPython.Runtime.PythonDictionary pyContext)
        {
            TemplateManagerProvider templateProvider = new TemplateManagerProvider();
            ITemplateManager        manager          = templateProvider.GetNewManager();

            Dictionary <string, object> context = new Dictionary <string, object>();

            foreach (object str in pyContext.Keys)
            {
                context.Add(str.ToString(), pyContext[str]);
            }

            if (File.Exists(workingDirectory + @"\" + templateFile.ToString()))
            {
                TextReader reader = manager.RenderTemplate(
                    workingDirectory + @"\" + templateFile.ToString(),
                    (Dictionary <string, Object>)context);

                return(reader.ReadToEnd());
            }
            else
            {
                return("Template not found");
            }
        }
Пример #3
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <returns>A delegate that can be invoked with the <see cref="Stream"/> that the view should be rendered to.</returns>
        public Action <Stream> RenderView(ViewLocationResult viewLocationResult, dynamic model)
        {
            return(stream =>
            {
                var templateManagerProvider =
                    new TemplateManagerProvider()
                    .WithLoader(new TemplateLoader(viewLocationResult.Contents));

                var templateManager =
                    templateManagerProvider.GetNewManager();

                var template =
                    templateManager.GetTemplate(string.Empty);

                var context = new Dictionary <string, object> {
                    { "Model", model }
                };
                var reader = template.Walk(templateManager, context);

                var writer =
                    new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            });
        }
Пример #4
0
 public void Setup()
 {
     provider = new TemplateManagerProvider()
         .WithLoader(new Loader())
         .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
         .WithTag("nested", new TestDescriptor.SimpleNestedTag())
         .WithTag("url", new TestUrlTag())
         ;
     provider = FilterManager.Initialize(provider);
     manager = provider.GetNewManager();
 }
Пример #5
0
 public void Setup()
 {
     provider = new TemplateManagerProvider()
                .WithLoader(new Loader())
                .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
                .WithTag("nested", new TestDescriptor.SimpleNestedTag())
                .WithTag("url", new TestUrlTag())
                .WithFilters(FilterManager.GetFilters())
     ;
     manager            = provider.GetNewManager();
     managerForDesigner = provider.WithSetting(Constants.EXCEPTION_IF_ERROR, false).GetNewManager();
 }
Пример #6
0
 public void Setup()
 {
     provider = new TemplateManagerProvider()
         .WithLoader(new Loader())
         .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
         .WithTag("nested", new TestDescriptor.SimpleNestedTag())
         .WithTag("url", new TestUrlTag())
         .WithFilters(FilterManager.GetFilters())
         ;
     manager = provider.GetNewManager();
     managerForDesigner = provider.WithSetting(Constants.EXCEPTION_IF_ERROR, false).GetNewManager();
 }
Пример #7
0
        /// <summary>
        /// Processes the view - using the templateName
        /// to obtain the correct template
        /// and writes the results to the System.IO.TextWriter.
        /// </summary>
        /// <param name="output"></param>
        /// <param name="context"></param>
        /// <param name="controller"></param>
        /// <param name="templateName"></param>
        public override void Process(System.IO.TextWriter output, IRailsEngineContext context, Controller controller, string templateName)
        {
            HttpApplicationState app = context.UnderlyingContext.Application;

            // If there's no manager - managerProvider will return new one for us.
            if (app[cDjangoManagerKey] == null)
            {
                // Since one HttpApplication processed by a single thread - we don't need no locking here.
                app[cDjangoManagerKey] = managerProvider.GetNewManager();
            }

            ITemplateManager mgr = app[cDjangoManagerKey] as ITemplateManager;

            if (mgr == null)
            {
                if (Logger.IsErrorEnabled)
                {
                    Logger.Error("Couldn't get ITemplateManager from the HttpApplicationState");
                }

                throw new RailsException("Couldn't get ITemplateManager from the HttpApplicationState");
            }


            AdjustContentType(context);

            string resolvedName = Path.HasExtension(templateName) ? templateName : templateName + cTemplateExtension;

            try
            {
                var djangoContext = CreateContext(context, controller);

                TextReader reader = mgr.RenderTemplate(resolvedName, djangoContext);
                char[]     buffer = new char[4096];
                int        count  = 0;
                while ((count = reader.ReadBlock(buffer, 0, 4096)) > 0)
                {
                    output.Write(buffer, 0, count);
                }
            }
            catch (Exception ex)
            {
                if (Logger.IsErrorEnabled)
                {
                    Logger.Error("Could not render view", ex);
                }

                throw new RailsException("Could not render view: " + resolvedName, ex);
            }
        }
Пример #8
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A delegate that can be invoked with the <see cref="Stream"/> that the view should be rendered to.</returns>
        public Action<Stream> RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return stream =>{
                var provider = new TemplateManagerProvider().WithLoader(new TemplateLoader(renderContext, viewLocationResult));

                var templateManager = provider.GetNewManager();

                var context = new Dictionary<string, object> { { "Model", model } };

                var reader = templateManager.GetTemplate(viewLocationResult.Location).Walk(templateManager, context);

                var writer = new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            };
        }
Пример #9
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A response</returns>
        public Response RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return new HtmlResponse(contents: stream =>
            {
                var provider = new TemplateManagerProvider().WithLoader(new TemplateLoader(renderContext, viewLocationResult));

                var templateManager = provider.GetNewManager();

                var context = new Dictionary<string, object> { { "Model", UnwrapDictionary(model) } };

                var reader = templateManager.GetTemplate(viewLocationResult.Location).Walk(templateManager, context);

                var writer = new StreamWriter(stream, Encoding.UTF8);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            });
        }
Пример #10
0
        public void Setup()
        {
            var filters = new[]
            {
                //Core Filters
                new Filter("add", new AddFilter()),
                new Filter("get_digit", new GetDigit()),
                new Filter("divisibleby", new DivisibleByFilter()),
                new Filter("addslashes", new AddSlashesFilter()),
                new Filter("capfirst", new CapFirstFilter()),
                new Filter("escapejs", new EscapeJSFilter()),
                new Filter("fix_ampersands", new FixAmpersandsFilter()),
                new Filter("floatformat", new FloatFormatFilter()),
                new Filter("linenumbers", new LineNumbersFilter()),
                new Filter("lower", new LowerFilter()),
                new Filter("upper", new UpperFilter()),
                new Filter("make_list", new MakeListFilter()),
                new Filter("wordcount", new WordCountFilter()),
                new Filter("ljust", new LJustFilter()),
                new Filter("rjust", new RJustFilter()),
                new Filter("center", new CenterFilter()),
                new Filter("cut", new CutFilter()),
                new Filter("title", new TitleFilter()),
                new Filter("removetags", new RemoveTagsFilter()),
                new Filter("first", new FirstFilter()),
                new Filter("last", new LastFilter()),
                new Filter("length", new LengthFilter()),
                new Filter("length_is", new LengthIsFilter()),
                new Filter("random", new RandomFilter()),
                new Filter("slice", new SliceFilter()),
                new Filter("default", new DefaultFilter())
            };


            provider = new TemplateManagerProvider()
                       .WithLoader(new Loader())
                       .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
                       .WithTag("nested", new TestDescriptor.SimpleNestedTag())
                       .WithTag("url", new TestUrlTag())
                       .WithFilters(filters);

            manager            = provider.GetNewManager();
            managerForDesigner = provider.WithSetting(Constants.EXCEPTION_IF_ERROR, false).GetNewManager();
        }
Пример #11
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A response</returns>
        public Response RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return(new HtmlResponse(contents: stream =>
            {
                var provider = new TemplateManagerProvider().WithLoader(new TemplateLoader(renderContext, viewLocationResult));

                var templateManager = provider.GetNewManager();

                var context = new Dictionary <string, object> {
                    { "Model", UnwrapDictionary(model) }
                };

                var reader = templateManager.GetTemplate(viewLocationResult.Location).Walk(templateManager, context);

                var writer = new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            }));
        }
Пример #12
0
 static DjangoEngine()
 {
     provider = new TemplateManagerProvider().WithLoader(new IntegrationTemplateLoader());
     manager  = provider.GetNewManager();
 }
Пример #13
0
        private string RenderTemplate(string templateName, Dictionary<string, object> context)
        {
            var provider = new TemplateManagerProvider().WithLoader(new FileSystemTemplateLoader());
            provider = provider.WithFilters(NDjango.FiltersCS.FilterManager.GetFilters()).WithFilter("highlight", new HighlightFilter());
            var manager = provider.GetNewManager();

            System.IO.TextReader reader = manager.RenderTemplate(templateName, context);
            return reader.ReadToEnd();
        }