プロジェクトのコピーでカスタムクエリがコピーできません。

743 views
Skip to first unread message

mschibata

unread,
Nov 2, 2011, 2:24:17 AM11/2/11
to redmine-...@googlegroups.com
m柴田です。
 
Redmine 1.1.3 stable だからかも知れませんが、管理画面でプロジェクトをコピーする際に、カスタムクエリーのチェックボックスをオンにしてコピーしても、コピー先にクエリができません。
#チェックボックス横には、存在するクエリー数はちゃんと表示されているので、それをコピーする仕様のはずです。
 
公式サイトの Change Log を見ても、そのものズバリの修正はないようです。
 
バグでしょうか?
 
何か情報をお持ちの方がいらっしゃいましたらご教示いただけませんでしょうか?
 
ちょっと困ってます。
 
 

mschibata

unread,
Nov 2, 2011, 3:33:02 AM11/2/11
to redmine-...@googlegroups.com
m柴田です。
いきなり勘違いです。スミマセン。
 
コピーしたてのプロジェクトですから、自分がメンバーに入っているわけもなく。
クエリーの属性が「公開」=Off だったので、見えないだけでした。

mschibata

unread,
Nov 2, 2011, 4:16:55 AM11/2/11
to redmine-...@googlegroups.com
m柴田、続報です。
 
バタバタしてスミマセン。
さっき書き込んだ記事は消したいくらいですが、消せないのでそのまま続けます。
 
クエリの属性 「公開」= On のは、プロジェクトのコピーでコピー先プロジェクトで正常に見えるのは先ほど報告したとおりです。
一方、「公開」= Off のクエリは、プライベートのクエリとしてコピーされますが、コピー先でその持ち主は DB の内部 User ID = 0 のユーザーになっています。
 
このユーザーでログインすれば見えるはずですが、一番最初からいるユーザー admin でさえ User ID = 1ですので、普通に登録したユーザーからは見る方法がなさそうです。
 
コピー元のプロジェクトでメンバーになっているクエリの持ち主が、コピー先にもいるかどうかは、プロジェクトのコピー条件設定次第ですが、持ち主がいないから見えないのはロジカル (せめて User ID = 1 (admin) なら仕様) としても User ID = 0 という存在し得ないユーザーに書き換えるのは、やはりバグだと思います。
 
私が困っていた件は、「公開」= On で保存してもよい話なので問題はありませんが、新しいバージョンでは、このあたり直っているのでしょうか?
 
Change Log にコレピタなのは見あたりませんでしたが、その周辺らしきところは触っているみたいなので、その流れで直っているとかならよいのですが。
 

mschibata

unread,
Nov 4, 2011, 6:03:36 AM11/4/11
to redmine-...@googlegroups.com
m柴田です。
 
Redmine 1.2.1.stable でも確認しました。 → 現象発生しました。
Bitnami Redmine は、こういうとき便利ですね。
 
app\models\project.rb の copy_queries() に以下の一行を足せば、対症療法的には効きます。
 
  # Copies queries from +project+
  def copy_queries(project)
    project.queries.each do |query|
      new_query = Query.new
      new_query.attributes = query.attributes.dup.except("id", "project_id", "sort_criteria")
+     new_query.user_id = query.user_id if query.user_id
      new_query.sort_criteria = query.sort_criteria if query.sort_criteria
      new_query.project = self
      self.queries << new_query
    end
  end
ただし足す前のコードは正しいのではないかと思います。
プロジェクトコピー時にコピーできるほかの項目のルーチンが前後にありますが、それと同じ形をしていますので、Ruby 素人の私の目にも大丈夫そうに見えます。
 
query.attributes.dup.except() で user_id は except 対象になっていないので dup = コピーされるコードだと思うのですが...
わざわざ個別にコピーしないと反映されないのは、ほかに理由があるはずですが、そこは追えていません。
 

mschibata

unread,
Nov 13, 2011, 7:50:09 PM11/13/11
to redmine-...@googlegroups.com
Redmine 1.2.3 に修正を入れていただけることになりました。
 
Reply all
Reply to author
Forward
0 new messages