@@ -64,7 +64,7 @@ def application(request): | |||||
response = frappe.utils.response.download_private_file(request.path) | response = frappe.utils.response.download_private_file(request.path) | ||||
elif frappe.local.request.method in ('GET', 'HEAD'): | elif frappe.local.request.method in ('GET', 'HEAD'): | ||||
response = frappe.website.render.render(request.path) | |||||
response = frappe.website.render.render() | |||||
else: | else: | ||||
raise NotFound | raise NotFound | ||||
@@ -961,6 +961,7 @@ li .footer-child-item { | |||||
} | } | ||||
.comment-header { | .comment-header { | ||||
border-bottom: 1px solid #EBEFF2; | border-bottom: 1px solid #EBEFF2; | ||||
padding: 30px 0px 15px; | |||||
} | } | ||||
.item-search { | .item-search { | ||||
border-bottom: 1px solid #d1d8dd; | border-bottom: 1px solid #d1d8dd; | ||||
@@ -571,6 +571,7 @@ li .footer-child-item { | |||||
.comment-header{ | .comment-header{ | ||||
border-bottom: 1px solid @light-border-color; | border-bottom: 1px solid @light-border-color; | ||||
padding: 30px 0px 15px; | |||||
} | } | ||||
.item-search { | .item-search { | ||||
@@ -1,3 +1,5 @@ | |||||
/* login-css */ | |||||
.page-sidebar, #wrap-footer, .page-header { | .page-sidebar, #wrap-footer, .page-header { | ||||
display: none; | display: none; | ||||
} | } | ||||
@@ -114,6 +116,6 @@ p{ | |||||
.btn-login { | .btn-login { | ||||
text-transform: uppercase; | text-transform: uppercase; | ||||
letter-spacing: 0.5px; | letter-spacing: 0.5px; | ||||
font-weight: 400; | |||||
font-weight: 400; | |||||
font-size: 14px; | font-size: 14px; | ||||
} | } |
@@ -1,5 +1,7 @@ | |||||
window.disable_signup = {{ disable_signup and "true" or "false" }}; | |||||
// login.js | |||||
// don't remove this line (used in test) | |||||
window.disable_signup = {{ disable_signup and "true" or "false" }}; | |||||
window.login = {}; | window.login = {}; | ||||
@@ -0,0 +1,25 @@ | |||||
from __future__ import unicode_literals | |||||
import frappe, unittest | |||||
from werkzeug.wrappers import Request | |||||
from werkzeug.test import EnvironBuilder | |||||
from frappe.website import render | |||||
def set_request(**kwargs): | |||||
builder = EnvironBuilder(**kwargs) | |||||
frappe.local.request = Request(builder.get_environ()) | |||||
class TestWebsite(unittest.TestCase): | |||||
def test_page_load(self): | |||||
set_request(method='POST', path='login') | |||||
response = render.render() | |||||
self.assertTrue(response.status_code, 200) | |||||
html = response.get_data() | |||||
self.assertTrue('/* login-css */' in html) | |||||
self.assertTrue('// login.js' in html) | |||||
self.assertTrue('<!-- login.html -->' in html) |
@@ -19,6 +19,11 @@ class BlogPost(WebsiteGenerator): | |||||
page_title_field = "title" | page_title_field = "title" | ||||
) | ) | ||||
def make_route(self): | |||||
if not self.route: | |||||
return 'blog/' + frappe.db.get_value('Blog Category', self.blog_category, | |||||
'route') + '/' + self.scrub(self.title) | |||||
def get_feed(self): | def get_feed(self): | ||||
return self.title | return self.title | ||||
@@ -4,6 +4,29 @@ from __future__ import unicode_literals | |||||
import frappe | import frappe | ||||
import unittest | import unittest | ||||
from frappe.tests.test_website import set_request | |||||
from frappe.website.render import render | |||||
class TestBlogPost(unittest.TestCase): | class TestBlogPost(unittest.TestCase): | ||||
pass | |||||
def test_generator_view(self): | |||||
pages = frappe.get_all('Blog Post', fields=['name', 'route'], | |||||
filters={'published': 1, 'route': ('!=', '')}, limit =1) | |||||
set_request(path=pages[0].route) | |||||
response = render() | |||||
self.assertTrue(response.status_code, 200) | |||||
html = response.get_data() | |||||
self.assertTrue('<article class="blog-content" itemscope itemtype="http://schema.org/BlogPosting">' in html) | |||||
def test_generator_not_found(self): | |||||
pages = frappe.get_all('Blog Post', fields=['name', 'route'], | |||||
filters={'published': 0}, limit =1) | |||||
frappe.db.set_value('Blog Post', pages[0].name, 'route', 'test-route-000') | |||||
set_request(path='test-route-000') | |||||
response = render() | |||||
self.assertTrue(response.status_code, 404) |
@@ -5,7 +5,8 @@ | |||||
"blogger": "_Test Blogger", | "blogger": "_Test Blogger", | ||||
"content": "Test Blog Content", | "content": "Test Blog Content", | ||||
"doctype": "Blog Post", | "doctype": "Blog Post", | ||||
"title": "_Test Blog Post" | |||||
"title": "_Test Blog Post", | |||||
"published": 1 | |||||
}, | }, | ||||
{ | { | ||||
"blog_category": "_Test Blog Category 1", | "blog_category": "_Test Blog Category 1", | ||||
@@ -13,7 +14,8 @@ | |||||
"blogger": "_Test Blogger", | "blogger": "_Test Blogger", | ||||
"content": "Test Blog Content", | "content": "Test Blog Content", | ||||
"doctype": "Blog Post", | "doctype": "Blog Post", | ||||
"title": "_Test Blog Post 1" | |||||
"title": "_Test Blog Post 1", | |||||
"published": 1 | |||||
}, | }, | ||||
{ | { | ||||
"blog_category": "_Test Blog Category 1", | "blog_category": "_Test Blog Category 1", | ||||
@@ -21,6 +23,7 @@ | |||||
"blogger": "_Test Blogger 1", | "blogger": "_Test Blogger 1", | ||||
"content": "Test Blog Content", | "content": "Test Blog Content", | ||||
"doctype": "Blog Post", | "doctype": "Blog Post", | ||||
"title": "_Test Blog Post 2" | |||||
"title": "_Test Blog Post 2", | |||||
"published": 0 | |||||
} | } | ||||
] | ] |
@@ -17,9 +17,9 @@ from frappe.translate import guess_language | |||||
class PageNotFoundError(Exception): pass | class PageNotFoundError(Exception): pass | ||||
def render(path, http_status_code=None): | |||||
def render(path=None, http_status_code=None): | |||||
"""render html page""" | """render html page""" | ||||
path = resolve_path(path.strip("/ ")) | |||||
path = resolve_path(frappe.local.request.path.strip('/ ')) | |||||
data = None | data = None | ||||
# if in list of already known 404s, send it | # if in list of already known 404s, send it | ||||
@@ -18,6 +18,7 @@ def get_page_context(path): | |||||
page_context = make_page_context(path) | page_context = make_page_context(path) | ||||
if can_cache(page_context.no_cache): | if can_cache(page_context.no_cache): | ||||
page_context_cache[frappe.local.lang] = page_context | page_context_cache[frappe.local.lang] = page_context | ||||
frappe.cache().hset("page_context", path, page_context_cache) | frappe.cache().hset("page_context", path, page_context_cache) | ||||
return page_context | return page_context | ||||
@@ -18,7 +18,7 @@ class WebsiteGenerator(Document): | |||||
def autoname(self): | def autoname(self): | ||||
if not self.name and self.meta.autoname != "hash": | if not self.name and self.meta.autoname != "hash": | ||||
self.name = self.make_route() | |||||
self.name = self.scrub(self.get(self.website.page_title_field or "title")) | |||||
def onload(self): | def onload(self): | ||||
self.get("__onload").update({ | self.get("__onload").update({ | ||||
@@ -69,7 +69,6 @@ class WebsiteGenerator(Document): | |||||
"ref_doctype":self.doctype, | "ref_doctype":self.doctype, | ||||
"idx": self.idx, | "idx": self.idx, | ||||
"docname": self.name, | "docname": self.name, | ||||
"route": route, | |||||
"controller": get_module_name(self.doctype, self.meta.module), | "controller": get_module_name(self.doctype, self.meta.module), | ||||
}) | }) | ||||
@@ -7,7 +7,7 @@ | |||||
{% endblock %} | {% endblock %} | ||||
{% block page_content %} | {% block page_content %} | ||||
<!-- no-header --> | |||||
<!-- {{ for_test }} --> | |||||
<div class="login-content"> | <div class="login-content"> | ||||
<form class="form-signin form-login" role="form"> | <form class="form-signin form-login" role="form"> | ||||
@@ -17,6 +17,8 @@ def get_context(context): | |||||
raise frappe.Redirect | raise frappe.Redirect | ||||
# get settings from site config | # get settings from site config | ||||
context.no_header = True | |||||
context.for_test = 'login.html' | |||||
context["title"] = "Login" | context["title"] = "Login" | ||||
context["disable_signup"] = frappe.utils.cint(frappe.db.get_value("Website Settings", "Website Settings", "disable_signup")) | context["disable_signup"] = frappe.utils.cint(frappe.db.get_value("Website Settings", "Website Settings", "disable_signup")) | ||||