|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- # 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
- }
- }
|