Added per-user counter of approved/rejected screenshots

This commit is contained in:
Christoph Haas 2021-03-21 23:06:51 +01:00
parent c97a711e6b
commit 9635b3968c
5 changed files with 55 additions and 27 deletions

View file

@ -220,6 +220,14 @@ class PackagesController < ApplicationController
auditlog "Screenshot #{@screenshot.id} deleted",
package: @screenshot.package
@screenshot.destroy
# Increase the rejection counter for the user (social scoring)
# if the screenshot is new and pending approval
if !@screenshot.approved
@screenshot.user.rejected_screenshots += 1
@screenshot.user.save!
end
flash['notice'] = "Screenshot deleted."
redirect_back(fallback_location: package_path(name: @screenshot.package.name))
else
@ -234,6 +242,11 @@ class PackagesController < ApplicationController
@screenshot.approve!
auditlog "Screenshot approved",
package: @screenshot.package, screenshot: @screenshot
# Increase the approval counter for the user (social scoring)
@screenshot.user.approved_screenshots += 1
@screenshot.user.save!
flash['notice'] = "Screenshot approved."
redirect_back(fallback_location: package_path(name: @screenshot.package.name))
else

View file

@ -79,10 +79,6 @@ class User < ApplicationRecord
end
end
def approved_screenshots
self.screenshots.where(approved: true)
end
# Seamlessly create a user account for the current visitor.
# It helps track uploads because uploaded screenshots get assigned
# to this user record.

View file

@ -54,28 +54,39 @@ h1 Your data
hr
.card-section
h3 Your permissions
ul
- if can? :approve, Screenshot.new
li
=> fa_icon 'thumbs-up'
'approve uploaded screenshots
- if can? :destroy, Screenshot.new
li
=> fa_icon 'trash'
'delete screenshots
- if can? :hide, Screenshot.new
li
=> fa_icon 'eye-slash'
'hide screenshots from the public
- if can? :unhide, Screenshot.new
li
=> fa_icon 'eye'
'restore (unhide) screenshots for the public
- if can? :view, Log
li
=> fa_icon 'book'
'view logs
h3 Statistics
p
= pluralize(current_user.approved_screenshots, 'approved screenshot')
p
= pluralize(current_user.rejected_screenshots, 'rejected screenshot')
- unless current_user.pseudo
.cell
hr
.card-section
h3 Your permissions
ul
- if can? :approve, Screenshot.new
li
=> fa_icon 'thumbs-up'
'approve uploaded screenshots
- if can? :destroy, Screenshot.new
li
=> fa_icon 'trash'
'delete screenshots
- if can? :hide, Screenshot.new
li
=> fa_icon 'eye-slash'
'hide screenshots from the public
- if can? :unhide, Screenshot.new
li
=> fa_icon 'eye'
'restore (unhide) screenshots for the public
- if can? :view, Log
li
=> fa_icon 'book'
'view logs
.cell.auto

View file

@ -0,0 +1,6 @@
class AddUploadCounterToUsers < ActiveRecord::Migration[6.1]
def change
add_column :users, :approved_screenshots, :integer, default: 0
add_column :users, :rejected_screenshots, :integer, default: 0
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_03_09_233239) do
ActiveRecord::Schema.define(version: 2021_03_21_215433) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -120,6 +120,8 @@ ActiveRecord::Schema.define(version: 2021_03_09_233239) do
t.boolean "admin_role", default: false
t.boolean "moderator_role", default: false
t.boolean "pseudo", default: false
t.integer "approved_screenshots", default: 0
t.integer "rejected_screenshots", default: 0
t.index ["email", "provider"], name: "index_users_on_email_and_provider", unique: true
end