Ejemplo n.º 1
0
def user_sign_up(email, first_name, last_name, gender, dob, qatar_id,
                 mobile_no, password):
    if not is_signup_enabled():
        frappe.throw(_('Sign Up is disabled'), title='Not Allowed')

    user = frappe.db.get("User", {"email": email})
    if user:
        if user.disabled:
            return 0, _("Registered but disabled")
        else:
            return 0, _("Already Registered")
    else:
        if frappe.db.sql("""select count(*) from tabUser where
			HOUR(TIMEDIFF(CURRENT_TIMESTAMP, TIMESTAMP(modified)))=1""")[0][0] > 300:

            frappe.respond_as_web_page(
                _('Temporarily Disabled'),
                _('Too many users signed up recently, so the registration is disabled. Please try back in an hour'
                  ),
                http_status_code=429)

        from frappe.utils import random_string
        user = frappe.get_doc({
            "doctype": "User",
            "email": email,
            "first_name": escape_html(first_name),
            "last_name": escape_html(last_name),
            "gender": escape_html(gender),
            "birth_date": dob,
            "qatar_id": qatar_id,
            # "tnc":tnc,
            "mobile_no": mobile_no,
            "enabled": 1,
            "new_password": password,
            "user_type": "Website User"
        })
        user.flags.ignore_permissions = True
        user.flags.ignore_password_policy = True
        user.insert()

        # set default signup role as per Portal Settings
        default_role = frappe.db.get_value("Portal Settings", None,
                                           "default_role")
        if default_role:
            user.add_roles(default_role)
        user.save()

        return 1, _("success")
Ejemplo n.º 2
0
def get_context(context):
    """generate rss feed"""

    host = get_request_site_address()

    blog_list = frappe.db.sql("""\
		select route as name, published_on, modified, title, content from `tabBlog Post`
		where ifnull(published,0)=1
		order by published_on desc limit 20""",
                              as_dict=1)

    for blog in blog_list:
        blog_page = cstr(urllib.quote(blog.route.encode("utf-8")))
        blog.link = urllib.basejoin(host, blog_page)
        blog.content = escape_html(blog.content or "")

    if blog_list:
        modified = max((blog['modified'] for blog in blog_list))
    else:
        modified = now()

    blog_settings = frappe.get_doc('Blog Settings', 'Blog Settings')

    context = {
        'title': blog_settings.blog_title or "Blog",
        'description': blog_settings.blog_introduction or "",
        'modified': modified,
        'items': blog_list,
        'link': host + '/blog'
    }

    # print context
    return context
Ejemplo n.º 3
0
def get_context(context):
	"""generate rss feed"""

	host = get_request_site_address()

	blog_list = frappe.db.sql("""\
		select page_name as name, published_on, modified, title, content from `tabBlog Post`
		where ifnull(published,0)=1
		order by published_on desc limit 20""", as_dict=1)

	for blog in blog_list:
		blog_page = cstr(urllib.quote(blog.name.encode("utf-8"))) + ".html"
		blog.link = urllib.basejoin(host, blog_page)
		blog.content = escape_html(blog.content or "")

	if blog_list:
		modified = max((blog['modified'] for blog in blog_list))
	else:
		modified = now()

	blog_settings = frappe.get_doc('Blog Settings', 'Blog Settings')

	context = {
		'title': blog_settings.blog_title or "Blog",
		'description': blog_settings.blog_introduction or "",
		'modified': modified,
		'items': blog_list,
		'link': host + '/blog'
	}

	# print context
	return context
Ejemplo n.º 4
0
def render_template(template, context, is_path=None, safe_render=True):
    '''Render a template using Jinja

	:param template: path or HTML containing the jinja template
	:param context: dict of properties to pass to the template
	:param is_path: (optional) assert that the `template` parameter is a path
	:param safe_render: (optional) prevent server side scripting via jinja templating
	'''

    from frappe import get_traceback, throw
    from frappe.utils import escape_html
    from jinja2 import TemplateError

    if not template:
        return ""

    # if it ends with .html then its a freaking path, not html
    if (is_path or template.startswith("templates/")
            or (template.endswith('.html') and '\n' not in template)):
        return get_jenv().get_template(template).render(context)
    else:
        if safe_render and ".__" in template:
            throw("Illegal template")
        try:
            return get_jenv().from_string(template).render(context)
        except TemplateError:
            throw(title="Jinja Template Error",
                  msg="<pre>{template}</pre><pre>{tb}</pre>".format(
                      template=template, tb=escape_html(get_traceback())))
Ejemplo n.º 5
0
def get_context(context):
    """generate rss feed"""

    host = get_request_site_address()

    blog_list = frappe.db.sql(
        """\
		select route as name, published_on, modified, title, content from `tabBlog Post`
		where ifnull(published,0)=1
		order by published_on desc limit 20""",
        as_dict=1,
    )

    for blog in blog_list:
        blog_page = cstr(quote(blog.name.encode("utf-8")))
        blog.link = urljoin(host, blog_page)
        blog.content = escape_html(blog.content or "")

    if blog_list:
        modified = max((blog["modified"] for blog in blog_list))
    else:
        modified = now()

    blog_settings = frappe.get_doc("Blog Settings", "Blog Settings")

    context = {
        "title": blog_settings.blog_title or "Blog",
        "description": blog_settings.blog_introduction or "",
        "modified": modified,
        "items": blog_list,
        "link": host + "/blog",
    }

    # print context
    return context
Ejemplo n.º 6
0
def sign_up(email, full_name, redirect_to, aadhar_card, mobile_number,
            location, account_name, account_number, branch, ifsc_code):
    if not is_signup_enabled():
        frappe.throw(_('Sign Up is disabled'), title='Not Allowed')

    user = frappe.db.get("User", {"email": email})
    if user:
        if user.disabled:
            return 0, _("Registered but disabled")
        else:
            return 0, _("Already Registered")
    else:
        if frappe.db.sql("""select count(*) from tabUser where
			HOUR(TIMEDIFF(CURRENT_TIMESTAMP, TIMESTAMP(modified)))=1""")[0][0] > 300:

            frappe.respond_as_web_page(
                _('Temporarily Disabled'),
                _('Too many users signed up recently, so the registration is disabled. Please try back in an hour'
                  ),
                http_status_code=429)

        from frappe.utils import random_string
        user = frappe.get_doc({
            "doctype": "User",
            "email": email,
            "first_name": escape_html(full_name),
            "enabled": 1,
            "new_password": "******",
            "user_type": "Website User",
            'aadhar_card': aadhar_card,
            'account_name': account_name,
            'account_number': account_number,
            'branch': branch,
            'mobile_no': mobile_number,
            'location': location,
            'ifsc_code': ifsc_code
        })
        user.flags.ignore_permissions = True
        user.flags.ignore_password_policy = True
        user.insert()

        # set default signup role as per Portal Settings
        default_role = frappe.db.get_value("Portal Settings", None,
                                           "default_role")
        if default_role:
            user.add_roles(default_role)

        if redirect_to:
            frappe.cache().hset('redirect_after_login', user.name, redirect_to)

        if user.flags.email_sent:
            return 1, _("Please check your email for verification")
        else:
            return 2, _("Please ask your administrator to verify your sign-up")
Ejemplo n.º 7
0
def sign_up(email, full_name, redirect_to):
	if is_signup_disabled():
		frappe.throw(_("Sign Up is disabled"), title=_("Not Allowed"))

	user = frappe.db.get("User", {"email": email})
	if user:
		if user.enabled:
			return 0, _("Already Registered")
		else:
			return 0, _("Registered but disabled")
	else:
		if frappe.db.get_creation_count("User", 60) > 300:
			frappe.respond_as_web_page(
				_("Temporarily Disabled"),
				_(
					"Too many users signed up recently, so the registration is disabled. Please try back in an hour"
				),
				http_status_code=429,
			)

		from frappe.utils import random_string

		user = frappe.get_doc(
			{
				"doctype": "User",
				"email": email,
				"first_name": escape_html(full_name),
				"enabled": 1,
				"new_password": random_string(10),
				"user_type": "Website User",
			}
		)
		user.flags.ignore_permissions = True
		user.flags.ignore_password_policy = True
		user.insert()

		# set default signup role as per Portal Settings
		default_role = frappe.db.get_value("Portal Settings", None, "default_role")
		if default_role:
			user.add_roles(default_role)

		if redirect_to:
			frappe.cache().hset("redirect_after_login", user.name, redirect_to)

		if user.flags.email_sent:
			return 1, _("Please check your email for verification")
		else:
			return 2, _("Please ask your administrator to verify your sign-up")
Ejemplo n.º 8
0
	host = get_request_site_address()

	blog_list = frappe.db.sql("""\
		select route as name, published_on, modified, title, content from `tabBlog Post`
		where ifnull(published,0)=1
		order by published_on desc limit 20""", as_dict=1)

	for blog in blog_list:
		blog_page = cstr(quote(blog.name.encode("utf-8")))
<<<<<<< HEAD
		blog.link = urllib.basejoin(host, blog_page)
=======
		blog.link = urljoin(host, blog_page)
>>>>>>> 176d241496ede1357a309fa44a037b757a252581
		blog.content = escape_html(blog.content or "")

	if blog_list:
		modified = max((blog['modified'] for blog in blog_list))
	else:
		modified = now()

	blog_settings = frappe.get_doc('Blog Settings', 'Blog Settings')

	context = {
		'title': blog_settings.blog_title or "Blog",
		'description': blog_settings.blog_introduction or "",
		'modified': modified,
		'items': blog_list,
		'link': host + '/blog'
	}