-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comment spam moderation Part 2 #2305
Conversation
Generated by 🚫 Danger |
app/controllers/admin_controller.rb
Outdated
if @comment.status == 0 | ||
@comment.comment_spam | ||
flash[:notice] = "Comment has been marked as spam." | ||
redirect_to '/dashboard' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMHO, since the user is redirected in any case, the redirect statement can be placed at the end of the action (just after line 140).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
app/models/comment.rb
Outdated
@@ -142,4 +142,11 @@ def answer_comment_notify(current_user) | |||
notify_users(uids, current_user) | |||
notify_tag_followers(already + uids) | |||
end | |||
|
|||
def comment_spam |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh cool! Let's name this just def spam
to match node.rb, and add a corresponding def publish
method?
Lines 151 to 161 in fa16a69
def publish | |
self.status = 1 | |
save | |
self | |
end | |
def spam | |
self.status = 0 | |
save | |
self | |
end |
How does that sound? Then we can unit test this and functional test the above. This is looking great!!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks.I will do the changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good -- just made a few requests inline!
Very excited for this!!! 👍 👍 |
app/controllers/admin_controller.rb
Outdated
def publish_comment | ||
if current_user && (current_user.role == 'moderator' || current_user.role == 'admin') | ||
@comment = Comment.find params[:id] | ||
if @comment.status != 2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought you'd check to see if status == 0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wanted to but nodes and comments have a different status system.Active nodes has status = 1, spam has status 0.But, for comments, an active comment has status = 0 and so I have used status = 2(for spam).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, I understood your question now, actually, while writing tests I found that we have one more status for comment i.e., status = 1 - it represents what unknown to me, so I used condition
status!= 2 so that other status values wouldn't change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see your point.
Can status be set to a negative number?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got your point !!!
app/controllers/admin_controller.rb
Outdated
if @comment.status != 2 | ||
flash[:notice] = 'Comment already published.' | ||
else | ||
@comment.publish |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or maybe you can instead check here if status != 0
, and if true
set it to 0. This would be parallel to the strategy you used above to mark a comment as spam whereby you check if the status
has the desired value and make changes accordingly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are comments on clarity, not correctness. I think the code itself has no problem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks, @seafr I really appreciate your comments and will correct this.
test/fixtures/comments.yml
Outdated
uid: 1 | ||
nid: 1 | ||
status: 2 | ||
comment: This thing is spam. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Great comment!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 😄
hi, @jywarren could you please clarify what comment with status = 1 represent as when I checked for comment's status in my rails console they all have status = 0 but fixtures have some comments with status = 1. |
flash[:notice] = "Comment has been marked as spam." | ||
else | ||
flash[:notice] = "Comment already marked as spam." | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to make one last suggestion. The idea is to first check if the status is as desired, in which case you move on, or else you set it as desired. I think it'll look as follows:
if status is as desired
flash the "already" msg
else
set status as desired
flash msg about what you did there
end
This is what you did in the publish_comment method, and it is clearer IMO.
^ as to your question -- i thought status = 1 means published. But if you check, maybe I had made a mistake on that. Let's have it match the status for nodes! And let's document it as we do here: plots2/app/models/drupal_user.rb Lines 4 to 7 in 0a29154
Thanks! |
For clarity, Comment status:0 : normal Now, as fixtures have comments with status = 1 and status = 0. |
haha, yeah i guess that's the case currently but can we try go get it to
match the status of node.rb? Where on these lines we see that status = 4
means a first-time poster, and 0 is spam and 1 is published.
https://github.com/publiclab/plots2/blob/master/app/models/node.rb#L143-L161
How about that?
…On Fri, Feb 16, 2018 at 5:57 PM, Gaurav Sachdeva ***@***.***> wrote:
For clarity,
Comment status:
0 : normal
2 : spam
1 : unknown
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2305 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AABfJzBcLWjTwuBi1imfNd27evHPgTQqks5tVgfDgaJpZM4SCXNt>
.
|
@jywarren that would imply changing all fixtures and if fixtures are changed then tests would also need to be changed accordingly. |
Actually, I just checked the comment_controller and there is no trace of status there, so I guess a try can be given.So, @jywarren I will raise a PR as soon as possible for this one. |
Sorry, indeed! I don't think comment status has been used at all previously! So I don't think it's a big change. Right now, I don't think any comments have a meaningful status set, so we could just add a migration to /all/ comments within this PR that sets them to status = 1 -- would that be possible? Sorry to scare you! I didn't mean to say we should do a major refactoring, I just didn't think it'd be that much since we haven't yet ever used the comment status field -- best to do it right before we start using it, right? Thank you! |
Agreed @jywarren it would be better to have the same system for both node and comment.So writing a migration is better |
Just removing |
@jywarren I have optimized all the tests and controller as per our new comment status |
Awesome! Is next step to build a button that's displayed to only mods? Great work!!! |
Yes, Jeff next step is button and routes addition. |
* Controller and model method for marking * Publish comment method added * test for marking comment * tests for publish comment * Small changes * controller changed * updated test as per new comment system
* changed reporters for progress bars (publiclab#2123) * Implement style guide (publiclab#2124) * Lock paperclip to required version * Exclude critical files * Disable magic comment * Safe navigate on params * Move Style/FrozenStringLiteralComment to .rubocop.yml * Rubocop autofix * Error posting an answer publiclab#1938 (publiclab#1945) * form http request changes to post * Tests for long answer using POST request * Commented test for GET request * Uncommented the test for large answers * Update "read more" link on tag pages to "learn more on the wiki page" (fixes publiclab#2112) (publiclab#2130) * Add people tab to /spam page for moderators(Fixes publiclab#2079) (publiclab#2109) * Fixes #publiclab#2079 Fixes publiclab#2079 This commit adds active user tab to publiclab.org/spam. * Add people tab to /spam page for moderators(Fixes publiclab#2079) * Stats on profile page (publiclab#2131) * Added links to the profile page * Stats display * Delete sunspot.yml.bkp * PR to disable Turbolinks just in case. (publiclab#2133) * Update show.html.erb (publiclab#2135) * Update _sidebar.html.erb for tab display (publiclab#2134) * Update _sidebar.html.erb * Update I18n_test.rb * minor tweaks (publiclab#2126) * questions in full text search + show 15 results (publiclab#2136) * Update typeahead_service.rb * Update typeahead_service.rb * Update restful_typeahead.js * Update revision.rb * Fixed Rubocop offences (publiclab#2127) * added link to "title suggestion" in comment editor (publiclab#2155) closes publiclab#2154 * Redundant method fixture (publiclab#2163) * [wip] publiclab#1951 Add "Join" button to people lists (publiclab#1954) * chg: added button to join the powertag group's tag * add: added check to see if current_user is available before showing the button * fix: added defined? to check if the curre_user variable is defined * fix: added defined? check to see if the current_user variable is defined * chg: modified redirection for the create action * chg: added button for when the user is not currently logged in * add: added current_user as a parameter * fix: added defined? to check if the curre_user variable is defined * chg: added button for when the user is not currently logged in * text tweaks * tweak * Update user_tags_controller_test.rb * Update wiki_controller_test.rb * Update node_shared.rb * Update application_helper.rb * Hopefully fix test failures * Update application_helper.rb * Dropdown for recently used tag look corrected (publiclab#2145) * Add map of people to publiclab.org/people publiclab#1940 (publiclab#2158) * Added maps * API made for people maps * Added API url for People map * Made helper function for People Map API * Updated self.people_map * Created _peopleLeaflet.html.erb * Drupal_user removed * Indentation done * search Recent People functionality * search Recent People helper * Add Relationship validations and fix tests (No issue opened) (publiclab#2078) * Refactor code for user's social links * Fix Relationship tests * Add validations to Relationship model * Contributors for wildcards (publiclab#2176) * Make tags visible to other users (fixes publiclab#2138) (publiclab#2147) * Make tags visible to other users (fixes publiclab#2138) publiclab#2138 The profile tags are currently only visible to the user themselves or to admins. The tags should be visible to everyone, while the "add tags" input should maintain its current visibility status (owner or administrator). * Add a parent param to the tag/tagging partial. This cleverly hides the input but only if it is rendered inside the profile view. * Improve the condition * If parent is unset, set parent to nil * Add ruby-2.3.4 alert to README.md (publiclab#2159) * Add ruby-2.3.0 alert to README.md * made it as a small note * change from 2.3.0 to 2.3.4 * small change * Changed bundle install statement * RSS feed on tagged content for author pages (publiclab#2161) * RSS feed * Added changes * Added "comment" and "barnstar" headings to profile nav (publiclab#2166) * Add "comment" and "barnstar" headings to profile nav fixes publiclab#2165 * minor changes * User must be logged out to access /login page (publiclab#2171) * User must be logged out to access /login page * Update user_sessions_controller.rb * Some modification to user dropdown menu on navbar (publiclab#2175) * Some modification to user dropdown menu on navbar * Added tests * Remove redundant require of searchform.js in application.js (publiclab#2183) * Image added (publiclab#2162) * Header html nesting fixes (publiclab#2199) * tweak to location:blurred code for profile tags (publiclab#2202) * List activities for subscriptions/digest (publiclab#2058) * Function changed * test changed * digest page showing all nodes for now * Query worked * unit test added * view updated * small change * small change * functional test added * Error messages in flash resolved publiclab#2141 (publiclab#2142) * added >> to 'add research note' button (publiclab#2195) * Add » to line 7 for button * Attempt to fix failing tests * Fix test failures * Redundant node_id removed (publiclab#2192) * update drupal_user.rb to update status of User record (publiclab#2157) * update drupal_user.rb to update user.status fixes publiclab#2156 * minor changes * minor changes * minor changes * changes * added tests * fixed spam button in notes partial (publiclab#2200) * Change heading of Weekly Digest page (publiclab#2205) * Function changed * test changed * digest page showing all nodes for now * Query worked * unit test added * view updated * small change * small change * functional test added * heading change * migration fix (publiclab#2208) * fix for migration (publiclab#2210) * fix for migration * Update drupal_user.rb * Update rss.rss.builder (publiclab#2221) * Update rss.rss.builder * Update rss.rss.builder * Update rss.rss.builder * fixed issue no. 2204 (publiclab#2211) * Order by subscription fix (publiclab#2139) * completed function * sort by subscription added * Correction * fix for current_user * Headings as links * Blank Map loaded with call to API (Part 2 of publiclab#1934) (publiclab#2044) * Markers loaded from API * self.notes_map updated * API url updated * https instead of http * MORE THAN 1 MAP ON A PAGE * Url generalised * Indentation done * Indentation 2 * Typos corrected (publiclab#2218) * Update README.md (publiclab#2233) * barnstar tag commenting (publiclab#2223) * Add tweet button to suscription share button (publiclab#2217) * Basic/Normal User not able to delete own wiki page (publiclab#2030) * if condition changed * condition added * functional test added * changes done * small changes * test correction * small changes in test * indentation improve * Even treatment of heading on /wiki (publiclab#2232) * Added non empty validation for search form Closes publiclab#2181 (publiclab#2182) * Fix subscription error (publiclab#2225) * Date of promoted comment to answer adjusted (publiclab#2229) * time change , mailer remove and test update * comments addition in test * comments on profile page fixed (publiclab#2197) * comments on profile page fixed fixes publiclab#2196 * minor changes * written tests * Added tests (publiclab#2207) * Redundant getting started removed (publiclab#2235) * RSS for Tag show with image correction (publiclab#2213) * RSS for Tag with image correction * Image links updated * Updated rss * Not to show marker on profile page map if tag blurred:true exists . publiclab#2230 (publiclab#2245) * Indentation + blurred:true tag Removes marker if the blurred:true tag exists . * remove marker feature * fixes to Dangerfile (puts vs. fail) (publiclab#2255) * Fixes to markdown templates (publiclab#2240) * Update first-timers-issue-template.md * Update first-timers-issue-template.md * Update questions_controller.rb (publiclab#2266) * Profile tags corrected (publiclab#2270) * Fixed the bug where profile is not shown on small screens (publiclab#2269) * Link text modified (publiclab#2249) * Added pagination for questions (publiclab#2244) * routes changed (publiclab#2236) * Change default time zone of RSS for event calendar (publiclab#2279) * Unnecessary hr removed (publiclab#2283) * Question error message duplicacy removed (publiclab#2273) * Update PULL_REQUEST_TEMPLATE.md * Include mysql configuration file (supersedes publiclab#1428) (publiclab#2320) * add glyphicons to question-page (publiclab#2319) * added link to questions on home page (publiclab#2222) * added link to questions on home page closes publiclab#2188 * minor changes * Update home.html.erb * removed _list partial and unwanted code [issue publiclab#2300] (publiclab#2311) * removed _list partial and unwanted code * re-added list partial * Update CONTRIBUTING.md * add a feature block to signup form (publiclab#2267) * Center People Map coordiates (publiclab#2268) * Tool Tips : regular edit pencil-Edit this wiki page , Delete -Delete this wiki page ,etherpad -practice in a real time doc , revisions-View previous versions (publiclab#2212) * Update _header.html.erb added 1 .Tool tip for regular edit pencil 2 .Tool tip for delete wiki page 3.Tool tip for revisions * Update _header.html.erb * Update _header.html.erb * Update _header.html.erb * adding "delete this wiki page" tooltip * fixed issue#2324 problem in display of gliphicons (publiclab#2325) * added up/down arrow icons on sortable headers on tags page (publiclab#2338) * add missing glyphicons (publiclab#2316) * Improve readibility of tags page by removing sidebar and set it to full-width (publiclab#2344) * added count of research notes and comments on profile page (publiclab#2263) * added count of research notes and comments on profile page fixes publiclab#2262 * minor changes * align read more button to the center (publiclab#2317) * Redundant gemfile.new deleted (publiclab#2349) * Chat should hover on hovering (publiclab#2342) * fixed positioning of social media buttons in wiki page (publiclab#2329) * Edit home action in home controller (publiclab#2327) * Remove duplicate ids in signin and signup page (publiclab#2238) * Update show.html.erb * Digest optimization to exclude tag additions (publiclab#2351) * proper digest * test optimization * query update * Draft creation for nodes (publiclab#2308) * Status method * controller changed * test added for access * update rubocop file * fixing test affected by new fixture * update en.yml * Updated the social media icons to use to increase compatibility with all browsers. (publiclab#2348) * Added functional test for subscribing to a tag. (publiclab#2286) * fix autolinking of comments (publiclab#2359) * Added scroll to top in footer (publiclab#2251) * banned users are visible to /people page for admin (publiclab#2247) * banned users are visible to /people page for admin fixes publiclab#2246 * test fixes * Update wiki_controller.rb (publiclab#2362) Resolves issue publiclab#2310 * added links for location privacy help page publiclab#2346 (publiclab#2360) * added links in appropriate places for new location privacy help page * fixed indentations * removed gemfile.lock put in git ignore * fixed gemlock file * fixed dangling <p> tag removed gemfile.lock from .gitignore [WIP] how do i remove gemfile.lock from the PR * removed gemfile.lock from local * changes to gemfile.lcok * added new lines to the end of changed files * fixed search error (publiclab#2288) * Update show.html.erb * Wiki pages with CRUD as title should not be published (publiclab#2323) * Wiki pages with CRUD as title should not be published * Tests refactored * research and dashboard corrected (publiclab#2302) * Add warning message re wildcard search (publiclab#2180) * combined changes by @ina-mastabba * re-add missing section * Added initial check for valid email on password reset (publiclab#2315) * Added initial check through jquery * Made the code more object oriented * Modified the code according to ES6 rules * Changes tag follow popover z-index (publiclab#2253) * Change /questions page layout (publiclab#2358) The /questions page was displaying too much information. Now the page has a clean layout. * Migration for changing comment status (publiclab#2373) * migration for comments * schema.db.example changed * version updated * Comment spam moderation Part 2 (publiclab#2305) * Controller and model method for marking * Publish comment method added * test for marking comment * tests for publish comment * Small changes * controller changed * updated test as per new comment system * Update DATA_MODEL.md * Update rss.rss.builder * Shows Autocomplete drop-down (publiclab#2384) * ga fixes (publiclab#2390) * add tab buttons to tag_pages (publiclab#2385) * Delete location_tags.js (publiclab#2391) * Delete location_tags.js * Update application.js * Update _like.html.erb * Update per instructions (publiclab#2403) publiclab#2402 * Adding feature to allow raw HTML pages (publiclab#2406) * Update show.html.erb * Update revision.rb * Update node.rb * Added omniauth gem (publiclab#2381) * Pagination and sorting of digest by recency (publiclab#2374) * paginate and sort * paginated for 100 items * Delete README.rdoc (publiclab#2386) * Replace spaces with hyphens (list of suggested tags and query submitted in the form) (publiclab#2380) * fix issue publiclab#2335 Fix issue publiclab#2335, replacing spaces with hyphens as people type. * fixing publiclab#2335 fixes publiclab#2335, replacing all spaces with hyphens * Update _comment.html.erb (publiclab#2387) * Added search validation for wiki sidebar search (publiclab#2276) * Update subscription_mailer.rb (publiclab#2407) * Update subscription_mailer.rb * Update subscription_mailer_test.rb * "Show more" sort bug (publiclab#2416) * Update _notes.html.erb render "Show # More" as footer - separately from rows * Update grid.js to detach table footer before sorting and (re)append it after sorting * Update _header.html.erb (publiclab#2424) added link to /kits, added link to /tags, changed the "meet people" text to "attend an event", changed order of menu items. * add sort functionality to tag_for_author questions (publiclab#2376) * Add larger image to profile page (publiclab#2415) * add sign removed (publiclab#2434) * mailer test for barnstar (publiclab#2433) * Corrected the mistake (publiclab#2409) * Home controller tests - test redirect and title (publiclab#2371) * Test homepage redirects to dashboard if user is logged in * Add title check to homepage test * added recent notes page (publiclab#2296) * added recent notes page * minor tweaks * add functional tests * Profile page likes are now rendered on the same page (publiclab#2293) * Comment and sent email when co-author added (publiclab#2259) * barnstar tag commenting * comment addotion on co-author * mailer for coauthor created * mailer updated * mailer finalized * testing coauthor * Co-author test done * tag addition test * users page sorting with headers completed with backend (publiclab#2355) * Update Dockerfile (publiclab#2472) * Node deletion problem while removing spam solved (publiclab#2450) * solved for answer deleting node * node optimized * tests added * new indices for impressionist (publiclab#2462) * Add comment icon (publiclab#2442) * Add methods to User model for verifying user roles (publiclab#2448) * Add methods to User model for user roles * Add a comment * Update _contributors.html.erb to fix note count (publiclab#2479) * Update _contributors.html.erb * Update tag_controller_test.rb * Update _contributors.html.erb * Minor refactor of Home controller 'activity' (publiclab#2438) * Minor refactor of Home controller 'activity' * Fix indentation * Development script for quick and reliable setup (publiclab#2395) * Development setup script * Fixed a typo * Fixes tag controller "suggested tags" action (publiclab#2477) issue publiclab#2458 * Update _contributors.html.erb (publiclab#2485) * Update show.html.erb (publiclab#2487) * Questions page text tweaks (publiclab#2490) * Updated application_controller.rb to fix moderation alert message (publiclab#2481) * Updated application_controller.rb to fix moderation alert message fixes issue publiclab#2470 * Updated notes_controller_test.rb * Update notes_controller_test.rb * Update notes_controller_test.rb * trigger reload of profile page on adding location tags (publiclab#2350) * New blog design(issue#2454) (publiclab#2484) * Replace blog link with stories from Read Stories button (Fixes issue publiclab#2454) * changed button content(issue#2454) * Update home.html.erb * Remove some redundant tests from Home controller (publiclab#2435) * initial Rails 4.2 port * changing over to deliver_now for mails * updated Gemfile * truncating fixture field * truncating fixture field * nother fixture fix! fix! * nother fixture fix! fix! * last try with test dates for maps * truncation in model * strict: false in database.yml * back to before_save filter * back to before_save filter * deliver_now * strict back off... * strict back off...
* Controller and model method for marking * Publish comment method added * test for marking comment * tests for publish comment * Small changes * controller changed * updated test as per new comment system
Fixes part 2 of #2304
Make sure these boxes are checked before your pull request is ready to be reviewed and merged. Thanks!
rake test:all
Please be sure you've reviewed our contribution guidelines at https://publiclab.org/wiki/contributing-to-public-lab-software
We have a loose schedule of reviewing and pulling in changes every Tuesday and Friday, and publishing changes on Fridays. Please alert developers on plots-dev@googlegroups.com when your request is ready or if you need assistance.
Thanks!