From c775463fd8329b41ad21a1801b34ec8977f53708 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 20 Jan 2016 02:48:54 +0100 Subject: [PATCH] Added postgresql support. --- app/controllers/users_controller.rb | 56 ++++++++++++++--------------- app/models/organization/search.rb | 12 +++---- app/models/ticket/search.rb | 22 ++++++------ 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b320f472a..ff570502d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -16,13 +16,13 @@ class UsersController < ApplicationController # only allow customer to fetch him self users = if role?(Z_ROLENAME_CUSTOMER) && !role?(Z_ROLENAME_ADMIN) && !role?('Agent') - User.where( id: current_user.id ) + User.where(id: current_user.id) else User.all end users_all = [] users.each {|user| - users_all.push User.lookup( id: user.id ).attributes_with_associations + users_all.push User.lookup(id: user.id).attributes_with_associations } render json: users_all, status: :ok end @@ -45,12 +45,12 @@ class UsersController < ApplicationController return if !permission_check if params[:full] - full = User.full( params[:id] ) + full = User.full(params[:id]) render json: full return end - user = User.find( params[:id] ) + user = User.find(params[:id]) render json: user end @@ -85,7 +85,7 @@ class UsersController < ApplicationController group_ids = [] role_ids = [] if count <= 2 - Role.where( name: [ Z_ROLENAME_ADMIN, 'Agent', 'Chat'] ).each { |role| + Role.where(name: [ Z_ROLENAME_ADMIN, 'Agent', 'Chat']).each { |role| role_ids.push role.id } Group.all().each { |group| @@ -94,7 +94,7 @@ class UsersController < ApplicationController # everybody else will go as customer per default else - role_ids.push Role.where( name: Z_ROLENAME_CUSTOMER ).first.id + role_ids.push Role.where(name: Z_ROLENAME_CUSTOMER).first.id end user.role_ids = role_ids user.group_ids = group_ids @@ -115,18 +115,17 @@ class UsersController < ApplicationController # check if user already exists if user.email - exists = User.where( email: user.email ).first + exists = User.where(email: user.email.downcase).first if exists render json: { error: 'User already exists!' }, status: :unprocessable_entity return end end - user.save! # if first user was added, set system init done if count <= 2 - Setting.set( 'system_init_done', true ) + Setting.set('system_init_done', true) # fetch org logo if user.email @@ -138,7 +137,7 @@ class UsersController < ApplicationController if params[:invite] && current_user # generate token - token = Token.create( action: 'PasswordReset', user_id: user.id ) + token = Token.create(action: 'PasswordReset', user_id: user.id) # send mail data = {} @@ -178,8 +177,7 @@ class UsersController < ApplicationController body: data[:body] ) end - - user_new = User.find( user.id ) + user_new = User.find(user.id) render json: user_new, status: :created rescue => e render json: { error: e.message }, status: :unprocessable_entity @@ -201,7 +199,7 @@ class UsersController < ApplicationController # access deny return if !permission_check - user = User.find( params[:id] ) + user = User.find(params[:id]) begin @@ -396,7 +394,7 @@ class UsersController < ApplicationController end # get user data - user = User.find( params[:id] ) + user = User.find(params[:id]) # get history of user history = user.history_get(true) @@ -433,7 +431,7 @@ curl http://localhost/api/v1/users/password_reset.json -v -u #{login}:#{password return end - token = User.password_reset_send( params[:username] ) + token = User.password_reset_send(params[:username]) if token # only if system is in develop mode, send token back to browser for browser tests @@ -483,9 +481,9 @@ curl http://localhost/api/v1/users/password_reset_verify.json -v -u #{login}:#{p end # set new password with token - user = User.password_reset_via_token( params[:token], params[:password] ) + user = User.password_reset_via_token(params[:token], params[:password]) else - user = User.password_reset_check( params[:token] ) + user = User.password_reset_check(params[:token]) end if user render json: { message: 'ok', user_login: user.login }, status: :ok @@ -541,7 +539,7 @@ curl http://localhost/api/v1/users/password_change.json -v -u #{login}:#{passwor return end - user.update_attributes( password: params[:password_new] ) + user.update_attributes(password: params[:password_new]) render json: { message: 'ok', user_login: user.login }, status: :ok end @@ -652,7 +650,7 @@ curl http://localhost/api/v1/users/image/8d6cca1c6bdc226cf2ba131e264ca2c7 -v -u response.headers['Cache-Control'] = 'cache, store, max-age=31536000, must-revalidate' response.headers['Pragma'] = 'cache' - file = Avatar.get_by_hash( params[:hash] ) + file = Avatar.get_by_hash(params[:hash]) if file send_data( file.content, @@ -685,7 +683,7 @@ Payload: Response: { - :message => 'ok' + message: 'ok' } Test: @@ -697,8 +695,8 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content return if !valid_session_with_user # get & validate image - file_full = StaticAssets.data_url_attributes( params[:avatar_full] ) - file_resize = StaticAssets.data_url_attributes( params[:avatar_resize] ) + file_full = StaticAssets.data_url_attributes(params[:avatar_full]) + file_resize = StaticAssets.data_url_attributes(params[:avatar_resize]) avatar = Avatar.add( object: 'User', @@ -716,7 +714,7 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content ) # update user link - current_user.update_attributes( image: avatar.store_hash ) + current_user.update_attributes(image: avatar.store_hash) render json: { avatar: avatar }, status: :ok end @@ -731,10 +729,10 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content end # set as default - avatar = Avatar.set_default( 'User', current_user.id, params[:id] ) + avatar = Avatar.set_default('User', current_user.id, params[:id]) # update user link - current_user.update_attributes( image: avatar.store_hash ) + current_user.update_attributes(image: avatar.store_hash) render json: {}, status: :ok end @@ -749,11 +747,11 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content end # remove avatar - Avatar.remove_one( 'User', current_user.id, params[:id] ) + Avatar.remove_one('User', current_user.id, params[:id]) # update user link - avatar = Avatar.get_default( 'User', current_user.id ) - current_user.update_attributes( image: avatar.store_hash ) + avatar = Avatar.get_default('User', current_user.id) + current_user.update_attributes(image: avatar.store_hash) render json: {}, status: :ok end @@ -762,7 +760,7 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content return if !valid_session_with_user # list of avatars - result = Avatar.list( 'User', current_user.id ) + result = Avatar.list('User', current_user.id) render json: { avatars: result }, status: :ok end diff --git a/app/models/organization/search.rb b/app/models/organization/search.rb index 62d6e4be4..0e13f0d01 100644 --- a/app/models/organization/search.rb +++ b/app/models/organization/search.rb @@ -35,9 +35,9 @@ returns if user has no permissions to search search organizations result = Organization.search( - :current_user => User.find(123), - :query => 'search something', - :limit => 15, + current_user: User.find(123), + query: 'search something', + limit: 15, ) returns @@ -58,10 +58,10 @@ returns # try search index backend if SearchIndexBackend.enabled? - items = SearchIndexBackend.search( query, limit, 'Organization' ) + items = SearchIndexBackend.search(query, limit, 'Organization') organizations = [] items.each { |item| - organizations.push Organization.lookup( id: item[:id] ) + organizations.push Organization.lookup(id: item[:id]) } return organizations end @@ -75,7 +75,7 @@ returns # if only a few organizations are found, search for names of users if organizations.length <= 3 - organizations_by_user = Organization.select('DISTINCT(organizations.id)').joins('LEFT OUTER JOIN users ON users.organization_id = organizations.id').where( + organizations_by_user = Organization.select('DISTINCT(organizations.id), organizations.name').joins('LEFT OUTER JOIN users ON users.organization_id = organizations.id').where( 'users.firstname LIKE ? or users.lastname LIKE ? or users.email LIKE ?', "%#{query}%", "%#{query}%", "%#{query}%" ).order('organizations.name').limit(limit) organizations_by_user.each {|organization_by_user| diff --git a/app/models/ticket/search.rb b/app/models/ticket/search.rb index 6357dde42..5be9cc213 100644 --- a/app/models/ticket/search.rb +++ b/app/models/ticket/search.rb @@ -104,8 +104,8 @@ returns if current_user.role?('Agent') groups = Group.joins(:users) - .where( 'groups_users.user_id = ?', current_user.id ) - .where( 'groups.active = ?', true ) + .where('groups_users.user_id = ?', current_user.id) + .where('groups.active = ?', true) group_condition = [] groups.each {|group| group_condition.push group.name @@ -131,7 +131,7 @@ returns query_extention['bool']['must'].push access_condition - items = SearchIndexBackend.search( query, limit, 'Ticket', query_extention ) + items = SearchIndexBackend.search(query, limit, 'Ticket', query_extention) if !full ids = [] items.each {|item| @@ -141,30 +141,30 @@ returns end tickets = [] items.each { |item| - tickets.push Ticket.lookup( id: item[:id] ) + tickets.push Ticket.lookup(id: item[:id]) } return tickets end # fallback do sql query - access_condition = Ticket.access_condition( current_user ) + access_condition = Ticket.access_condition(current_user) # do query # - stip out * we already search for *query* - if query query.delete! '*' - tickets_all = Ticket.select('DISTINCT(tickets.id)') + tickets_all = Ticket.select('DISTINCT(tickets.id), tickets.created_at') .where(access_condition) - .where( '( `tickets`.`title` LIKE ? OR `tickets`.`number` LIKE ? OR `ticket_articles`.`body` LIKE ? OR `ticket_articles`.`from` LIKE ? OR `ticket_articles`.`to` LIKE ? OR `ticket_articles`.`subject` LIKE ?)', "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%" ) + .where('(tickets.title LIKE ? OR tickets.number LIKE ? OR ticket_articles.body LIKE ? OR ticket_articles.from LIKE ? OR ticket_articles.to LIKE ? OR ticket_articles.subject LIKE ?)', "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%" ) .joins(:articles) - .order('`tickets`.`created_at` DESC') + .order('tickets.created_at DESC') .limit(limit) else query_condition, bind_condition = selector2sql(params[:condition]) - tickets_all = Ticket.select('DISTINCT(tickets.id)') + tickets_all = Ticket.select('DISTINCT(tickets.id), tickets.created_at') .where(access_condition) .where(query_condition, *bind_condition) - .order('`tickets`.`created_at` DESC') + .order('tickets.created_at DESC') .limit(limit) end @@ -179,7 +179,7 @@ returns tickets = [] tickets_all.each { |ticket| - tickets.push Ticket.lookup( id: ticket.id ) + tickets.push Ticket.lookup(id: ticket.id) } tickets end