忍者ブログ
想いとグチの吐き出し場

SvnAuthzAdminPluginもカスタマイズする@trac (Trac1.0ja版)

20150306 追記

すみません。カスタマイズした部分にバグがありました。
svnauthzadminplugin/0.12/svnauthz/admin_ui.py 343行目。
(誤)

members.append([m.__str__(), self.name_map[m.__str__()]])




(正)

members.append([m.__str__(), self.name_map.get(m.__str__(), m.__str__())])








SvnAuthzAdminPluginは、SVNのアクセス権管理をブラウザから行えるようにするプラグイン。
こちらもフルネーム対応する。

環境はこれまでと同じ
ReportIncludePluginのバージョンは0.2。
注意事項もこれまでと同じ。
 自分はTracの製作者等ではなく、単なる1ユーザーでしかありません。
 ソースの改変によるいかなる損失・被害等にも対応しませんし
 動作保証すらしていません。
 もしこの記事を読んでソースの改変を行う時は
 自己責任でお願いします。




対象ファイル1:svnauthzadminplugin/0.12/svnauthz/admin_ui.py
改変内容
※行番号は若干食い違いがあるかも。

20150306 343行目を修正

47,53d46
< # Get Name of all known users
< self.db = self.env.get_db_cnx()
< self.name_map = {}
< for username, name, email in self.env.get_known_users(self.db):
< if name:
< self.name_map[username] = name
<
340,344c333
< #data['editgroup_members'] = sorted([m.__str__() for m in group], key=lambda member : member.lower())
< members = []
< for m in group:
< members.append([m.__str__(), self.name_map.get(m.__str__(), m.__str__())])
< data['editgroup_members'] = sorted(members, key=lambda member : member[0].lower())
---
> data['editgroup_members'] = sorted([m.__str__() for m in group], key=lambda member : member.lower())
382,395c371,376
< candidates = [['','']]
< users = sorted([user for user in self._get_all_users()
< if user not in not_in_list])
< user_datas = []
< for user in users:
< user_datas.append([user, self._get_fullname(user)])
< candidates += user_datas
<
< groups = sorted([group.__str__() for group in self.authz.get_groups()
< if group.__str__() not in not_in_list])
< group_datas = []
< for group in groups:
< group_datas.append([group, group])
< candidates += group_datas
---
> candidates = ['']
> users = [user for user in self._get_all_users()
> if user not in not_in_list]
> candidates += sorted(users)
> candidates += sorted([group.__str__() for group in self.authz.get_groups()
> if group.__str__() not in not_in_list])
424d403
< 'fullname' : self._get_fullname(member.get_member().__str__()),
462,469d440
<
< def _get_fullname(self, id):
< if id in self.name_map:
< fullname = self.name_map[id]
< else:
< fullname = id
< return fullname
<








対象ファイル2:svnauthzadminplugin/0.12/svnauthz/templates/admin_authz.html
改変内容

31c31
< <option py:for="candidate in editgroup_candidates" value="${candidate[0]}">${candidate[1]}</option>
---
> <option py:for="candidate in editgroup_candidates" value="$candidate">$candidate</option>
58c58
< <option py:for="candidate in editpath_candidates" value="${candidate[0]}">${candidate[1]}</option>
---
> <option py:for="candidate in editpath_candidates" value="$candidate">$candidate</option>
147,148c147,148
< <td py:if="not(read_only_display)"><input type="checkbox" name="selgroupmember" value="${groupmember[0]}"/></td>
< <td>${groupmember[1]}</td>
---
> <td py:if="not(read_only_display)"><input type="checkbox" name="selgroupmember" value="$groupmember"/></td>
> <td>$groupmember</td>
194c194
< <td>${pathmember.fullname}</td>
---
> <td>${pathmember.subject}</td>








以上!
PR