[mb-commits] r11043 - in mb_server/branches/TemplateToolkit/lib: . MusicBrainz/Server/Controller MusicBrainz/Server/Model
root at musicbrainz.org
root at musicbrainz.org
Tue Jan 13 15:17:57 UTC 2009
Author: acid2
Date: 2009-01-13 15:17:57 +0000 (Tue, 13 Jan 2009)
New Revision: 11043
Modified:
mb_server/branches/TemplateToolkit/lib/Moderation.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Moderation.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Review.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Model/Moderation.pm
Log:
Refactor Moderation model so queries return a pager for you.
Modified: mb_server/branches/TemplateToolkit/lib/Moderation.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/Moderation.pm 2009-01-13 15:04:18 UTC (rev 11042)
+++ mb_server/branches/TemplateToolkit/lib/Moderation.pm 2009-01-13 15:17:57 UTC (rev 11043)
@@ -1419,7 +1419,7 @@
$_->PreDisplay;
}
- return (SEARCHRESULT_SUCCESS, \@edits, $index+$total_rows);
+ return (SEARCHRESULT_SUCCESS, \@edits, $index + $total_rows);
}
################################################################################
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Moderation.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Moderation.pm 2009-01-13 15:04:18 UTC (rev 11042)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Moderation.pm 2009-01-13 15:17:57 UTC (rev 11043)
@@ -245,16 +245,11 @@
$c->forward('/user/login');
my $page = $c->req->{query_params}->{page} || 1;
-
- my $pager = Data::Page->new;
- $pager->entries_per_page(25);
- $pager->current_page($page);
- my $edits = $c->model('Moderation')->list_open($pager->entries_per_page, ($page - 1) * $pager->entries_per_page);
- $pager->total_entries($c->model('Moderation')->count_open);
+ my ($edits, $pager)= $c->model('Moderation')->list_open($page);
- $c->stash->{pager} = $pager;
- $c->stash->{edits } = $edits;
+ $c->stash->{pager} = $pager;
+ $c->stash->{edits} = $edits;
}
=head2 for_type
@@ -269,10 +264,13 @@
$c->forward('/user/login');
+ my $page = $c->req->{query_params}->{page} || 1;
+
my $entity = $c->model(ucfirst $type)->load($mbid);
- my $edits = $c->model('Moderation')->edits_for_entity($entity);
+ my ($edits, $pager) = $c->model('Moderation')->edits_for_entity($entity, $page);
$c->stash->{edits} = $edits;
+ $c->stash->{pager} = $pager;
$c->stash->{entity} = $entity;
}
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Review.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Review.pm 2009-01-13 15:04:18 UTC (rev 11042)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Review.pm 2009-01-13 15:17:57 UTC (rev 11043)
@@ -8,6 +8,8 @@
sub user : Chained('/') PathPart('review') CaptureArgs(1)
{
my ($self, $c, $user_name) = @_;
+
+ $c->forward('/user/login');
$c->stash->{user} = $c->model('User')->load({ username => $user_name });
}
@@ -15,8 +17,13 @@
sub votes : Chained('user')
{
my ($self, $c) = @_;
+
+ my $page = $c->req->query_params->{page} || 1;
- $c->stash->{edits} = $c->model('Moderation')->voted_on($c->stash->{user});
+ my ($edits, $pager) = $c->model('Moderation')->voted_on($c->stash->{user}, $page);
+
+ $c->stash->{edits} = $edits;
+ $c->stash->{pager} = $pager;
$c->stash->{template} = 'moderation/open.tt';
}
@@ -26,7 +33,12 @@
$type ||= 'all';
- $c->stash->{edits} = $c->model('Moderation')->users_edits($c->stash->{user}, $type);
+ my $page = $c->req->query_params->{page} || 1;
+
+ my ($edits, $pager) = $c->model('Moderation')->users_edits($c->stash->{user}, $type);
+
+ $c->stash->{edits} = $edits;
+ $c->stash->{pager} = $pager;
$c->stash->{template} = 'moderation/open.tt';
}
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Model/Moderation.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Model/Moderation.pm 2009-01-13 15:04:18 UTC (rev 11042)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Model/Moderation.pm 2009-01-13 15:17:57 UTC (rev 11043)
@@ -35,66 +35,65 @@
return @mods;
}
-sub list_open
+sub _query_with_pager
{
- my ($self, $max, $offset) = @_;
+ my ($self, $query, $page, $per_page) = @_;
+
+ $per_page ||= 50;
+
+ my $pager = Data::Page->new;
+ $pager->current_page($page);
+ $pager->entries_per_page($per_page);
+
+ my $edit = new Moderation($self->dbh);
+ my $offset = ($page - 1) * $per_page;
+ my ($result, $edits, $rows) = $edit->moderation_list($query, undef, $offset, $per_page);
+
+ $pager->total_entries($rows);
- $max ||= 50;
- $offset ||= 0;
+ return ($edits, $pager);
+}
- my $edit = new Moderation($self->dbh);
- my ($result, $edits) = $edit->moderation_list(q{
+sub list_open
+{
+ my ($self, $page, $per_page) = @_;
+
+ return $self->_query_with_pager(q{
SELECT m.*, NOW()>m.expiretime AS expired
FROM moderation_open m
ORDER BY m.id DESC
- }, undef, $offset, $max);
-
- return $edits;
+ }, $page, $per_page);
}
sub voted_on
{
- my ($self, $user, $max, $offset) = @_;
+ my ($self, $user, $page, $per_page) = @_;
- $max ||= 50;
- $offset ||= 0;
-
my $edit = Moderation->new($self->dbh);
- my ($result, $edits) = $edit->moderation_list(
+ return $self->_query_with_pager(
"SELECT m.*, NOW() > m.expiretime AS expired, v.vote
FROM moderation_all m
INNER JOIN vote_all v ON v.moderation = m.id
AND v.moderator = " . $user->id . "
AND NOT v.superseded
- ORDER BY m.id DESC", undef, $offset, $max);
-
- return $edits;
+ ORDER BY m.id DESC", $page, $per_page);
}
sub edits_for_entity
{
- my ($self, $entity, $max, $offset) = @_;
+ my ($self, $entity, $page, $per_page) = @_;
- $max ||= 50;
- $offset ||= 0;
-
- my $edit = Moderation->new($self->dbh);
- my ($result, $edits) = $edit->moderation_list(
+ return $self->_query_with_pager(
"SELECT m.*, NOW() > m.expiretime AS expired
FROM moderation_all m
WHERE m.rowid = " . $entity->id . "
- ORDER BY m.id DESC", undef, $offset, $max);
-
- return $edits;
+ ORDER BY m.id DESC", $page, $per_page);
}
sub users_edits
{
- my ($self, $user, $type, $max, $offset) = @_;
+ my ($self, $user, $type, $page, $per_page) = @_;
- $max ||= 50;
- $offset ||= 0;
-
my @status = $type eq 'closed' ? ( ModDefs::STATUS_APPLIED )
: $type eq 'failed' ? ( ModDefs::STATUS_FAILEDVOTE, ModDefs::STATUS_FAILEDDEP, ModDefs::STATUS_FAILEDPREREQ )
: $type eq 'open' ? ( ModDefs::STATUS_OPEN )
@@ -107,16 +106,12 @@
: $type eq 'all' ? 'all'
: 'all';
- my $query = "SELECT m.*, NOW() > m.expiretime AS expired
- FROM moderation_$table m
- WHERE m.moderator = " . $user->id . "
- AND m.status IN ( ". join(",", at status) .")
- ORDER BY m.id DESC";
-
- my $edit = Moderation->new($self->dbh);
- my ($result, $edits) = $edit->moderation_list($query, undef, $offset, $max);
-
- return $edits;
+ return $self->_query_with_pager(
+ "SELECT m.*, NOW() > m.expiretime AS expired
+ FROM moderation_$table m
+ WHERE m.moderator = " . $user->id . "
+ AND m.status IN ( ". join(",", at status) .")
+ ORDER BY m.id DESC", $page, $per_page);
}
sub count_open
More information about the MusicBrainz-commits
mailing list