125 lines
No EOL
3.6 KiB
Python
125 lines
No EOL
3.6 KiB
Python
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
|
# MIT License. See license.txt
|
|
|
|
from __future__ import unicode_literals
|
|
import webnotes
|
|
from webnotes.utils import now_datetime, get_datetime_str
|
|
from webnotes.webutils import get_access
|
|
from webnotes.templates.website_group.settings import get_settings_context
|
|
from webnotes.templates.website_group.post import get_post_context
|
|
|
|
def get_views():
|
|
return views
|
|
|
|
def get_context(group_context):
|
|
events_context = {}
|
|
|
|
if group_context.view.name in ("upcoming", "past"):
|
|
events_context["post_list_html"] = get_post_list_html(group_context["group"]["name"], group_context["view"])
|
|
|
|
elif group_context.view.name == "edit":
|
|
events_context["session_user"] = webnotes.session.user
|
|
events_context["post"] = webnotes.doc("Post", webnotes.form_dict.name).fields
|
|
|
|
elif group_context.view.name == "settings":
|
|
events_context.update(get_settings_context(group_context))
|
|
|
|
elif group_context.view.name == "post":
|
|
events_context.update(get_post_context(group_context))
|
|
|
|
return events_context
|
|
|
|
@webnotes.whitelist(allow_guest=True)
|
|
def get_post_list_html(group, view, limit_start=0, limit_length=20):
|
|
access = get_access(group)
|
|
|
|
if isinstance(view, basestring):
|
|
view = get_views()[view]
|
|
|
|
view = webnotes._dict(view)
|
|
|
|
# verify permission for paging
|
|
if webnotes.local.form_dict.cmd == "get_post_list_html":
|
|
if not access.get("read"):
|
|
return webnotes.PermissionError
|
|
|
|
if view.name=="upcoming":
|
|
condition = "and p.event_datetime >= %s"
|
|
order_by = "p.event_datetime asc"
|
|
else:
|
|
condition = "and p.event_datetime < %s"
|
|
order_by = "p.event_datetime desc"
|
|
|
|
# should show based on time upto precision of hour
|
|
# because the current hour should also be in upcoming
|
|
now = now_datetime().replace(minute=0, second=0, microsecond=0)
|
|
|
|
posts = webnotes.conn.sql("""select p.*, pr.user_image, pr.first_name, pr.last_name,
|
|
(select count(pc.name) from `tabPost` pc where pc.parent_post=p.name) as post_reply_count
|
|
from `tabPost` p, `tabProfile` pr
|
|
where p.website_group = %s and pr.name = p.owner and ifnull(p.parent_post, '')=''
|
|
and p.is_event=1 {condition}
|
|
order by {order_by} limit %s, %s""".format(condition=condition, order_by=order_by),
|
|
(group, now, int(limit_start), int(limit_length)), as_dict=True)
|
|
|
|
context = {"posts": posts, "limit_start": limit_start, "view": view}
|
|
|
|
return webnotes.get_template("templates/includes/post_list.html").render(context)
|
|
|
|
views = {
|
|
"upcoming": {
|
|
"name": "upcoming",
|
|
"template_path": "templates/website_group/events.html",
|
|
"url": "/{group}",
|
|
"label": "Upcoming",
|
|
"icon": "icon-calendar",
|
|
"default": True,
|
|
"idx": 1
|
|
},
|
|
"past": {
|
|
"name": "past",
|
|
"template_path": "templates/website_group/events.html",
|
|
"url": "/{group}?view=past",
|
|
"label": "Past",
|
|
"icon": "icon-time",
|
|
"idx": 2
|
|
},
|
|
"post": {
|
|
"name": "post",
|
|
"template_path": "templates/website_group/post.html",
|
|
"url": "/{group}?view=post&name={post}",
|
|
"label": "Post",
|
|
"icon": "icon-comments",
|
|
"hidden": True,
|
|
"no_cache": True,
|
|
"idx": 3
|
|
},
|
|
"edit": {
|
|
"name": "edit",
|
|
"template_path": "templates/website_group/edit_post.html",
|
|
"url": "/{group}?view=edit&name={post}",
|
|
"label": "Edit Post",
|
|
"icon": "icon-pencil",
|
|
"hidden": True,
|
|
"no_cache": True,
|
|
"idx": 4
|
|
},
|
|
"add": {
|
|
"name": "add",
|
|
"template_path": "templates/website_group/edit_post.html",
|
|
"url": "/{group}?view=add",
|
|
"label": "Add Post",
|
|
"icon": "icon-plus",
|
|
"hidden": True,
|
|
"idx": 5
|
|
},
|
|
"settings": {
|
|
"name": "settings",
|
|
"template_path": "templates/website_group/settings.html",
|
|
"url": "/{group}?view=settings",
|
|
"label": "Settings",
|
|
"icon": "icon-cog",
|
|
"hidden": True,
|
|
"idx": 6
|
|
}
|
|
} |