Bug 323912: When a group cannot be deleted because it is in used, ThrowUserError() should be called - Patch by Fr�d�ric Buclin <LpSolit@gmail.com> r=GavinS a=myk

This commit is contained in:
lpsolit%gmail.com 2006-03-08 23:53:57 +00:00
Родитель 385d974e5f
Коммит ac3672073a
3 изменённых файлов: 32 добавлений и 41 удалений

Просмотреть файл

@ -426,32 +426,31 @@ if ($action eq 'delete') {
$cantdelete = 1;
}
if (!$cantdelete) {
$dbh->do('UPDATE flagtypes SET grant_group_id = ?
WHERE grant_group_id = ?',
undef, (undef, $gid));
$dbh->do('UPDATE flagtypes SET request_group_id = ?
WHERE request_group_id = ?',
undef, (undef, $gid));
$dbh->do('DELETE FROM user_group_map WHERE group_id = ?',
undef, $gid);
$dbh->do('DELETE FROM group_group_map
WHERE grantor_id = ? OR member_id = ?',
undef, ($gid, $gid));
$dbh->do('DELETE FROM bug_group_map WHERE group_id = ?',
undef, $gid);
$dbh->do('DELETE FROM group_control_map WHERE group_id = ?',
undef, $gid);
$dbh->do('DELETE FROM whine_schedules
WHERE mailto_type = ? AND mailto = ?',
undef, (MAILTO_GROUP, $gid));
$dbh->do('DELETE FROM groups WHERE id = ?',
undef, $gid);
}
$vars->{'gid'} = $gid;
$vars->{'name'} = $name;
$vars->{'cantdelete'} = $cantdelete;
ThrowUserError('group_cannot_delete', $vars) if $cantdelete;
$dbh->do('UPDATE flagtypes SET grant_group_id = ?
WHERE grant_group_id = ?',
undef, (undef, $gid));
$dbh->do('UPDATE flagtypes SET request_group_id = ?
WHERE request_group_id = ?',
undef, (undef, $gid));
$dbh->do('DELETE FROM user_group_map WHERE group_id = ?',
undef, $gid);
$dbh->do('DELETE FROM group_group_map
WHERE grantor_id = ? OR member_id = ?',
undef, ($gid, $gid));
$dbh->do('DELETE FROM bug_group_map WHERE group_id = ?',
undef, $gid);
$dbh->do('DELETE FROM group_control_map WHERE group_id = ?',
undef, $gid);
$dbh->do('DELETE FROM whine_schedules
WHERE mailto_type = ? AND mailto = ?',
undef, (MAILTO_GROUP, $gid));
$dbh->do('DELETE FROM groups WHERE id = ?',
undef, $gid);
print $cgi->header();
$template->process("admin/groups/deleted.html.tmpl", $vars)

Просмотреть файл

@ -23,9 +23,7 @@
#%]
[%# INTERFACE:
# gid: number. The group ID.
# name: string. The name of the group.
# cantdelete: boolean int. Is 1 if the group couldn't have been deleted.
#%]
@ -33,21 +31,7 @@
title = "Deleting group"
%]
[% IF cantdelete %]
<p>
This group cannot be deleted because there are records
in the database which refer to it. All such records
must be removed or altered to remove the reference to this
group before the group can be deleted.
</p>
<p>
<a href="editgroups.cgi?action=del&amp;group=[% gid FILTER url_quote %]">View</a>
the list of which records are affected.
</p>
[% ELSE %]
<p><b>The group [% name FILTER html %] has been deleted.</b></p>
[% END %]
<p>The group [% name FILTER html %] has been deleted.</p>
<p>Go back to the <a href="editgroups.cgi">group list</a>.

Просмотреть файл

@ -508,6 +508,14 @@
The sort key must be an integer between 0 and 32767 inclusive.
It cannot be <em>[% sortkey FILTER html %]</em>.
[% ELSIF error == "group_cannot_delete" %]
[% title = "Cannot Delete Group" %]
The <em>[% name FILTER html %]</em> group cannot be deleted because
there are
<a href="editgroups.cgi?action=del&amp;group=[% gid FILTER url_quote %]">records</a>
in the database which refer to it. All references to this group must
be removed before you can remove it.
[% ELSIF error == "group_exists" %]
[% title = "The group already exists" %]
The group [% name FILTER html %] already exists.