Skip to content

Commit

Permalink
Merge branch 'release/0.6.5_patch.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
kalashnikovisme committed Mar 8, 2016
2 parents d20d76d + d17fb04 commit a88a4de
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 44 deletions.
55 changes: 24 additions & 31 deletions app/controllers/web/members_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,33 @@ def new
end

def create
exists_member = Member.find_by_ticket params[:member][:ticket]
member = exists_member
if exists_member
if exists_member.state == 'unavailable'
exists_member.password_digest = current_user.password_digest
exists_member.save
current_user.authentications.each do |auth|
auth.user_id = exists_member.id
auth.save
end
current_user.registrations.each do |reg|
reg.user_id = exists_member.id
reg.save
end
current_user.comments.each do |comment|
comment.user_id = exists_member.id
comment.save
end
old_user = current_user
sign_in exists_member
old_user.remove
# FIXME fix with reform
members = Member.where ticket: params[:member][:ticket]
if members.any?
@member_form = MemberForm.find_with_model_by ticket: params[:member][:ticket]
@member_form.check_repeated_registration
@member_form.check_complies params[:member]
@member_form.submit params[:member]
if @member_form.errors.empty? && @member_form.save
@member_form.state_renew
@member_form.update member_state: :unviewed
[:authentications, :registrations, :comments].each do |collection|
current_user.send(collection).update_all user_id: @member_form.id
end
@member_form.update password_digest: current_user.password_digest
old_user = current_user
sign_in @member_form.model
old_user.remove
redirect_to account_path
else
render :new
end
else
member = current_user.becomes! Member
end
@member_form = MemberForm.new member
@member_form.submit params[:member]
User.find(member.id).update type: 'Member'
if @member_form.save
redirect_to member_path @member_form.ticket
else
# FIXME fix this shiiiiit!!!!
ActiveRecord::Base.connection.execute "UPDATE users SET type = NULL WHERE id = #{member.id}"
render action: :new
@member_form = MemberForm.new member
@member_form.errors.add :ticket,
I18n.t('validations.errors.there_is_not_such_ticket_or_your_account_still_out_of_database')
render :new
end
end

Expand Down
11 changes: 8 additions & 3 deletions app/controllers/web/sessions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,14 @@ def new
def create
@user = User.find_by_email params[:user][:email]
if @user
if @user.authenticate params[:user][:password]
sign_in @user
redirect_to account_path
if @user.authenticate(params[:user][:password])
if @user.has_access?
sign_in @user
redirect_to account_path
else
@user.errors.add :email, I18n.t('notifications.web.sessions.create.your_account_is_not_active')
render :new
end
else
@user = @user.becomes! User
render :new
Expand Down
13 changes: 13 additions & 0 deletions app/forms/member_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,17 @@ class MemberForm < ApplicationForm
association :positions do
attributes :title, :begin_date, :member_id, :state, :end_date, :for_now
end

def check_complies(params)
unless first_name == params[:first_name] && last_name == params[:last_name] &&
patronymic == params[:patronymic] && ticket == params[:ticket].to_i
errors.add :ticket, I18n.t('validations.errors.wrong_ticket_or_member_not_exists')
end
end

def check_repeated_registration
unless unavailable?
errors.add :ticket, I18n.t('validations.errors.you_already_have_an_member_account')
end
end
end
3 changes: 3 additions & 0 deletions app/models/member.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ class Member < User
event :restore do
transition removed: :unviewed
end
event :state_renew do
transition all => :unviewed
end
end

state_machine :member_state, initial: :unviewed, namespace: :member do
Expand Down
6 changes: 5 additions & 1 deletion app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,12 @@ def is_active?
state == 'confirmed'
end

def has_access?
state != 'removed' && state != 'declined'
end

def can_reset_password?
state != 'removed'
has_access?
end

def generate_token
Expand Down
2 changes: 0 additions & 2 deletions app/views/web/members/new.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
= f.input :municipality
= f.input :locality, as: :grouped_select, collection: Localities.list_hash, group_method: :last
= f.input :school, as: :grouped_select, collection: Schools.list_hash, group_method: :last, input_html: { class: :select2 }
= f.input :member_state, as: :hidden, input_html: { value: :unviewed }
= f.input :state, as: :hidden, input_html: { value: :unviewed }
= f.label :avatar
.preview
= image_tag @member_form.model.avatar if @member_form.model.avatar.present?
Expand Down
2 changes: 1 addition & 1 deletion app/views/web/sessions/new.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
%span.label.success
%i.fa.fa-exclamation-circle
= t ".#{flash[:remind_password_notification]}"
- if @user.email.present?
- if @user.email.present? && @user.has_access?
%span.label.alert
%i.fa.fa-exclamation-circle
= t('.wrong_email_or_password')
Expand Down
6 changes: 6 additions & 0 deletions config/locales/ru/ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ ru:
not_changed: Доступ к этому аттрибуту не изменён
email:
empty: Для подтверждения аккаунта введите ваш email
sessions:
create:
your_account_is_not_active: Ваш аккаунт заблокирован
state_machines:
member:
state:
Expand Down Expand Up @@ -240,3 +243,6 @@ ru:
validations:
errors:
email_presents_in_application: присутствует в приложении
there_is_not_such_ticket_or_your_account_still_out_of_database: 'Такого членского билета не существует в базе данных членов МИЦ, либо он ещё не был туда занесён. Если номер вашего членского билета верный, в течение суток он станет активным на сайте МИЦ'
you_already_have_an_member_account: У вас уже есть аккаунт члена МИЦ
wrong_ticket_or_member_not_exists: Неверный номер членского билета
4 changes: 3 additions & 1 deletion lib/notifications/types/email.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ module Types

class Email
def self.to_send(params)
UserMailer.delay.send(params[:theme], params[:object], params[:user])
unless Rails.env.development?
UserMailer.delay.send(params[:theme], params[:object], params[:user])
end
end
end
end
Expand Down
8 changes: 5 additions & 3 deletions test/controllers/web/members_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,17 @@ class Web::MembersControllerTest < ActionController::TestCase
end

test 'should create member' do
@member.update state: :unavailable
attributes = attributes_for :member
attributes[:municipality] = Member.municipality.values.first
attributes[:locality] = Member.locality.values.first
[:first_name, :last_name, :patronymic, :ticket].each do |attribute|
attributes[attribute] = @member.send attribute
end
create :event_registration
create :comment
create :authentication
post :create, member: attributes
assert_response :redirect, @response.body
assert_redirected_to member_path attributes[:ticket]
assert_redirected_to account_path
assert_equal attributes[:patronymic], Member.last.patronymic
end

Expand Down
4 changes: 2 additions & 2 deletions test/factories/members.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
avatar { generate :image }
password { generate :password }
password_confirmation { password }
municipality 'г. Ульяновск'
locality 'г. Ульяновск'
municipality { Member.municipality.values.first }
locality { Member.locality.values.first }
state { Member.state_machines[:state].states.map(&:name).first.to_s }
member_state { Member.state_machines[:member_state].states.map(&:name).first.to_s }
role 'user'
Expand Down

0 comments on commit a88a4de

Please sign in to comment.