[mb-commits] branch, mbs-5700, created. MBS-5703: When an editor deletes their account, unsubscribe anyone subscribed...
MusicBrainz Git Server <[email protected]> Fri, 25 Jan 2013 11:29:37 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1TyhTV-0005x5-3m@wiley> |
The branch, mbs-5700 has been created
at ca4f866eadd7abac6cadfc6e51004ed984e5b417 (commit)
- Log -----------------------------------------------------------------
commit ca4f866eadd7abac6cadfc6e51004ed984e5b417
Author: Oliver Charles <[email protected]>
Date: Fri Jan 25 11:29:19 2013 +0000
MBS-5703: When an editor deletes their account, unsubscribe anyone subscribed to them
diff --git a/admin/sql/updates/20130125-unsubscribe-to-deleted-editors.sql b/admin/sql/updates/20130125-unsubscribe-to-deleted-editors.sql
new file mode 100644
index 0000000..55d4f40
--- /dev/null
+++ b/admin/sql/updates/20130125-unsubscribe-to-deleted-editors.sql
@@ -0,0 +1,8 @@
+BEGIN;
+
+DELETE FROM editor_subscribe_editor
+WHERE subscribed_editor IN (
+ SELECT id FROM editor WHERE name ~ E'^Deleted Editor #(\\d+)$'
+) order by name asc;
+
+COMMIT;
diff --git a/lib/MusicBrainz/Server/Data/Editor.pm b/lib/MusicBrainz/Server/Data/Editor.pm
index 5cf0f2f..989c688 100644
--- a/lib/MusicBrainz/Server/Data/Editor.pm
+++ b/lib/MusicBrainz/Server/Data/Editor.pm
@@ -478,6 +478,7 @@ sub delete {
$self->c->model('EditorLanguage')->delete_editor($editor_id);
$self->c->model('EditorSubscriptions')->delete_editor($editor_id);
+ $self->c->model('Editor')->unsubscribe_to($editor_id);
$self->c->model('Collection')->delete_editor($editor_id);
$self->c->model('WatchArtist')->delete_editor($editor_id);
@@ -553,6 +554,13 @@ sub last_24h_edit_count
return $self->sql->select_single_value($query, $editor_id);
}
+sub unsubscribe_to {
+ my ($self, $editor_id) = @_;
+ $self->sql->do(
+ 'DELETE FROM editor_subscribe_editor WHERE subscribed_editor = ?',
+ $editor_id);
+}
+
no Moose;
__PACKAGE__->meta->make_immutable;
1;
diff --git a/t/lib/t/MusicBrainz/Server/Data/Editor.pm b/t/lib/t/MusicBrainz/Server/Data/Editor.pm
index 066a72e..c9c4e35 100644
--- a/t/lib/t/MusicBrainz/Server/Data/Editor.pm
+++ b/t/lib/t/MusicBrainz/Server/Data/Editor.pm
@@ -241,6 +241,21 @@ test 'Deleting an editor cancels all open edits' => sub {
is($c->model('Edit')->get_by_id($open_edit->id)->status, $STATUS_DELETED);
};
+test 'Deleting an editor unsubscribes anyone who was subscribed to them' => sub {
+ my $test = shift;
+ my $c = $test->c;
+
+ $c->sql->do(<<'EOSQL');
+INSERT INTO editor (id, name, password)
+ VALUES (1, 'Subject', ''), (2, 'Subscriber', '');
+INSERT INTO editor_subscribe_editor (editor, subscribed_editor, last_edit_sent)
+ VALUES (2, 1, 1);
+EOSQL
+
+ $c->model('Editor')->delete(1);
+ is(scalar($c->model('Editor')->subscription->get_subscriptions(2)), 0);
+};
+
test 'Open edit and last-24-hour counts' => sub {
my $test = shift;
my $c = $test->c;
-----------------------------------------------------------------------
hooks/post-receive
--
mb_server