Skip to content

Commit

Permalink
Merge branch 'release/0.17.12.7'
Browse files Browse the repository at this point in the history
  • Loading branch information
kalashnikovisme committed May 14, 2017
2 parents d5439b8 + dedbf30 commit 7ae3e7f
Show file tree
Hide file tree
Showing 18 changed files with 86 additions and 18 deletions.
1 change: 1 addition & 0 deletions app/controllers/web/admin/members_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def create
end
@member_form.submit params[:member]
if @member_form.save
@member_form.model.set_gender!
redirect_to admin_members_path
else
choose_members
Expand Down
1 change: 1 addition & 0 deletions app/controllers/web/admin/questionaries_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def create
@questionary_form = QuestionaryForm.new_with_model
@questionary_form.submit params[:questionary]
if @questionary_form.save
@questionary_form.model.set_gender!
Organization::Permissions.questionary[:review].each do |member|
send_notification member, @questionary_form.model, :create
end
Expand Down
1 change: 1 addition & 0 deletions app/controllers/web/admin/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def create
@user_form = UserForm.new_with_model
@user_form.submit(params[:user])
if @user_form.save
@user_form.model.set_gender!
redirect_to admin_users_path
else
render action: :new
Expand Down
1 change: 1 addition & 0 deletions app/controllers/web/omniauth_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def callback
end
Authentication.create user_id: current_user.id, provider: provider, uid: uid
end
current_user.set_gender!
redirect_to session[:redirect_url] || account_path
end

Expand Down
1 change: 1 addition & 0 deletions app/controllers/web/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ def create

sign_in @user_form.model
initialize_subscriptions @user_form.model
@user_form.model.set_gender!
redirect_to account_path
else
render action: :new
Expand Down
7 changes: 5 additions & 2 deletions app/models/member.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ class Member < User
dependent: :destroy
has_many :views, as: :record, foreign_key: :record_id, class_name: 'View'


validates :first_name, human_name: true,
allow_blank: true
validates :last_name, human_name: true,
Expand Down Expand Up @@ -175,10 +174,14 @@ def admin_comments
@admin_comments ||= Comment.where(comment_type: :admin, record_id: self.id, record_type: self.type)
end


def self.collections
[ :confirmed, :unviewed, :declined, :unavailable ]
end

def main_position
Position.find main_position_id if main_position_id.present?
end

private

def remove_empty_positions
Expand Down
5 changes: 5 additions & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class User < ActiveRecord::Base

extend Enumerize
enumerize :role, in: [ :user, :admin, :author, :tech_admin ], default: :user
enumerize :gender, in: [ :male, :female ]

include AvatarManagment
include Concerns::SexManagment
Expand Down Expand Up @@ -177,4 +178,8 @@ def is_ya_lider_participant?
def self.collections
[ :confirmed, :unviewed, :admins, :authors, :declined, :email_corrupted ]
end

def set_gender!
update_attributes gender: GenderHelper.detect_gender(first_name)
end
end
10 changes: 5 additions & 5 deletions app/views/web/welcome/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@
= member.short_name
.post
%u
= member.main_position_title
- if member.position_duration
= member.main_position&.title
- if member.main_position&.duration
.duration
= member.position_duration
= member.main_position.duration
.credo
= member.motto
.ticket
Expand All @@ -107,14 +107,14 @@
%li
%img{ src: "/assets/#{send("#{nomination}_white_image")}",
class: "label #{nomination} has-tip",
title: t("tooltip.web.welcome.index.#{nomination}", name: member.first_name, gender: (member.is_female? ? 'а' : '')),
title: t("tooltip.web.welcome.index.#{nomination}", name: member.first_name, gender: (member.gender.female? ? 'а' : '')),
'data-tooltip' => true, 'aria-haspopup' => true }
- [ :first_degree, :second_degree ].each do |nomination|
- if member.has_merit? nomination
%li
%img{ src: "/assets/#{send("merit_#{nomination}_white_image")}",
class: "label #{nomination} has-tip",
title: t("tooltip.web.welcome.index.#{nomination}", name: member.first_name, gender: (member.is_female? ? 'а' : '')),
title: t("tooltip.web.welcome.index.#{nomination}", name: member.first_name, gender: (member.gender.female? ? 'а' : '')),
'data-tooltip' => true, 'aria-haspopup' => true }
- if @banner
.banner
Expand Down
7 changes: 7 additions & 0 deletions bin/migrations/fill_users_gender.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
count = User.count
User.find_each.with_index do |user, index|
user.gender = GenderHelper.detect_gender(user.first_name)
user.save! validate: false
print "#{index} of #{count}\r"
end
puts User.where(gender: nil).count
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class ReplaceMainPositionTitleWithMainPositionIdInMembers < ActiveRecord::Migration
def change
remove_column :users, :main_position_title
add_column :users, :main_position_id, :integer
end
end
5 changes: 5 additions & 0 deletions db/migrate/20170514222414_add_gender_to_users.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddGenderToUsers < ActiveRecord::Migration
def change
add_column :users, :gender, :text
end
end
15 changes: 8 additions & 7 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20170512222114) do
ActiveRecord::Schema.define(version: 20170514222414) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Expand Down Expand Up @@ -621,18 +621,19 @@
t.text "experience"
t.text "want_to_do"
t.string "type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "join_date"
t.text "token"
t.text "school"
t.text "member_state", default: "unviewed"
t.text "member_state", default: "unviewed"
t.datetime "request_date"
t.text "corporate_email"
t.text "source_to_know"
t.text "questionary_state", default: "not_existed"
t.text "email_state", default: "active"
t.text "main_position_title"
t.text "questionary_state", default: "not_existed"
t.text "email_state", default: "active"
t.integer "main_position_id"
t.text "gender"
end

create_table "views", force: :cascade do |t|
Expand Down
5 changes: 5 additions & 0 deletions lib/concerns/gender_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,9 @@ def is_female?
@sex_detector ||= SexDetector.detector
@sex_detector.detect(first_name.strip) == 'F'
end

def self.detect_gender(first_name)
@sex_detector ||= SexDetector.detector
@sex_detector.detect(first_name.strip) == 'F' ? :female : :male
end
end
4 changes: 2 additions & 2 deletions lib/tasks/cron/update_members_position.rake
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ namespace :members do
task update_member_main_position: :environment do
count = Member.confirmed.count
Member.confirmed.find_each.with_index do |member, index|
main_position_title = member.decorate.main_position_title
member.update_attributes! main_position_title: main_position_title
main_position_id = member.decorate.main_current_position&.id
member.update_attributes! main_position_id: main_position_id
print "#{index} of #{count}\r"
end
puts "Members updated!"
Expand Down
10 changes: 10 additions & 0 deletions test/checks/users_gender_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'test_helper'

class UsersGenderTest < ActionController::TestCase
test 'check users gender' do
if ENV['DB'] == 'prod'
users = User.where(gender: nil)
assert users.empty?, "Users with ids #{users.map(&:id)} has no gender :( It's not good :() )"
end
end
end
12 changes: 12 additions & 0 deletions test/controllers/web/users_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,16 @@ class Web::UsersControllerTest < ActionController::TestCase
assert_equal subscription.id, token.record_id
assert_equal 'Subscription', token.record_type
end

test 'should set gender' do
attributes = attributes_for :user, :female
post :create, user: attributes
user = User.last
assert user.gender.female?

attributes = attributes_for :user, :male
post :create, user: attributes
user = User.last
assert user.gender.male?
end
end
5 changes: 3 additions & 2 deletions test/controllers/web/welcome_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

class Web::WelcomeControllerTest < ActionController::TestCase
setup do
@time_quantum = 2.seconds
@time_quantum = 1.second
end

test 'should get index' do
Expand Down Expand Up @@ -63,12 +63,13 @@ class Web::WelcomeControllerTest < ActionController::TestCase
if ENV['DB'] == 'prod'
admin = create :admin
sign_in admin
100.times do
100.times do |i|
time = Time.now
get :index
duration = Time.now - time
assert duration < @time_quantum, duration
assert_response :success, @response.body
print "#{i} of 100\r"
end
end
end
Expand Down
8 changes: 8 additions & 0 deletions test/factories/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,13 @@
role { 'user' }
questionary_state { User.state_machines[:questionary_state].states.map(&:name).sample.to_s }
email_state { User.state_machines[:email_state].states.map(&:name).sample.to_s }

trait :male do
first_name 'Павел'
end

trait :female do
first_name 'Мария'
end
end
end

0 comments on commit 7ae3e7f

Please sign in to comment.