X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/945df0f150ea803e1a654b03155ecdb444c6ed1c..c6bb4a5f4eadc46bac599cd6a5174b199c1b6026:/app/models/user.rb diff --git a/app/models/user.rb b/app/models/user.rb index 638928861..3d74b3933 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -290,6 +290,12 @@ class User < ApplicationRecord role? "administrator" end + ## + # returns true if the user has the importer role, false otherwise + def importer? + role? "importer" + end + ## # returns true if the user has the requested role def role?(role) @@ -376,11 +382,18 @@ class User < ApplicationRecord digest.hexdigest end + def active_reports + issues + .with_status(:open) + .joins(:reports) + .where("reports.updated_at >= COALESCE(issues.resolved_at, '1970-01-01')") + .count + end + def max_messages_per_hour account_age_in_seconds = Time.now.utc - created_at account_age_in_hours = account_age_in_seconds / 3600 recent_messages = messages.where("sent_on >= ?", Time.now.utc - 3600).count - active_reports = issues.with_status(:open).sum(:reports_count) max_messages = account_age_in_hours.ceil + recent_messages - (active_reports * 10) max_messages.clamp(0, Settings.max_messages_per_hour) end @@ -389,7 +402,6 @@ class User < ApplicationRecord account_age_in_seconds = Time.now.utc - created_at account_age_in_hours = account_age_in_seconds / 3600 recent_friends = Friendship.where(:befriendee => self).where("created_at >= ?", Time.now.utc - 3600).count - active_reports = issues.with_status(:open).sum(:reports_count) max_friends = account_age_in_hours.ceil + recent_friends - (active_reports * 10) max_friends.clamp(0, Settings.max_friends_per_hour) end @@ -399,7 +411,6 @@ class User < ApplicationRecord Settings.moderator_changeset_comments_per_hour else previous_comments = changeset_comments.limit(200).count - active_reports = issues.with_status(:open).sum(:reports_count) max_comments = previous_comments / 200.0 * Settings.max_changeset_comments_per_hour max_comments = max_comments.floor.clamp(Settings.initial_changeset_comments_per_hour, Settings.max_changeset_comments_per_hour) max_comments /= 2**active_reports