[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