Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F91304251
webcommentadminlib.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Nov 9, 20:11
Size
9 KB
Mime Type
text/x-python
Expires
Mon, Nov 11, 20:11 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22237850
Attached To
R3600 invenio-infoscience
webcommentadminlib.py
View Options
# -*- coding: utf-8 -*-
## $Id$
## Comments and reviews for records.
## This file is part of the CERN Document Server Software (CDSware).
## Copyright (C) 2002, 2003, 2004, 2005 CERN.
##
## The CDSware 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 2 of the
## License, or (at your option) any later version.
##
## The CDSware 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 CDSware; if not, write to the Free Software Foundation, Inc.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
__lastupdated__
=
"""FIXME: last updated"""
from
mod_python
import
apache
from
cdsware.bibrankadminlib
import
check_user
#write_outcome,modify_translations,get_def_name,get_i8n_name,get_name,get_rnk_nametypes,get_languages,check_user,is_adminuser,
#adderrorbox,addadminbox,tupletotable,tupletotable_onlyselected,addcheckboxes,createhiddenform,serialize_via_numeric_array_dumps,
#serialize_via_numeric_array_compr,serialize_via_numeric_array_escape,serialize_via_numeric_array,deserialize_via_numeric_array,
#serialize_via_marshal,deserialize_via_marshal
from
cdsware.config
import
*
from
cdsware.webcomment
import
wash_url_argument
,
query_get_comment
,
query_get_user_contact_info
from
cdsware.dbquery
import
run_sql
import
cdsware.template
webcomment_templates
=
cdsware
.
template
.
load
(
'webcomment'
)
def
getnavtrail
(
previous
=
''
):
"""Get the navtrail"""
navtrail
=
"""<a class=navtrail href="%s/admin/">Admin Area</a> > <a class=navtrail href="%s/admin/webcomment/">WebComment Admin</a> """
%
(
weburl
,
weburl
)
navtrail
=
navtrail
+
previous
return
navtrail
def
perform_request_index
(
ln
=
cdslang
):
"""
"""
return
webcomment_templates
.
tmpl_admin_index
(
ln
=
ln
)
def
perform_request_delete
(
ln
=
cdslang
,
comID
=-
1
):
"""
"""
warnings
=
[]
ln
=
wash_url_argument
(
ln
,
'str'
)
comID
=
wash_url_argument
(
comID
,
'int'
)
if
comID
is
not
None
:
if
comID
<=
0
:
if
comID
!=
-
1
:
warnings
.
append
((
"WRN_WEBCOMMENT_ADMIN_INVALID_COMID"
,))
return
(
webcomment_templates
.
tmpl_admin_delete_form
(
ln
,
warnings
),
None
,
warnings
)
comment
=
query_get_comment
(
comID
)
if
comment
:
c_star_score
=
5
if
comment
[
c_star_score
]
>
0
:
reviews
=
1
else
:
reviews
=
0
return
(
perform_request_comments
(
ln
=
ln
,
comID
=
comID
,
reviews
=
reviews
),
None
,
warnings
)
else
:
warnings
.
append
((
'WRN_WEBCOMMENT_ADMIN_COMID_INEXISTANT'
,
comID
))
return
(
webcomment_templates
.
tmpl_admin_delete_form
(
ln
,
warnings
),
None
,
warnings
)
else
:
return
(
webcomment_templates
.
tmpl_admin_delete_form
(
ln
,
warnings
),
None
,
warnings
)
def
perform_request_users
(
ln
=
cdslang
):
"""
"""
ln
=
wash_url_argument
(
ln
,
'str'
)
users_data
=
query_get_users_reported
()
return
webcomment_templates
.
tmpl_admin_users
(
ln
=
ln
,
users_data
=
users_data
)
def
query_get_users_reported
():
"""
Get the users who have been reported at least one.
@return tuple of ct, i.e. (ct, ct, ...)
where ct is a tuple (total_number_reported, total_comments_reported, total_reviews_reported,
total_nb_votes_yes_of_reported, total_nb_votes_total_of_reported, user_id, user_email, user_nickname)
sorted by order of ct having highest total_number_reported
"""
query1
=
"SELECT c.nb_abuse_reports, c.nb_votes_yes, c.nb_votes_total, u.id, u.email, u.nickname, c.star_score "
\
"FROM user AS u, cmtRECORDCOMMENT AS c "
\
"WHERE c.id_user=u.id AND c.nb_abuse_reports > 0 "
\
"ORDER BY u.id "
res1
=
run_sql
(
query1
)
if
type
(
res1
)
is
None
:
return
()
users
=
{}
for
cmt
in
res1
:
uid
=
int
(
cmt
[
3
])
if
users
.
has_key
(
uid
):
users
[
uid
]
=
(
users
[
uid
][
0
]
+
int
(
cmt
[
0
]),
int
(
cmt
[
6
])
>
0
and
users
[
uid
][
1
]
or
users
[
uid
][
1
]
+
1
,
int
(
cmt
[
6
])
>
0
and
users
[
uid
][
2
]
+
1
or
users
[
uid
][
2
],
users
[
uid
][
3
]
+
int
(
cmt
[
1
]),
users
[
uid
][
4
]
+
int
(
cmt
[
2
]),
int
(
cmt
[
3
]),
cmt
[
4
],
cmt
[
5
])
else
:
users
[
uid
]
=
(
int
(
cmt
[
0
]),
int
(
cmt
[
6
])
==
0
and
1
or
0
,
int
(
cmt
[
6
])
>
0
and
1
or
0
,
int
(
cmt
[
1
]),
int
(
cmt
[
2
]),
int
(
cmt
[
3
]),
cmt
[
4
],
cmt
[
5
])
users
=
users
.
values
()
users
.
sort
()
users
.
reverse
()
users
=
tuple
(
users
)
return
users
def
perform_request_comments
(
ln
=
cdslang
,
uid
=
""
,
comID
=
""
,
reviews
=
0
):
"""
"""
warning
=
[]
ln
=
wash_url_argument
(
ln
,
'str'
)
uid
=
wash_url_argument
(
uid
,
'int'
)
comID
=
wash_url_argument
(
comID
,
'int'
)
reviews
=
wash_url_argument
(
reviews
,
'int'
)
comments
=
query_get_comments
(
uid
,
comID
,
reviews
)
return
webcomment_templates
.
tmpl_admin_comments
(
ln
=
ln
,
uid
=
uid
,
comID
=
comID
,
comment_data
=
comments
,
reviews
=
reviews
)
def
query_get_comments
(
uid
,
comID
,
reviews
):
"""
private funciton
Get the reported comments of user uid or get the comment comID or get the comment comID which was written by user uid
@return same type of tuple as that which is returned by webcomment.py/query_retrieve_comments_or_remarks i.e.
tuple of comment where comment is
tuple (nickname, date_creation, body, id) if ranking disabled or
tuple (nickname, date_creation, body, nb_votes_yes, nb_votes_total, star_score, title, id)
"""
query1
=
"SELECT u.nickname, c.date_creation, c.body,
%s
c.id, c.id_bibrec, c.id_user, "
\
"c.nb_abuse_reports, u.id, u.email, u.nickname "
\
"FROM user AS u, cmtRECORDCOMMENT AS c "
\
"WHERE c.id_user=u.id
%s
%s
%s
"
\
"ORDER BY c.nb_abuse_reports DESC, c.nb_votes_yes DESC, c.date_creation "
params1
=
(
reviews
>
0
and
" c.nb_votes_yes, c.nb_votes_total, c.star_score, c.title, "
or
""
,
reviews
>
0
and
" AND c.star_score>0 "
or
" AND c.star_score=0 "
,
uid
>
0
and
" AND c.id_user=
%s
"
%
uid
or
""
,
comID
>
0
and
" AND c.id=
%s
"
%
comID
or
" AND c.nb_abuse_reports>0 "
)
res1
=
run_sql
(
query1
%
params1
)
res2
=
[]
for
qtuple1
in
res1
:
# exceptional use of html here for giving admin extra information
new_info
=
""" <br>user (nickname=%s, email=%s, id=%s)<br>
comment/review id = %s<br>
commented <a href="%s/search.py/index?recid=%s">this record (id=%s)</a><br>
</td>
</tr>
<tr>
<td><span class="important"><b>reported %s times</b></span></td>
<td> </td>
<td> </td>
<td align=right><input type=checkbox name="comid%s"></td>
</tr>
<tr>
<td>"""
\
%
(
len
(
qtuple1
[
0
])
>
0
and
qtuple1
[
0
]
or
qtuple1
[
-
2
]
.
split
(
'@'
)[
0
],
qtuple1
[
-
2
],
qtuple1
[
-
5
],
qtuple1
[
-
7
],
weburl
,
qtuple1
[
-
6
],
qtuple1
[
-
6
],
qtuple1
[
-
4
],
qtuple1
[
-
7
])
if
reviews
:
qtuple2
=
(
len
(
qtuple1
[
0
])
>
0
and
qtuple1
[
0
]
or
qtuple1
[
-
2
]
.
split
(
'@'
)[
0
],
str
(
qtuple1
[
1
])
+
new_info
,
qtuple1
[
2
],
qtuple1
[
3
],
qtuple1
[
4
],
qtuple1
[
5
],
qtuple1
[
6
],
qtuple1
[
7
])
else
:
qtuple2
=
(
len
(
qtuple1
[
0
])
>
0
and
qtuple1
[
0
]
or
qtuple1
[
-
2
]
.
split
(
'@'
)[
0
],
str
(
qtuple1
[
1
])
+
new_info
,
qtuple1
[
2
],
qtuple1
[
3
])
res2
.
append
(
qtuple2
)
return
tuple
(
res2
)
def
perform_request_del_com
(
ln
=
cdslang
,
comIDs
=
[]):
"""
private function
Delete the comments and say whether successful or not
@param ln: language
@param comIDs: list of comment ids
"""
ln
=
wash_url_argument
(
ln
,
'str'
)
comIDs
=
wash_url_argument
(
comIDs
,
'list'
)
# map ( fct, list, arguments of function)
comIDs
=
map
(
wash_url_argument
,
comIDs
,
(
'int '
*
len
(
comIDs
))
.
split
(
' '
)[:
-
1
])
if
not
comIDs
:
comIDs
=
map
(
coerce
,
comIDs
,
(
'0 '
*
len
(
comIDs
))
.
split
(
' '
)[:
-
1
])
return
webcomment_templates
.
tmpl_admin_del_com
(
del_res
=
comIDs
)
del_res
=
[]
for
id
in
comIDs
:
del_res
.
append
((
id
,
query_delete_comment
(
id
)))
return
webcomment_templates
.
tmpl_admin_del_com
(
del_res
=
del_res
)
def
query_delete_comment
(
comID
):
"""
delete comment with id comID
@return integer 1 if successful, integer 0 if not
"""
query1
=
"DELETE FROM cmtRECORDCOMMENT WHERE id=
%s
"
params1
=
(
comID
,)
res1
=
run_sql
(
query1
,
params1
)
return
int
(
res1
)
def
getnavtrail
(
previous
=
''
):
"""
Get the navtrail
"""
navtrail
=
"""<a class=navtrail href="%s/admin/">Admin Area</a> > <a class=navtrail href="%s/admin/webcomment/">WebComment Admin</a> """
%
(
weburl
,
weburl
)
navtrail
=
navtrail
+
previous
return
navtrail
Event Timeline
Log In to Comment