Changeset 468
- Timestamp:
- 01/23/07 14:14:27 (2 years ago)
- Files:
-
- branches/workorder_report_rename/app/controllers/task_controller.rb (moved) (moved from branches/workorder_report_rename/app/controllers/work_order_controller.rb) (18 diffs)
- branches/workorder_report_rename/app/controllers/task_type_controller.rb (moved) (moved from branches/workorder_report_rename/app/controllers/work_order_type_controller.rb) (7 diffs)
- branches/workorder_report_rename/app/helpers/task_helper.rb (moved) (moved from branches/workorder_report_rename/app/helpers/work_order_helper.rb) (1 diff)
- branches/workorder_report_rename/app/helpers/task_type_helper.rb (moved) (moved from branches/workorder_report_rename/app/helpers/work_order_type_helper.rb) (1 diff)
- branches/workorder_report_rename/app/models/task.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order.rb) (12 diffs)
- branches/workorder_report_rename/app/models/task_event.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order_event.rb) (1 diff)
- branches/workorder_report_rename/app/models/task_permission_profile.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order_permission_profile.rb) (2 diffs)
- branches/workorder_report_rename/app/models/task_permissions.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order_permission.rb) (1 diff)
- branches/workorder_report_rename/app/models/task_tag.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order_tag.rb) (2 diffs)
- branches/workorder_report_rename/app/models/task_template.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order_template.rb) (3 diffs)
- branches/workorder_report_rename/app/models/task_type.rb (moved) (moved from branches/workorder_report_rename/app/models/work_order_type.rb) (2 diffs)
- branches/workorder_report_rename/app/views/task (moved) (moved from branches/workorder_report_rename/app/views/work_order)
- branches/workorder_report_rename/app/views/task/_display_work_order_event.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order/_display_work_order_event.rhtml) (1 diff)
- branches/workorder_report_rename/app/views/task/_form.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order/_form.rhtml) (6 diffs)
- branches/workorder_report_rename/app/views/task/create.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order/create.rhtml) (4 diffs)
- branches/workorder_report_rename/app/views/task/edit.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order/edit.rhtml) (1 diff)
- branches/workorder_report_rename/app/views/task/view.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order/view.rhtml) (2 diffs)
- branches/workorder_report_rename/app/views/task_type (moved) (moved from branches/workorder_report_rename/app/views/work_order_type)
- branches/workorder_report_rename/app/views/task_type/upload_template.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order_type/upload_template.rhtml) (1 diff)
- branches/workorder_report_rename/app/views/task_type/view_template.rhtml (copied) (copied from branches/workorder_report_rename/app/views/work_order_type/view_template.rhtml) (1 diff)
- branches/workorder_report_rename/app/views/work_order/list.rhtml (deleted)
- branches/workorder_report_rename/app/views/work_order/online_help__general.rhtml (deleted)
- branches/workorder_report_rename/app/views/work_order_type/online_help__general.rhtml (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/workorder_report_rename/app/controllers/task_controller.rb
r464 r468 5 5 require "odt_to_xhtml" 6 6 7 # Class: WorkOrderController7 # Class: TaskController 8 8 # =============================== 9 9 # … … 12 12 # <ApplicationController> 13 13 # 14 class WorkOrderController < ApplicationController14 class TaskController < ApplicationController 15 15 prepend_before_filter :login_required 16 16 … … 18 18 19 19 def edit_protector 20 remove_ work_order_lock21 user_left_page_group(: work_order_edit)20 remove_task_lock 21 user_left_page_group(:task_edit) 22 22 redirect_to(params[:destination]) 23 23 end … … 32 32 @fields = [ 33 33 [_('ID'), :self], 34 [_('Type'), : work_order_type_name],34 [_('Type'), :task_type_name], 35 35 [_('State'), {:name => :state}.merge(@state_to_text)], 36 36 [_('Description'), :short_description], … … 52 52 conditions = @selected_assets_condition 53 53 54 @items = items_for_page( WorkOrder, :finder_method => :find_authorized_to_read, :conditions => conditions, :readonly => true)54 @items = items_for_page(Task, :finder_method => :find_authorized_to_read, :conditions => conditions, :readonly => true) 55 55 render(:partial => 'shared/list_items', :layout => 'mainlevel') 56 56 end … … 59 59 # Find objects 60 60 begin 61 @ work_order = WorkOrder.find(params[:id], :include => [:data_permissions, :asset, :creator, :responsible_user])61 @task = Task.find(params[:id], :include => [:data_permissions, :asset, :creator, :responsible_user]) 62 62 rescue ActiveRecord::RecordNotFound 63 63 if params[:cmms_link] 64 64 redirect_with_error_message(msg_invalid_link_in_markup("{#{params[:id]}}"), :back) 65 65 else 66 redirect_with_error_message(msg_non_existing_data( WorkOrder, params[:id]), :action => 'list')67 end 68 return 69 end 70 71 unless @ work_order.authorized_to_read?72 redirect_with_error_message(msg_unauthorized_operation(_('read'), "{#{@ work_order.id}}"), :action => 'list')73 return 74 end 75 @users = @ work_order.asset.users(@work_order.responsible_user_id)76 77 @wo_title = _('Work order %s (%s)', @ work_order.to_s, @work_order.work_order_type.name)66 redirect_with_error_message(msg_non_existing_data(Task, params[:id]), :action => 'list') 67 end 68 return 69 end 70 71 unless @task.authorized_to_read? 72 redirect_with_error_message(msg_unauthorized_operation(_('read'), "{#{@task.id}}"), :action => 'list') 73 return 74 end 75 @users = @task.asset.users(@task.responsible_user_id) 76 77 @wo_title = _('Work order %s (%s)', @task.to_s, @task.task_type.name) 78 78 define_priority_options 79 79 80 80 if request.post? 81 old_worker_ids = @ work_order.workers.collect {|i| i.id}82 new_worker_ids = (params[: work_order_workers] || []).collect { |i| i.to_i }83 @ work_order.worker_ids = new_worker_ids81 old_worker_ids = @task.workers.collect {|i| i.id} 82 new_worker_ids = (params[:task_workers] || []).collect { |i| i.to_i } 83 @task.worker_ids = new_worker_ids 84 84 added_worker_ids = new_worker_ids - old_worker_ids 85 85 removed_worker_ids = old_worker_ids - new_worker_ids … … 94 94 Message.create(:receiver_user_id => worker_id, 95 95 :subject => 'You have been removed from the list of workers in this work order', 96 :body => "{#{@ work_order.id}}")96 :body => "{#{@task.id}}") 97 97 end 98 98 … … 101 101 Message.create(:receiver_user_id => worker_id, 102 102 :subject => 'You have been added to the list of workers in this work order', 103 :body => "{#{@ work_order.id}}")104 end 105 106 @ work_order.add_comment(params[:work_order_comment]) if params[:work_order_comment]107 108 case params[: work_order_action]103 :body => "{#{@task.id}}") 104 end 105 106 @task.add_comment(params[:task_comment]) if params[:task_comment] 107 108 case params[:task_action] 109 109 when 'leave' 110 110 # Do nothing 111 111 when 'accept' 112 @ work_order.accept112 @task.accept 113 113 flash[:notice] = _('Work order accepted') 114 114 when 'close' 115 @ work_order.close115 @task.close 116 116 flash[:notice] = _('Work order closed') 117 117 when 'assign' 118 @ work_order.assign_to(User.find(params[:responsible_user_id]))118 @task.assign_to(User.find(params[:responsible_user_id])) 119 119 flash[:notice] = _('Work order assigned') 120 120 when 'reopen': 121 @ work_order.open121 @task.open 122 122 flash[:notice] = _('Work order reopened') 123 123 else … … 126 126 end 127 127 128 @ work_order.working_time = params[:work_order][:working_time] if params[:work_order] and params[:work_order][:working_time]129 @ work_order.valid?130 131 return unless @ work_order.valid?132 133 if @ work_order.save(true)128 @task.working_time = params[:task][:working_time] if params[:task] and params[:task][:working_time] 129 @task.valid? 130 131 return unless @task.valid? 132 133 if @task.save(true) 134 134 flash[:notice] = msg_changes_saved 135 135 else 136 136 flash[:notice] = nil 137 137 flash[:error] = msg_saving_failed 138 @ work_order.reload139 end 140 end 141 @events = @ work_order.work_order_events138 @task.reload 139 end 140 end 141 @events = @task.task_events 142 142 end 143 143 144 144 def edit 145 145 # Find objects 146 @ work_order = WorkOrder.find(params[:id], :include => [:data_permissions, :asset, :creator, :responsible_user])147 unless @ work_order.authorized_to_edit?148 redirect_with_error_message(msg_unauthorized_operation(_('edit'), @ work_order.to_s),149 :action => 'view', :id => @ work_order.id)146 @task = Task.find(params[:id], :include => [:data_permissions, :asset, :creator, :responsible_user]) 147 unless @task.authorized_to_edit? 148 redirect_with_error_message(msg_unauthorized_operation(_('edit'), @task.to_s), 149 :action => 'view', :id => @task.id) 150 150 return 151 151 end 152 152 define_priority_options 153 @events = @ work_order.work_order_events153 @events = @task.task_events 154 154 @users = User.find :all # Data permissions will change 155 155 156 @title = _('Editing work order #%i (%s)', @ work_order.id, @work_order.work_order_type.name)156 @title = _('Editing work order #%i (%s)', @task.id, @task.task_type.name) 157 157 158 158 if request.post? 159 params[: work_order][:long_description] = translate_urls_to_markup_links(params[:work_order][:long_description]) if params[:work_order] and params[:work_order][:long_description]160 @ work_order.attributes = params[:work_order]161 @ work_order.starting_time = nil if not params[:starting_time_enabled]162 @ work_order.deadline = nil if not params[:deadline_enabled]163 164 if @ work_order.save159 params[:task][:long_description] = translate_urls_to_markup_links(params[:task][:long_description]) if params[:task] and params[:task][:long_description] 160 @task.attributes = params[:task] 161 @task.starting_time = nil if not params[:starting_time_enabled] 162 @task.deadline = nil if not params[:deadline_enabled] 163 164 if @task.save 165 165 flash[:notice] = msg_changes_saved 166 redirect_to(:action => 'view', :id => @ work_order.id)167 user_left_page_group(: work_order_edit)166 redirect_to(:action => 'view', :id => @task.id) 167 user_left_page_group(:task_edit) 168 168 return 169 169 end 170 flash[:error] = msg_saving_failed if @ work_order.errors.empty?170 flash[:error] = msg_saving_failed if @task.errors.empty? 171 171 else 172 unless @ work_order.lock_for_current_user(LOCK_DURATION)173 flash[:error] = msg_resource_locked(@ work_order)174 return redirect_to(:action => 'view', :id => @ work_order.id)175 end 176 177 unless @ work_order.save178 flash[:error] = msg_locking_failed_for(@ work_order)179 return redirect_to(:action => 'view', :id => @ work_order.id)180 end 181 182 user_entered_page_group(: work_order_edit)172 unless @task.lock_for_current_user(LOCK_DURATION) 173 flash[:error] = msg_resource_locked(@task) 174 return redirect_to(:action => 'view', :id => @task.id) 175 end 176 177 unless @task.save 178 flash[:error] = msg_locking_failed_for(@task) 179 return redirect_to(:action => 'view', :id => @task.id) 180 end 181 182 user_entered_page_group(:task_edit) 183 183 end 184 184 end 185 185 186 186 def create 187 unless @selected_asset.authorized_to_create_ work_order?187 unless @selected_asset.authorized_to_create_task? 188 188 redirect_with_error_message(msg_unauthorized_operation(_('create work order'), @selected_asset.code_and_name), :action => 'list') 189 189 return … … 195 195 @hide_subaction_links = true 196 196 @cause_form_id = params[:cause_form_id] if params[:cause_form_id] 197 @ work_order_types = params[:tag_id].nil? ? WorkOrderType.find(:all, :order => 'name') : WorkOrderTag.find(params[:tag_id]).work_order_types198 199 if @ work_order_types.empty?197 @task_types = params[:tag_id].nil? ? TaskType.find(:all, :order => 'name') : TaskTag.find(params[:tag_id]).task_types 198 199 if @task_types.empty? 200 200 redirect_with_message(_('No work order types defined.'), :action=>'list') 201 201 return … … 203 203 204 204 if request.post? 205 unless params[: work_order]205 unless params[:task] 206 206 redirect_to :action => 'list' 207 207 return 208 208 end 209 209 210 params[: work_order][:long_description] = translate_urls_to_markup_links(params[:work_order][:long_description]) if params[:work_order][:long_description]211 @ work_order = WorkOrder.new params[:work_order]212 @ work_order.asset = @selected_asset213 @ work_order.cause_form_id = @cause_form_id if @cause_form_id214 @ work_order.starting_time = nil unless params[:starting_time_enabled]215 @ work_order.deadline = nil unless params[:deadline_enabled]216 217 @ work_order.ready = true218 if @ work_order.save(true)210 params[:task][:long_description] = translate_urls_to_markup_links(params[:task][:long_description]) if params[:task][:long_description] 211 @task = Task.new params[:task] 212 @task.asset = @selected_asset 213 @task.cause_form_id = @cause_form_id if @cause_form_id 214 @task.starting_time = nil unless params[:starting_time_enabled] 215 @task.deadline = nil unless params[:deadline_enabled] 216 217 @task.ready = true 218 if @task.save(true) 219 219 flash[:notice] = _('New work order created') 220 220 info('New work order created') 221 redirect_to :action => 'view', :id => @ work_order.id221 redirect_to :action => 'view', :id => @task.id 222 222 else 223 223 render :action => 'create' 224 224 end 225 225 else 226 @ work_order = WorkOrder.new226 @task = Task.new 227 227 end 228 228 end … … 230 230 def move 231 231 begin 232 @ work_order = WorkOrder.find(params[:id], :include => [:data_permissions, :asset, :creator, :responsible_user])232 @task = Task.find(params[:id], :include => [:data_permissions, :asset, :creator, :responsible_user]) 233 233 rescue ActiveRecord::RecordNotFound 234 redirect_with_error_message(msg_non_existing_data( WorkOrder, params[:id]), :action => 'list')234 redirect_with_error_message(msg_non_existing_data(Task, params[:id]), :action => 'list') 235 235 end 236 236 237 unless @ work_order.authorized_to_edit?238 redirect_with_error_message(msg_unauthorized_operation(_('edit'), "{#{@ work_order.id}}"), :action => 'list')237 unless @task.authorized_to_edit? 238 redirect_with_error_message(msg_unauthorized_operation(_('edit'), "{#{@task.id}}"), :action => 'list') 239 239 return 240 240 end 241 241 242 242 @replace_actions = [] 243 @title = _('Move the work order {%i} to a another asset', @ work_order.id)244 asset_options = (Asset.find_authorized_to(:create_ work_order, [:all]) - [@work_order.asset]).collect { |a|243 @title = _('Move the work order {%i} to a another asset', @task.id) 244 asset_options = (Asset.find_authorized_to(:create_task, [:all]) - [@task.asset]).collect { |a| 245 245 [a.full_code, a.id] 246 246 } 247 @fields = [ [_('Asset'), ' work_order', 'asset_id', asset_options ] ]248 @hidden_fields = [ ['id', @ work_order.id] ]247 @fields = [ [_('Asset'), 'task', 'asset_id', asset_options ] ] 248 @hidden_fields = [ ['id', @task.id] ] 249 249 250 250 if request.post? 251 new_asset = Asset.find_authorized_to(:create_ work_order, [params[:work_order][:asset_id]])252 if @ work_order.move(new_asset.id)253 flash[:notice] = _('The work order {%i} moved to the asset %s', @ work_order.id, new_asset.full_code)251 new_asset = Asset.find_authorized_to(:create_task, [params[:task][:asset_id]]) 252 if @task.move(new_asset.id) 253 flash[:notice] = _('The work order {%i} moved to the asset %s', @task.id, new_asset.full_code) 254 254 redirect_to(:action => 'list') 255 255 return 256 256 end 257 257 258 flash[:error] = _('Unable to move the work order {%i} to the asset %s', @ work_order.id, new_asset.full_code)258 flash[:error] = _('Unable to move the work order {%i} to the asset %s', @task.id, new_asset.full_code) 259 259 end 260 260 … … 263 263 264 264 def remove 265 common_remove( WorkOrder, 'short_description', :action => 'list' ) { |instance|265 common_remove(Task, 'short_description', :action => 'list' ) { |instance| 266 266 unless instance.authorized_to_remove? 267 267 msg_unauthorized_operation(_('remove'), "{#{instance.id}}") … … 271 271 272 272 def download 273 work_order = WorkOrder.find params[:id]274 unless work_order.authorized_to_read?273 task = Task.find params[:id] 274 unless task.authorized_to_read? 275 275 redirect_with_error_message(msg_unauthorized_operation(_('download'), "{#{instance.id}}"), :action => 'list') 276 276 return 277 277 end 278 work_order_template = WorkOrderTemplate.find(:first)278 task_template = TaskTemplate.find(:first) 279 279 280 280 # Check that we have a template 281 unless work_order_template281 unless task_template 282 282 flash[:error] = _('Template for work orders not found') 283 283 redirect_to :back … … 286 286 287 287 # Get associated forms 288 form_ids = work_order.associated_form_ids288 form_ids = task.associated_form_ids 289 289 if form_ids 290 290 forms = Form.find(form_ids, :readonly => true) … … 292 292 293 293 # Generate document for the work order 294 document = work_order_template.create_filled_version(work_order)294 document = task_template.create_filled_version(task) 295 295 296 296 # Send the document if there are no associated forms 297 297 if form_ids.empty? 298 send_data(document.data, :filename => " work_order_#{work_order.id}.odt", :disposition => 'inline')298 send_data(document.data, :filename => "task_#{task.id}.odt", :disposition => 'inline') 299 299 return 300 300 end … … 312 312 zout = Zip::ZipOutputStream.new(output) 313 313 314 dir_name = " work_order_#{work_order.id}/"314 dir_name = "task_#{task.id}/" 315 315 316 316 # Write work order 317 zout.put_next_entry(dir_name + " work_order_#{work_order.id}.odt")317 zout.put_next_entry(dir_name + "task_#{task.id}.odt") 318 318 zout.write(document.data) 319 319 … … 328 328 329 329 # Send the whole thing 330 send_data(output.string, :filename => " work_order_#{work_order.id}.zip", :disposition => 'inline')330 send_data(output.string, :filename => "task_#{task.id}.zip", :disposition => 'inline') 331 331 end 332 332 333 333 protected 334 334 335 def remove_ work_order_lock335 def remove_task_lock 336 336 return unless session[:page_group_resource_id] 337 337 338 work_order = WorkOrder.find(session[:page_group_resource_id])339 if work_order.remove_lock and work_order.save340 info 'Removed lock for work_order%d' % params[:id]338 task = Task.find(session[:page_group_resource_id]) 339 if task.remove_lock and task.save 340 info 'Removed lock for task %d' % params[:id] 341 341 else 342 error 'Failed to remove lock for work_order%d' % params[:id]342 error 'Failed to remove lock for task %d' % params[:id] 343 343 end 344 344 end branches/workorder_report_rename/app/controllers/task_type_controller.rb
r464 r468 2 2 # See license agreement for additional rights 3 3 4 # Class: WorkOrderTypeController4 # Class: TaskTypeController 5 5 # =================================== 6 6 # … … 9 9 # <ApplicationController> 10 10 # 11 class WorkOrderTypeController < ApplicationController11 class TaskTypeController < ApplicationController 12 12 prepend_before_filter :login_required 13 13 layout 'mainlevel' … … 15 15 # Fields for create and edit actions 16 16 17 # Displays the work_ordertype listing17 # Displays the task type listing 18 18 def list 19 19 @title = _('Work order types') 20 20 @fields = [ [_('Name'), :name], 21 [_('Tag'), : work_order_tag],21 [_('Tag'), :task_tag], 22 22 [_('Description'), :description], 23 [_('Work order count'), : work_order_count]23 [_('Work order count'), :task_count] 24 24 ] 25 @items = items_for_page( WorkOrderType, :order => 'work_order_tag_id, name')25 @items = items_for_page(TaskType, :order => 'task_tag_id, name') 26 26 render(:partial => 'shared/list_items', :layout => 'mainlevel') 27 27 end … … 31 31 @fields = [ 32 32 [_('Name'), :text_field, 'name', { :size => 40, :maxlength => 40 } ], 33 [_('Tag'), :select, ' work_order_tag_id', WorkOrderTag.find(:all, :order => 'name').map {|tag| [tag.full_name, tag.id] }, { :include_blank => true } ],33 [_('Tag'), :select, 'task_tag_id', TaskTag.find(:all, :order => 'name').map {|tag| [tag.full_name, tag.id] }, { :include_blank => true } ], 34 34 [_('Description'), :text_field, 'description', { :size => 40, :maxlength => 80 } ] 35 35 ] 36 common_create( WorkOrderType, 'name', {:action => 'list'}, {:action => 'list'})36 common_create(TaskType, 'name', {:action => 'list'}, {:action => 'list'}) 37 37 end 38 38 39 # Removes selected work_ordertypes39 # Removes selected task types 40 40 def remove 41 common_remove( WorkOrderType, 'name', :action => 'list') { |instance|42 unless instance. work_orders.empty?41 common_remove(TaskType, 'name', :action => 'list') { |instance| 42 unless instance.tasks.empty? 43 43 msg_could_not_remove_because_not_empty(instance) 44 44 end … … 50 50 @fields = [ 51 51 [_('Name'), :text_field, 'name', { :size => 40, :maxlength => 40 } ], 52 [_('Tag'), :select, ' work_order_tag_id', WorkOrderTag.find(:all, :order => 'name').map {|tag| [tag.full_name, tag.id] }, { :include_blank => true } ],52 [_('Tag'), :select, 'task_tag_id', TaskTag.find(:all, :order => 'name').map {|tag| [tag.full_name, tag.id] }, { :include_blank => true } ], 53 53 [_('Description'), :text_field, 'description', { :size => 40, :maxlength => 80 } ] 54 54 ] 55 common_edit( WorkOrderType, 'name', {:action => 'list'}, {:action => 'list'})55 common_edit(TaskType, 'name', {:action => 'list'}, {:action => 'list'}) 56 56 end 57 57 58 58 def view_template 59 @ work_order_template = WorkOrderTemplate.find(:first)60 if @ work_order_template61 image_base_url = url_for(:controller => 'form', :action => 'get_image', :id => @ work_order_template.id) + '?filename='62 @template_style, @template_body = @ work_order_template.convert_to_html(image_base_url) if @work_order_template59 @task_template = TaskTemplate.find(:first) 60 if @task_template 61 image_base_url = url_for(:controller => 'form', :action => 'get_image', :id => @task_template.id) + '?filename=' 62 @template_style, @template_body = @task_template.convert_to_html(image_base_url) if @task_template 63 63 end 64 64 end … … 66 66 def upload_template 67 67 if request.post? 68 @ work_order_template = WorkOrderTemplate.find(:first) || WorkOrderTemplate.new69 @ work_order_template.attributes = params[:work_order_template]70 redirect_to :action => 'view_template' and return if @ work_order_template.save68 @task_template = TaskTemplate.find(:first) || TaskTemplate.new 69 @task_template.attributes = params[:task_template] 70 redirect_to :action => 'view_template' and return if @task_template.save 71 71 else 72 @ work_order_template = WorkOrderTemplate.new72 @task_template = TaskTemplate.new 73 73 end 74 74 end 75 75 76 76 def download_template 77 template = WorkOrderTemplate.find(:first)77 template = TaskTemplate.find(:first) 78 78 79 79 unless template … … 83 83 end 84 84 85 send_data(template.data, :filename => ' work_order.odt', :disposition => 'inline')85 send_data(template.data, :filename => 'task.odt', :disposition => 'inline') 86 86 end 87 87 end branches/workorder_report_rename/app/helpers/task_helper.rb
r2 r468 2 2 # See license agreement for additional rights 3 3 4 module WorkOrderHelper4 module TaskHelper 5 5 end branches/workorder_report_rename/app/helpers/task_type_helper.rb
r2 r468 2 2 # See license agreement for additional rights 3 3 4 module WorkOrderTypeHelper4 module TaskTypeHelper 5 5 end branches/workorder_report_rename/app/models/task.rb
r464 r468 2 2 # See license agreement for additional rights 3 3 4 class WorkOrder< ProtectedAssetData4 class Task < ProtectedAssetData 5 5 # Protection 6 6 attr_protected :id, :asset_id, :responsible_user_id, :created_by, :created_at, :ready, :cause_form_id … … 11 11 after_find :save_original_state 12 12 # Associations 13 belongs_to : work_order_type13 belongs_to :task_type 14 14 belongs_to :responsible_user, :class_name => 'User', :foreign_key => 'responsible_user_id' 15 15 belongs_to :cause_form, :class_name => 'Form', :foreign_key => 'cause_form_id' # form which caused this work order 16 has_one :effect_form, :class_name => 'Form', :foreign_key => 'cause_ work_order_id' # form which was caused by this work order17 has_many : work_order_events, :dependent => :delete_all18 has_many :data_permissions, :dependent => :delete_all, :class_name => ' WorkOrderPermission'16 has_one :effect_form, :class_name => 'Form', :foreign_key => 'cause_task_id' # form which was caused by this work order 17 has_many :task_events, :dependent => :delete_all 18 has_many :data_permissions, :dependent => :delete_all, :class_name => 'TaskPermission' 19 19 has_and_belongs_to_many :workers, :class_name => 'User' 20 20 # has_many :user_groups, :through => :data_permissions 21 21 22 22 exports_automatic_fields_from :asset 23 exports_automatic_fields_from : work_order_type23 exports_automatic_fields_from :task_type 24 24 exports_automatic_fields_from :creator 25 exports_automatic_field 'cmms_ work_order_id', :integer, :id25 exports_automatic_field 'cmms_task_id', :integer, :id 26 26 exports_automatic_field 'cmms_work_short_description', :string, :short_description 27 27 exports_automatic_field 'cmms_work_long_description', :string, :long_description 28 exports_automatic_field 'cmms_ work_order_creation_date', :datetime, :created_at29 exports_automatic_field 'cmms_ work_order_deadline', :datetime, :deadline30 exports_automatic_field 'cmms_ work_order_starting_time', :datetime, :starting_time31 exports_automatic_field 'cmms_ work_order_estimated_working_time', :float, :estimated_working_time32 exports_automatic_field 'cmms_ work_order_working_time', :float, :working_time33 exports_automatic_field 'cmms_ work_order_priority', :integer, :priority34 exports_automatic_field 'cmms_ work_order_comments', :string, :comments_as_string28 exports_automatic_field 'cmms_task_creation_date', :datetime, :created_at 29 exports_automatic_field 'cmms_task_deadline', :datetime, :deadline 30 exports_automatic_field 'cmms_task_starting_time', :datetime, :starting_time 31 exports_automatic_field 'cmms_task_estimated_working_time', :float, :estimated_working_time 32 exports_automatic_field 'cmms_task_working_time', :float, :working_time 33 exports_automatic_field 'cmms_task_priority', :integer, :priority 34 exports_automatic_field 'cmms_task_comments', :string, :comments_as_string 35 35 36 36 … … 49 49 end 50 50 51 # Possible work_orderstates51 # Possible task states 52 52 @@NEW = 0 53 53 @@ASSIGNED = 1 … … 59 59 cattr_reader :CLOSED 60 60 61 def work_order_type_name62 return nil unless self. work_order_type63 return self. work_order_type.name61 def task_type_name 62 return nil unless self.task_type 63 return self.task_type.name 64 64 end 65 65 66 66 # Calculates the average times from the open state to the assigned, accepted and closed states. 67 67 # FIXME: Doesn't calculate times from reopen to assigned, accepted and closed states. 68 def WorkOrder.average_times_from_open_state(conditions)69 return [ WorkOrderEvent.TYPES[:ASSIGNED], WorkOrderEvent.TYPES[:ACCEPTED], WorkOrderEvent.TYPES[:CLOSED] ].collect { |event_type|70 wos = WorkOrder.find_authorized_to_read(:all, conditions)68 def Task.average_times_from_open_state(conditions) 69 return [TaskEvent.TYPES[:ASSIGNED], TaskEvent.TYPES[:ACCEPTED], TaskEvent.TYPES[:CLOSED] ].collect { |event_type| 70 wos = Task.find_authorized_to_read(:all, conditions) 71 71 72 72 times = wos.collect { |wo| 73 puts wo. work_order_events.find(:all).select {|e| e.event_type == event_type }.first74 state = wo. work_order_events.find(:first, :conditions => ['event_type = ?', event_type])73 puts wo.task_events.find(:all).select {|e| e.event_type == event_type }.first 74 state = wo.task_events.find(:first, :conditions => ['event_type = ?', event_type]) 75 75 if state 76 76 state.created_at - wo.created_at … … 90 90 end 91 91 92 def WorkOrder.calculate_resource_usage(conditions, time_span, time_delta)92 def Task.calculate_resource_usage(conditions, time_span, time_delta) 93 93 conditions[0] = conditions[0] + " AND state in (?) AND (starting_time IS NOT NULL OR deadline IS NOT NULL) AND estimated_working_time != 0.0 " 94 conditions.push([ WorkOrder.NEW, WorkOrder.ASSIGNED, WorkOrder.ACCEPTED])95 wos = WorkOrder.find_authorized_to_read(:all, :conditions => conditions)94 conditions.push([Task.NEW, Task.ASSIGNED, Task.ACCEPTED]) 95 wos = Task.find_authorized_to_read(:all, :conditions => conditions) 96 96 97 97 # Generate a list of resource usage changes. Each entry is a [time, change] pair. … … 161 161 162 162 # Arguments: 163 # +create_state_change_event+:: If +true+, a new WorkOrderEvent (representing the163 # +create_state_change_event+:: If +true+, a new TaskEvent (representing the 164 164 # change to the object's current state) is created. 165 165 def save(create_state_change_event = false) … … 167 167 168 168 if new_record? 169 work_order_events << WorkOrderEvent.new(:event_type => WorkOrderEvent.TYPES[:CREATED],169 task_events << TaskEvent.new(:event_type => TaskEvent.TYPES[:CREATED], 170 170 :comment_text => self.short_description) 171 171 return super() … … 176 176 case new_state 177 177 when @@ACCEPTED 178 @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:ACCEPTED],179 : work_order_id => self.id,178 @event = TaskEvent.create(:event_type => TaskEvent.TYPES[:ACCEPTED], 179 :task_id => self.id, 180 180 :comment_text => @comment) 181 181 when @@CLOSED 182 @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:CLOSED],183 : work_order_id => self.id,182 @event = TaskEvent.create(:event_type => TaskEvent.TYPES[:CLOSED], 183 :task_id => self.id, 184 184 :comment_text => @comment) 185 185 when @@ASSIGNED 186 @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:ASSIGNED],187 : work_order_id => self.id,186 @event = TaskEvent.create(:event_type => TaskEvent.TYPES[:ASSIGNED], 187 :task_id => self.id, 188 188 :comment_text => @comment, 189 : work_order_owner => self.responsible_user)189 :task_owner => self.responsible_user) 190 190 _('Work order was assigned to you') # This is to trigger the gettext 191 191 @message = Message.create(:receiver => self.responsible_user, … … 193 193 :body => "{#{self.id}}") 194 194 when @@NEW 195 @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:REOPENED],196 : work_order_id => self.id,195 @event = TaskEvent.create(:event_type => TaskEvent.TYPES[:REOPENED], 196 :task_id => self.id, 197 197 :comment_text => @comment) 198 198 when nil # State unchanged 199 199 if @comment and @comment != '' 200 @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:COMMENTED],201 : work_order_id => self.id,200 @event = TaskEvent.create(:event_type => TaskEvent.TYPES[:COMMENTED], 201 :task_id => self.id, 202 202 :comment_text => @comment) 203 203 end … … 231 231 end 232 232 233 # Assign work_orderto user233 # Assign task to user 234 234 def assign_to(user) 235 _info " WorkOrder#{self.id} assigned to #{user.login}."235 _info "Task #{self.id} assigned to #{user.login}." 236 236 self.responsible_user = user 237 237 self.state = @@ASSIGNED 238 238 end 239 239 240 # Accept work_orderand assing it to the current user240 # Accept task and assing it to the current user 241 241 def accept 242 _info " WorkOrder#{self.id} accepted by #{User.current_user.login}."242 _info "Task #{self.id} accepted by #{User.current_user.login}." 243 243 self.responsible_user = User.current_user 244 244 self.state = @@ACCEPTED 245 245 end 246 246 247 # Close work_order247 # Close task 248 248 def close 249 _info " WorkOrder#{self.id} closed by #{User.current_user.login}."249 _info "Task #{self.id} closed by #{User.current_user.login}." 250 250 self.state = @@CLOSED 251 251 end 252 252 253 # Open work_order253 # Open task 254 254 def open 255 _info " WorkOrder#{self.id} opened by #{User.current_user.login}."255 _info "Task #{self.id} opened by #{User.current_user.login}." 256 256 self.state = @@NEW 257 257 self.responsible_user = nil 258 258 end 259 259 260 # Returns true if work_orderhas passed it's deadline260 # Returns true if task has passed it's deadline 261 261 def is_late? 262 262 return false if self.state == @@CLOSED or self.deadline == nil … … 264 264 end 265 265 266 # Returns true if work_orderis closed266 # Returns true if task is closed 267 267 def is_closed? 268 268 self.state == @@CLOSED … … 276 276 end 277 277 278 def work_order_tag279 self. work_order_type.work_order_tag if self.work_order_type278 def task_tag 279 self.task_type.task_tag if self.task_type 280 280 end 281 281 282 282 def comments_as_string 283 comments = self. work_order_events.find(:all, :readonly => true).collect { |event| [event.created_at, event.creator, event.comment_text] }283 comments = self.task_events.find(:all, :readonly => true).collect { |event| [event.created_at, event.creator, event.comment_text] } 284 284 result = [] 285 285 for creation_date, creator, text in comments branches/workorder_report_rename/app/models/task_event.rb
r370 r468 2 2 # See license agreement for additional rights 3 3 4 class WorkOrderEvent < TimelineEvent4 class TaskEvent < TimelineEvent 5 5 # Protection 6 6 # Validation 7 7 # Callbacks 8 8 # Associations 9 belongs_to_data_model : work_order, :include => :asset10 belongs_to : work_order_owner, :class_name => 'User', :foreign_key => 'responsible_user_id'9 belongs_to_data_model :task, :include => :asset 10 belongs_to :task_owner, :class_name => 'User', :foreign_key => 'responsible_user_id' 11 11 12 12 @@TYPES = { branches/workorder_report_rename/app/models/task_permission_profile.rb
r24 r468 2 2 # See license agreement for additional rights 3 3 4 class WorkOrderPermissionProfile < DataPermissionProfile4 class TaskPermissionProfile < DataPermissionProfile 5 5 # Protection 6 6 parents_protector_and_protected_fields … … 12 12 13 13 14 # WorkOrderhas state14 # Task has state 15 15 HAS_CHANGE_STATE = true 16 16 end branches/workorder_report_rename/app/models/task_permissions.rb
r24 r468 2 2 # See license agreement for additional rights 3 3 4 # Data permissions for work_orders to user_groups5 class WorkOrderPermission < DataPermission4 # Data permissions for tasks to user_groups 5 class TaskPermission < DataPermission 6 6 # Protection 7 protected_fields :user_group_id, : work_order_id7 protected_fields :user_group_id, :task_id 8 8 # Validation 9 validates_uniqueness_of :user_group_id, :scope => : work_order_id10 validates_uniqueness_of : work_order_id, :scope => :user_group_id9 validates_uniqueness_of :user_group_id, :scope => :task_id 10 validates_uniqueness_of :task_id, :scope => :user_group_id 11 11 # Callbacks 12 12 # Associations 13 belongs_to_protector : work_order13 belongs_to_protector :task 14 14 end branches/workorder_report_rename/app/models/task_tag.rb
r454 r468 2 2 # See license agreement for additional rights 3 3 4 class WorkOrderTag < DataTypeTag4 class TaskTag < DataTypeTag 5 5 # Protection 6 6 # Validation … … 9 9 belongs_to :cause_form_tag, :class_name => 'FormTag', :foreig