@@ -183,35 +183,35 @@ def reload
183183 end
184184
185185 def merge_user_buffer_stream!
186- buffer_ids , changed_ids = changed_champ_ids_for_merge ( Champ ::USER_BUFFER_STREAM )
186+ buffer_ids , changed_ids = changed_champ_ids_for_merge ( Dossier ::USER_BUFFER_STREAM )
187187
188188 return if buffer_ids . blank?
189189
190- merge_buffer_champs ( buffer_ids , changed_ids , Champ ::USER_BUFFER_STREAM )
190+ merge_buffer_champs ( buffer_ids , changed_ids , Dossier ::USER_BUFFER_STREAM )
191191 end
192192
193193 def merge_instructeur_buffer_stream!
194- buffer_ids , changed_ids = changed_champ_ids_for_merge ( Champ ::INSTRUCTEUR_BUFFER_STREAM )
194+ buffer_ids , changed_ids = changed_champ_ids_for_merge ( Dossier ::INSTRUCTEUR_BUFFER_STREAM )
195195
196196 return if buffer_ids . blank?
197197
198- merge_buffer_champs ( buffer_ids , changed_ids , Champ ::INSTRUCTEUR_BUFFER_STREAM )
198+ merge_buffer_champs ( buffer_ids , changed_ids , Dossier ::INSTRUCTEUR_BUFFER_STREAM )
199199 end
200200
201201 def reset_user_buffer_stream!
202- champ_data . where ( stream : Champ ::USER_BUFFER_STREAM ) . destroy_all
202+ champ_data . where ( stream : Dossier ::USER_BUFFER_STREAM ) . destroy_all
203203
204204 # update loaded champ instances
205- association ( :champ_data ) . target = champ_data . filter { _1 . stream != Champ :: USER_BUFFER_STREAM }
205+ association ( :champ_data ) . target = champ_data . reject ( & :user_buffer_stream? )
206206
207207 reset_champs_cache
208208 end
209209
210210 def reset_instructeur_buffer_stream!
211- champ_data . where ( stream : Champ ::INSTRUCTEUR_BUFFER_STREAM ) . destroy_all
211+ champ_data . where ( stream : Dossier ::INSTRUCTEUR_BUFFER_STREAM ) . destroy_all
212212
213213 # update loaded champ instances
214- association ( :champ_data ) . target = champ_data . filter { _1 . stream != Champ :: INSTRUCTEUR_BUFFER_STREAM }
214+ association ( :champ_data ) . target = champ_data . reject ( & :instructeur_buffer_stream? )
215215
216216 reset_champs_cache
217217 end
@@ -224,49 +224,6 @@ def instructeur_buffer_changes?
224224 champs_on_instructeur_buffer_stream . present?
225225 end
226226
227- def can_update_as_user? ( user )
228- return false unless en_construction?
229- user . owns_or_invite? ( self )
230- end
231-
232- def can_update_as_instructeur? ( user )
233- return false unless en_construction?
234- return false unless procedure . instructeurs_can_edit_dossiers?
235- return false unless user . instructeur?
236- return false if can_update_as_user? ( user )
237- groupe_instructeur . instructeurs . include? ( user . instructeur )
238- end
239-
240- def with_update_stream ( user , &block )
241- if can_update_as_user? ( user )
242- with_stream ( Champ ::USER_BUFFER_STREAM , &block )
243- elsif can_update_as_instructeur? ( user )
244- with_stream ( Champ ::INSTRUCTEUR_BUFFER_STREAM , &block )
245- else
246- with_stream ( Champ ::MAIN_STREAM , &block )
247- end
248- end
249-
250- def with_main_stream ( &block )
251- with_stream ( Champ ::MAIN_STREAM , &block )
252- end
253-
254- def with_instructeur_buffer_stream ( &block )
255- with_stream ( Champ ::INSTRUCTEUR_BUFFER_STREAM , &block )
256- end
257-
258- def with_user_history_stream ( &block )
259- with_stream ( Champ ::USER_HISTORY_STREAM , &block )
260- end
261-
262- def with_champ_stream ( champ , &block )
263- with_stream ( champ . stream , &block )
264- end
265-
266- def stream
267- @stream || Champ ::MAIN_STREAM
268- end
269-
270227 def history
271228 champ_data . filter ( &:history_stream? )
272229 end
@@ -308,7 +265,7 @@ def changed_champ_ids_for_merge(stream)
308265
309266 return [ [ ] , [ ] ] if stream_h . empty?
310267
311- main_h = champ_data . where ( stream : Champ ::MAIN_STREAM , stable_id : revision_stable_ids )
268+ main_h = champ_data . where ( stream : Dossier ::MAIN_STREAM , stable_id : revision_stable_ids )
312269 . pluck ( :stable_id , :row_id , :id )
313270 . to_h { |( stable_id , row_id , id ) | [ TypeDeChamp . public_id ( stable_id , row_id ) , id ] }
314271
@@ -325,29 +282,29 @@ def changed_champ_ids_for_merge(stream)
325282 . pluck ( :row_id )
326283
327284 if discarded_row_ids . present?
328- changed_ids += champ_data . where ( stream : Champ ::MAIN_STREAM , row_id : discarded_row_ids ) . pluck ( :id )
285+ changed_ids += champ_data . where ( stream : Dossier ::MAIN_STREAM , row_id : discarded_row_ids ) . pluck ( :id )
329286 end
330287
331288 [ stream_ids , changed_ids ]
332289 end
333290
334291 def merge_buffer_champs ( buffer_ids , changed_ids , stream )
335292 now = Time . zone . now
336- history_stream = "#{ Champ ::HISTORY_STREAM } #{ now } "
293+ history_stream = "#{ Dossier ::HISTORY_STREAM } #{ now } "
337294 buffer_champs = champ_data . filter { buffer_ids . member? ( it . id ) }
338295
339296 transaction do
340297 # if merging user buffer, discard any instructeur made changes
341- if stream == Champ ::USER_BUFFER_STREAM
298+ if stream == Dossier ::USER_BUFFER_STREAM
342299 champ_data . where ( id : buffer_ids , stream :) . pluck ( :stable_id , :row_id ) . each do |( stable_id , row_id ) |
343- champ_data . where ( stream : Champ ::INSTRUCTEUR_BUFFER_STREAM , stable_id :, row_id :) . destroy_all
300+ champ_data . where ( stream : Dossier ::INSTRUCTEUR_BUFFER_STREAM , stable_id :, row_id :) . destroy_all
344301 end
345302 end
346303
347304 # move champ_data with changes from "main" to "history" stream
348- champ_data . where ( id : changed_ids , stream : Champ ::MAIN_STREAM ) . update_all ( stream : history_stream )
305+ champ_data . where ( id : changed_ids , stream : Dossier ::MAIN_STREAM ) . update_all ( stream : history_stream )
349306 # move champ_data from "buffer" to "main"
350- champ_data . where ( id : buffer_ids , stream :) . update_all ( stream : Champ ::MAIN_STREAM , updated_at : now , checkpoint : history_stream )
307+ champ_data . where ( id : buffer_ids , stream :) . update_all ( stream : Dossier ::MAIN_STREAM , updated_at : now , checkpoint : history_stream )
351308 update_champs_timestamps ( buffer_champs , stream )
352309 end
353310
@@ -356,7 +313,7 @@ def merge_buffer_champs(buffer_ids, changed_ids, stream)
356313 if champ . id . in? ( changed_ids )
357314 champ . stream = history_stream
358315 elsif champ . id . in? ( buffer_ids )
359- champ . stream = Champ ::MAIN_STREAM
316+ champ . stream = Dossier ::MAIN_STREAM
360317 champ . checkpoint = history_stream
361318 end
362319 end
@@ -370,22 +327,6 @@ def merge_buffer_champs(buffer_ids, changed_ids, stream)
370327 history_stream
371328 end
372329
373- def with_stream ( stream )
374- if block_given?
375- previous_stream = @stream
376- @stream = stream
377- reset_champs_cache
378- result = yield
379- @stream = previous_stream
380- reset_champs_cache
381- result
382- else
383- @stream = stream
384- reset_champs_cache
385- self
386- end
387- end
388-
389330 def champs_by_public_id
390331 @champs_by_public_id ||= champs_on_stream . index_by ( &:public_id )
391332 end
@@ -395,12 +336,11 @@ def discarded_champs_by_public_id
395336 end
396337
397338 def champs_on_stream
398- @champs_on_stream ||= case stream
399- when Champ ::USER_BUFFER_STREAM
339+ @champs_on_stream ||= if user_buffer_stream?
400340 ( champs_on_user_buffer_stream + champs_on_main_stream ) . uniq ( &:public_id )
401- when Champ :: INSTRUCTEUR_BUFFER_STREAM
341+ elsif instructeur_buffer_stream?
402342 ( champs_on_instructeur_buffer_stream + champs_on_main_stream ) . uniq ( &:public_id )
403- when Champ :: USER_HISTORY_STREAM
343+ elsif user_history_stream?
404344 champ_data
405345 # only "main" and "history"
406346 . reject ( &:buffer_stream? )
@@ -480,8 +420,8 @@ def champ_upsert_by!(type_de_champ, row_id)
480420 if champ . class != type_de_champ . champ_class
481421 champ = champ . becomes! ( type_de_champ . champ_class )
482422 champ . assign_attributes ( value : nil , value_json : nil , external_id : nil , data : nil )
483- elsif stream != Champ :: MAIN_STREAM && champ . previously_new_record?
484- main_stream_champ = champ_data . find_by ( stable_id : type_de_champ . stable_id , row_id :, stream : Champ ::MAIN_STREAM )
423+ elsif ! main_stream? && champ . previously_new_record?
424+ main_stream_champ = champ_data . find_by ( stable_id : type_de_champ . stable_id , row_id :, stream : Dossier ::MAIN_STREAM )
485425 champ . clone_value_from ( main_stream_champ ) if main_stream_champ . present?
486426 end
487427
@@ -505,10 +445,10 @@ def champ_upsert_by!(type_de_champ, row_id)
505445
506446 def check_valid_stream_on_write? ( type_de_champ )
507447 if type_de_champ . private?
508- if stream != Champ :: MAIN_STREAM
448+ if ! main_stream?
509449 raise "Can not write a private champ to \" #{ stream } \" stream"
510450 end
511- elsif stream == Champ :: MAIN_STREAM && en_construction?
451+ elsif main_stream? && en_construction?
512452 raise 'Can not write to "main" stream on a dossier "en construction"'
513453 end
514454 end
0 commit comments