Files
@ 7e5f8c12a3fc
Branch filter:
Location: kallithea/rhodecode/controllers/admin/notifications.py - annotation
7e5f8c12a3fc
6.9 KiB
text/x-python
First step in two-part process to rename directories to kallithea.
This first step is to change all references in the files where they refer
to the old directory name.
This first step is to change all references in the files where they refer
to the old directory name.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c 89efedac4e6c ffd45b185016 7e5f8c12a3fc ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 89efedac4e6c cac5109ac3b6 54687aa00724 cac5109ac3b6 2aee0dc1784e 54687aa00724 edb9a42def31 ffd45b185016 cac5109ac3b6 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 7e5f8c12a3fc 64e91067b996 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 2aee0dc1784e cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cf51bbfb120e cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 4a5b93b3bcdd cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 74f2910f7ad9 d04243e932cc 6b176c679896 7efc8dcc0dc4 64f7cf8f6a33 74f2910f7ad9 d04243e932cc d04243e932cc f8742e1acf08 f8742e1acf08 f8742e1acf08 f8742e1acf08 f8742e1acf08 f8742e1acf08 f8742e1acf08 f8742e1acf08 cac5109ac3b6 cac5109ac3b6 2aee0dc1784e 2aee0dc1784e 2aee0dc1784e 2aee0dc1784e 74f2910f7ad9 d04243e932cc 91c442a489bb 2aee0dc1784e 74f2910f7ad9 d04243e932cc 64f7cf8f6a33 2aee0dc1784e 2aee0dc1784e cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 3fdf7c3be2c9 3fdf7c3be2c9 a45191e7c7bb a45191e7c7bb 3fdf7c3be2c9 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 3fdf7c3be2c9 edb9a42def31 3fdf7c3be2c9 ffd45b185016 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 54687aa00724 54687aa00724 ffd45b185016 a45191e7c7bb 3fdf7c3be2c9 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 54687aa00724 edb9a42def31 54687aa00724 ffd45b185016 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 54687aa00724 54687aa00724 edb9a42def31 a45191e7c7bb ffd45b185016 ffd45b185016 54687aa00724 54687aa00724 cac5109ac3b6 54687aa00724 54687aa00724 54687aa00724 260a7a01b054 54687aa00724 91c442a489bb 54687aa00724 cac5109ac3b6 54687aa00724 cac5109ac3b6 edb9a42def31 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 cac5109ac3b6 | # -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
kallithea.controllers.admin.notifications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
notifications controller for RhodeCode
:created_on: Nov 23, 2010
:author: marcink
:copyright: (c) 2013 RhodeCode GmbH.
:license: GPLv3, see LICENSE for more details.
"""
import logging
import traceback
from pylons import request
from pylons import tmpl_context as c, url
from pylons.controllers.util import redirect, abort
from webob.exc import HTTPBadRequest
from kallithea.model.db import Notification
from kallithea.model.notification import NotificationModel
from kallithea.model.meta import Session
from kallithea.lib.auth import LoginRequired, NotAnonymous
from kallithea.lib.base import BaseController, render
from kallithea.lib import helpers as h
from kallithea.lib.helpers import Page
from kallithea.lib.utils2 import safe_int
log = logging.getLogger(__name__)
class NotificationsController(BaseController):
"""REST Controller styled on the Atom Publishing Protocol"""
# To properly map this controller, ensure your config/routing.py
# file has a resource setup:
# map.resource('notification', 'notifications', controller='_admin/notifications',
# path_prefix='/_admin', name_prefix='_admin_')
@LoginRequired()
@NotAnonymous()
def __before__(self):
super(NotificationsController, self).__before__()
def index(self, format='html'):
"""GET /_admin/notifications: All items in the collection"""
# url('notifications')
c.user = self.rhodecode_user
notif = NotificationModel().get_for_user(self.rhodecode_user.user_id,
filter_=request.GET.getall('type'))
p = safe_int(request.GET.get('page', 1), 1)
c.notifications = Page(notif, page=p, items_per_page=10)
c.pull_request_type = Notification.TYPE_PULL_REQUEST
c.comment_type = [Notification.TYPE_CHANGESET_COMMENT,
Notification.TYPE_PULL_REQUEST_COMMENT]
_current_filter = request.GET.getall('type')
c.current_filter = 'all'
if _current_filter == [c.pull_request_type]:
c.current_filter = 'pull_request'
elif _current_filter == c.comment_type:
c.current_filter = 'comment'
return render('admin/notifications/notifications.html')
def mark_all_read(self):
if request.environ.get('HTTP_X_PARTIAL_XHR'):
nm = NotificationModel()
# mark all read
nm.mark_all_read_for_user(self.rhodecode_user.user_id,
filter_=request.GET.getall('type'))
Session().commit()
c.user = self.rhodecode_user
notif = nm.get_for_user(self.rhodecode_user.user_id,
filter_=request.GET.getall('type'))
c.notifications = Page(notif, page=1, items_per_page=10)
return render('admin/notifications/notifications_data.html')
def create(self):
"""POST /_admin/notifications: Create a new item"""
# url('notifications')
def new(self, format='html'):
"""GET /_admin/notifications/new: Form to create a new item"""
# url('new_notification')
def update(self, notification_id):
"""PUT /_admin/notifications/id: Update an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="PUT" />
# Or using helpers:
# h.form(url('notification', notification_id=ID),
# method='put')
# url('notification', notification_id=ID)
try:
no = Notification.get(notification_id)
owner = all(un.user.user_id == c.rhodecode_user.user_id
for un in no.notifications_to_users)
if h.HasPermissionAny('hg.admin')() or owner:
# deletes only notification2user
NotificationModel().mark_read(c.rhodecode_user.user_id, no)
Session().commit()
return 'ok'
except Exception:
Session().rollback()
log.error(traceback.format_exc())
raise HTTPBadRequest()
def delete(self, notification_id):
"""DELETE /_admin/notifications/id: Delete an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="DELETE" />
# Or using helpers:
# h.form(url('notification', notification_id=ID),
# method='delete')
# url('notification', notification_id=ID)
try:
no = Notification.get(notification_id)
owner = any(un.user.user_id == c.rhodecode_user.user_id
for un in no.notifications_to_users)
if h.HasPermissionAny('hg.admin')() or owner:
# deletes only notification2user
NotificationModel().delete(c.rhodecode_user.user_id, no)
Session().commit()
return 'ok'
except Exception:
Session().rollback()
log.error(traceback.format_exc())
raise HTTPBadRequest()
def show(self, notification_id, format='html'):
"""GET /_admin/notifications/id: Show a specific item"""
# url('notification', notification_id=ID)
c.user = self.rhodecode_user
no = Notification.get(notification_id)
owner = any(un.user.user_id == c.rhodecode_user.user_id
for un in no.notifications_to_users)
repo_admin = h.HasRepoPermissionAny('repository.admin')
if no and (h.HasPermissionAny('hg.admin')() or repo_admin or owner):
unotification = NotificationModel()\
.get_user_notification(c.user.user_id, no)
# if this association to user is not valid, we don't want to show
# this message
if unotification:
if not unotification.read:
unotification.mark_as_read()
Session().commit()
c.notification = no
return render('admin/notifications/show_notification.html')
return abort(403)
def edit(self, notification_id, format='html'):
"""GET /_admin/notifications/id/edit: Form to edit an existing item"""
# url('edit_notification', notification_id=ID)
|