Changeset 2065
- Timestamp:
- 06/25/09 11:29:43 (9 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/0.9/pylucid_project/apps/pylucid/views.py
r2055 r2065 35 35 # default Language instance set in system preferences: 36 36 default_lang_entry = request.PYLUCID.default_lang_entry 37 37 38 38 try: 39 39 pagecontent = PageTree.objects.get_pagecontent(request) … … 45 45 ) 46 46 ) 47 47 48 48 if (settings.DEBUG or settings.PYLUCID.I18N_DEBUG) and (pagecontent.lang != lang_entry): 49 49 request.page_msg.error( … … 52 52 ) 53 53 ) 54 54 55 55 return pagecontent 56 56 57 57 58 58 def _render_template(request, page_content): 59 59 context = request.PYLUCID.context … … 61 61 context["page_content"] = page_content 62 62 complete_page = render.render_string_template(page_template, context) 63 63 64 64 response = http.HttpResponse(complete_page, mimetype="text/html") 65 65 response["content-language"] = context["page_language"] … … 78 78 79 79 def _render_page(request, pagetree, prefix_url=None, rest_url=None): 80 """ render a cms page """ 80 """ render a cms page """ 81 81 request.PYLUCID.pagetree = pagetree 82 82 … … 84 84 pagemeta = PageTree.objects.get_pagemeta(request) 85 85 request.PYLUCID.pagemeta = pagemeta 86 86 87 87 # Get template content and add it to PyLucid objects 88 88 template_name = pagetree.design.template 89 89 page_template, origin = loader.find_template_source(template_name) 90 90 request.PYLUCID.page_template = page_template 91 91 92 92 # Create initial context object 93 93 context = RequestContext(request, { … … 100 100 }) 101 101 request.PYLUCID.context = context 102 102 103 103 # Get all plugin context middlewares from the template and add them to the context 104 104 pylucid_plugin.context_middleware_request(request) 105 105 106 106 # call page plugin, if current page is a plugin page 107 107 page_plugin_response = None … … 131 131 # FIXME: Do this erlear: So A plugin page can change the values! 132 132 for itemname in ("createby", "lastupdateby", "createtime", "lastupdatetime"): 133 context["page_%s" % itemname] = getattr(updateinfo_object, itemname) 134 133 context["page_%s" % itemname] = getattr(updateinfo_object, itemname) 134 135 135 # call a pylucid plugin "html get view", if exist 136 136 get_view_response = pylucid_plugin.call_get_views(request) 137 137 if get_view_response != None: 138 138 # Use plugin response 139 assert(isinstance(get_view_response, http.HttpResponse),140 "pylucid plugins must return a http.HttpResponse instance or None!"141 )142 139 if isinstance(get_view_response, http.HttpResponse): 143 140 # Plugin would be build the complete html page 144 141 response = _apply_context_middleware(request, get_view_response) 145 142 return response 146 147 assert isinstance(get_view_response, basestring), \ 148 "Plugin get view must return None, HttpResponse or a basestring!" 149 143 144 assert isinstance(get_view_response, basestring), ( 145 "Plugin get view must return None, HttpResponse or a basestring! (returned: %r)" 146 ) % type(get_view_response) 147 150 148 # Plugin replace the page content 151 149 context["page_content"] = get_view_response 152 150 153 151 if page_plugin_response == None and get_view_response == None: 154 152 # No Plugin has changed the PageContent -> apply markup on PageContent … … 156 154 else: 157 155 raw_html_content = context["page_content"] 158 156 159 157 html_content = render.render_string_template(raw_html_content, context) 160 158 161 159 response = _render_template(request, page_content=html_content) 162 160 163 161 response = _apply_context_middleware(request, response) 164 162 return response … … 189 187 msg = "" 190 188 raise http.Http404(msg) 191 189 192 190 try: 193 191 headfile = EditableHtmlHeadFile.objects.get(filepath=filepath) … … 198 196 msg = "" 199 197 raise http.Http404(msg) 200 198 201 199 if headfile.render: 202 200 content = headfile.get_rendered(colorscheme) 203 201 else: 204 202 content = headfile.content 205 206 mimetype = headfile.mimetype 203 204 mimetype = headfile.mimetype 207 205 return http.HttpResponse(content, mimetype=mimetype) 208 206 … … 229 227 # Get the first PageTree entry 230 228 pagetree = PageTree.objects.get_root_page() 231 229 232 230 return _render_page(request, pagetree) 233 231 … … 236 234 """ render the first root page in system default language """ 237 235 _add_pylucid_request_objects(request) 238 236 239 237 # activate language via auto detection 240 238 i18n.activate_auto_language(request) 241 239 242 240 return _render_root_page(request) 243 241 … … 246 244 """ url with lang code but no page slug """ 247 245 _add_pylucid_request_objects(request) 248 246 249 247 try: 250 248 lang_entry = Language.objects.get(code=url_lang_code) … … 253 251 # redirect to "/" 254 252 return http.HttpResponseRedirect("/") 255 253 256 254 # activate i18n 257 255 i18n.activate_language(request, lang_entry, save=True) 258 256 259 257 return _render_root_page(request) 260 258 … … 264 262 """ Redirect to a url with the default language code. """ 265 263 # activate language via auto detection 266 i18n.activate_auto_language(request) 267 264 i18n.activate_auto_language(request) 265 268 266 # Check only, if url_path is right (if there exist a pagetree object) 269 267 # otherwise -> 404 would be raised 270 268 _get_pagetree(url_path) 271 269 272 270 lang_code = request.LANGUAGE_CODE 273 271 url = reverse('PyLucid-resolve_url', kwargs={'url_lang_code': lang_code, 'url_path': url_path}) 274 272 275 273 # redirect to url with lang_code 276 274 return http.HttpResponseRedirect(url) … … 286 284 """ url with lang_code and sub page path """ 287 285 _add_pylucid_request_objects(request) 288 286 289 287 try: 290 288 lang_entry = Language.objects.get(code=url_lang_code) … … 293 291 # redirect to a url with the default language code. 294 292 return _i18n_redirect(request, url_path) 295 293 296 294 # activate i18n 297 295 i18n.activate_language(request, lang_entry, save=True) 298 296 299 297 pagetree, prefix_url, rest_url = _get_pagetree(url_path) 300 298 301 299 return _render_page(request, pagetree, prefix_url, rest_url) 302 300 303 301 304 302 def page_without_lang(request, url_path): 305 303 """ … … 308 306 """ 309 307 _add_pylucid_request_objects(request) 310 308 311 309 # redirect to a url with the default language code. 312 310 return _i18n_redirect(request, url_path) 313 311 314 312 315 316 317 318 319 320 321 313 314 315 316 317 318 319