From 8f0e4cf6a17588a5d370b82de9d2b2fbdeca0ea7 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Wed, 24 Apr 2013 13:47:42 -0700
Subject: [PATCH 01/12] change behavior so that admin can add sponsor
 logos/text in-dashboard

---
 symposion/sponsorship/views.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/symposion/sponsorship/views.py b/symposion/sponsorship/views.py
index 99d37b1b..c855e92f 100644
--- a/symposion/sponsorship/views.py
+++ b/symposion/sponsorship/views.py
@@ -35,7 +35,9 @@ def sponsor_add(request):
             sponsor = form.save(commit=False)
             sponsor.active = True
             sponsor.save()
-            return redirect("dashboard")
+            return redirect("sponsor_detail", pk=sponsor.pk)
+            # changing default behavior (below) so that admins can add text/logos/files in-dashboard
+            # return redirect("dashboard") 
     else:
         form = SponsorApplicationForm(user=request.user)
     

From 9ab34b8ea5a706fe0e3c16f32fad5adfded048ba Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Wed, 24 Apr 2013 16:08:31 -0700
Subject: [PATCH 02/12] deleted my inline comment

---
 symposion/sponsorship/views.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/symposion/sponsorship/views.py b/symposion/sponsorship/views.py
index c855e92f..22b4f243 100644
--- a/symposion/sponsorship/views.py
+++ b/symposion/sponsorship/views.py
@@ -36,8 +36,6 @@ def sponsor_add(request):
             sponsor.active = True
             sponsor.save()
             return redirect("sponsor_detail", pk=sponsor.pk)
-            # changing default behavior (below) so that admins can add text/logos/files in-dashboard
-            # return redirect("dashboard") 
     else:
         form = SponsorApplicationForm(user=request.user)
     

From db7f8fac5d43fc501d4df4cb88899991ddf509b9 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Thu, 25 Apr 2013 15:37:38 -0700
Subject: [PATCH 03/12] added user_not_reviewed to templatetags

---
 symposion/reviews/templatetags/review_tags.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/symposion/reviews/templatetags/review_tags.py b/symposion/reviews/templatetags/review_tags.py
index 33471b33..33879d53 100644
--- a/symposion/reviews/templatetags/review_tags.py
+++ b/symposion/reviews/templatetags/review_tags.py
@@ -1,6 +1,7 @@
 from django import template
 
 from symposion.reviews.models import Review, ReviewAssignment
+from symposion.proposals.models import ProposalBase
 
 
 register = template.Library()
@@ -12,6 +13,12 @@ def user_reviews(context):
     reviews = Review.objects.filter(user=request.user)
     return reviews
 
+@register.assignment_tag(takes_context=True)
+def user_not_reviewed(context):
+	request = context["request"]
+	already_reviewed = [r.proposal_id for r in Review.objects.filter(user=request.user)]
+	yet_to_review = ProposalBase.objects.exclude(id__in=[p.id for p in ProposalBase.objects.filter(id__in=already_reviewed)]).exclude(speaker=request.user)
+	return yet_to_review
 
 @register.assignment_tag(takes_context=True)
 def review_assignments(context):

From f1b37c98338705c4316d64970fac6ca5c1db9be6 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Thu, 25 Apr 2013 15:39:15 -0700
Subject: [PATCH 04/12] add markup for listing proposals user has yet to review

---
 symposion/templates/dashboard.html | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/symposion/templates/dashboard.html b/symposion/templates/dashboard.html
index edac0060..23b85cbc 100644
--- a/symposion/templates/dashboard.html
+++ b/symposion/templates/dashboard.html
@@ -132,6 +132,7 @@
                 <h3>{% trans "Reviews" %}</h3>
             </div>
             {% user_reviews as user_reviews %}
+            {% user_not_reviewed as user_not_reviewed %}
             <div class="dashboard-panel-content">
                 <h4>Review Sections</h4>
                 
@@ -162,6 +163,26 @@
                         {% endfor %}
                     </tbody>
                 </table>
+
+                <h4>Proposals you have yet to review</h4>
+                <table class="table table-condensed">
+                    <thead>
+                        <th>#</th>
+                        <th>Speaker / Title</th>
+                    </thead>
+                    <tbody>
+                        {% for proposal in user_not_reviewed %}
+                            <tr>
+                                <td>{{ proposal.number }}</td>
+                                <td>
+                                    <b>{{ proposal.speaker }}</b>
+                                    <br />
+                                    {{ proposal.title }}
+                                </td>
+                            </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
                 
                 {% comment %}
                 <h4>My Assignments</h4>

From 40b04240d4ae30eeb41f8a9ced7fee9fc6d2529f Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:00:58 -0700
Subject: [PATCH 05/12] added Meta class ordering by name to order speaker
 lists and dropdowns

---
 symposion/speakers/models.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/symposion/speakers/models.py b/symposion/speakers/models.py
index 0dd503ec..c86c9aa2 100644
--- a/symposion/speakers/models.py
+++ b/symposion/speakers/models.py
@@ -26,12 +26,16 @@ class Speaker(models.Model):
         default = datetime.datetime.now,
         editable = False
     )
+
+    class Meta:
+        ordering = ['name']
     
     def __unicode__(self):
         if self.user:
             return self.name
         else:
             return "?"
+
     
     def get_absolute_url(self):
         return reverse("speaker_edit")

From 0ad89365e9b320b80deaeb1173a9b9c99f9bd99b Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:02:39 -0700
Subject: [PATCH 06/12] added code to review_section view to sort by all,
 reviewed, and not reviewed

---
 symposion/reviews/views.py | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/symposion/reviews/views.py b/symposion/reviews/views.py
index 78258771..56ad0e87 100644
--- a/symposion/reviews/views.py
+++ b/symposion/reviews/views.py
@@ -62,8 +62,10 @@ def proposals_generator(request, queryset, user_pk=None, check_speaker=True):
         yield obj
 
 
+# Returns a list of all proposals, proposals reviewed by the user, or the proposals the user has yet to review
+# depending on the link user clicks in dashboard
 @login_required
-def review_section(request, section_slug, assigned=False):
+def review_section(request, section_slug, assigned=False, reviewed='all'):
     
     if not request.user.has_perm("reviews.can_review_%s" % section_slug):
         return access_not_permitted(request)
@@ -74,19 +76,28 @@ def review_section(request, section_slug, assigned=False):
     if assigned:
         assignments = ReviewAssignment.objects.filter(user=request.user).values_list("proposal__id")
         queryset = queryset.filter(id__in=assignments)
-    
-    queryset = queryset.select_related("result").select_subclasses()
-    
+
+# passing reviewed in from reviews.urls and out to review_list for appropriate template header rendering
+    if reviewed == 'all':
+        queryset = queryset.select_related("result").select_subclasses()
+        reviewed = 'all_reviews'
+    elif reviewed == 'reviewed':
+        queryset = queryset.filter(reviews__user=request.user)
+        reviewed = 'user_reviewed'
+    else:
+        queryset = queryset.exclude(reviews__user=request.user).exclude(speaker=request.user)
+        reviewed = 'user_not_reviewed'
+
     proposals = proposals_generator(request, queryset)
     
     ctx = {
         "proposals": proposals,
         "section": section,
+        "reviewed": reviewed,
     }
     
     return render(request, "reviews/review_list.html", ctx)
 
-
 @login_required
 def review_list(request, section_slug, user_pk):
     

From c2b429bacf06d9d4becac9f4a8a61254d5407625 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:03:37 -0700
Subject: [PATCH 07/12] added urls for reviewed and not-reviewed by section

---
 symposion/reviews/urls.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/symposion/reviews/urls.py b/symposion/reviews/urls.py
index b0968bca..564bd35e 100644
--- a/symposion/reviews/urls.py
+++ b/symposion/reviews/urls.py
@@ -2,7 +2,9 @@ from django.conf.urls.defaults import patterns, url
 
 
 urlpatterns = patterns("symposion.reviews.views",
-    url(r"^section/(?P<section_slug>[\w\-]+)/$", "review_section", name="review_section"),
+    url(r"^section/(?P<section_slug>[\w\-]+)/all/$", "review_section", {"reviewed": "all"}, name="review_section"),
+    url(r"^section/(?P<section_slug>[\w\-]+)/reviewed/$", "review_section", {"reviewed": "reviewed"}, name="user_reviewed"),
+    url(r"^section/(?P<section_slug>[\w\-]+)/not_reviewed/$", "review_section", {"reviewed": "not_reviewed"}, name="user_not_reviewed"),
     url(r"^section/(?P<section_slug>[\w\-]+)/assignments/$", "review_section", {"assigned": True}, name="review_section_assignments"),
     url(r"^section/(?P<section_slug>[\w\-]+)/status/$", "review_status", name="review_status"),
     url(r"^section/(?P<section_slug>[\w\-]+)/status/(?P<key>\w+)/$", "review_status", name="review_status"),

From f136a7c13be455df56ec92e0278a243ba0ddb5e0 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:05:27 -0700
Subject: [PATCH 08/12] added code in review_section iterator to add links to
 all, user reviewed, and user not-reviewed

---
 symposion/templates/dashboard.html | 50 +++---------------------------
 1 file changed, 5 insertions(+), 45 deletions(-)

diff --git a/symposion/templates/dashboard.html b/symposion/templates/dashboard.html
index 23b85cbc..0d2d23e8 100644
--- a/symposion/templates/dashboard.html
+++ b/symposion/templates/dashboard.html
@@ -132,58 +132,18 @@
                 <h3>{% trans "Reviews" %}</h3>
             </div>
             {% user_reviews as user_reviews %}
-            {% user_not_reviewed as user_not_reviewed %}
             <div class="dashboard-panel-content">
-                <h4>Review Sections</h4>
+                <h4>Reviews by Section</h4>
                 
                 <ul>
                     {% for section in review_sections %}
-                        <li><a href="{% url review_section section.section.slug %}">{{ section }}</a></li>
+                        <h5>{{ section }}</h5>
+                            <li><a href="{% url review_section section.section.slug %}">All</a></li>
+                            <li><a href="{% url user_reviewed section.section.slug %}">Reviewed by you</a></li>
+                            <li><a href="{% url user_not_reviewed section.section.slug %}">Not Reviewed by you</a></li>
                     {% endfor %}
                 </ul>
                 
-                <h4>Proposals you have reviewed</h4>
-                <table class="table table-condensed">
-                    <thead>
-                        <th>#</th>
-                        <th>Speaker / Title</th>
-                        <th>Your Vote</th>
-                    </thead>
-                    <tbody>
-                        {% for review in user_reviews %}
-                            <tr>
-                                <td>{{ review.proposal.number }}</td>
-                                <td>
-                                    <b>{{ review.proposal.speaker }}</b>
-                                    <br />
-                                    {{ review.proposal.title }}
-                                </td>
-                                <td>{{ review.vote }}</td>
-                            </tr>
-                        {% endfor %}
-                    </tbody>
-                </table>
-
-                <h4>Proposals you have yet to review</h4>
-                <table class="table table-condensed">
-                    <thead>
-                        <th>#</th>
-                        <th>Speaker / Title</th>
-                    </thead>
-                    <tbody>
-                        {% for proposal in user_not_reviewed %}
-                            <tr>
-                                <td>{{ proposal.number }}</td>
-                                <td>
-                                    <b>{{ proposal.speaker }}</b>
-                                    <br />
-                                    {{ proposal.title }}
-                                </td>
-                            </tr>
-                        {% endfor %}
-                    </tbody>
-                </table>
-                
                 {% comment %}
                 <h4>My Assignments</h4>
                 <table class="table">

From c3404459e17b37eac6794897a6316116a59ee053 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:06:25 -0700
Subject: [PATCH 09/12] added markup to render new all, user reviewed, and user
 not-reviewed pages

---
 symposion/templates/reviews/review_list.html | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/symposion/templates/reviews/review_list.html b/symposion/templates/reviews/review_list.html
index 8da4cb68..36504604 100644
--- a/symposion/templates/reviews/review_list.html
+++ b/symposion/templates/reviews/review_list.html
@@ -1,6 +1,14 @@
 {% extends "reviews/base.html" %}
 
 {% block body %}
-    <h3>{{ section }}</h3>
+	<h3>{{ section }}</h3>
+	{% if reviewed == 'all_reviews' %}
+    	<h4>All proposals</h4>
+    {% elif reviewed == 'user_reviewed' %}
+    	<h4>Proposals you have reviewed</h4>
+    {% else %}
+    	<h4>Proposals you have not yet reviewed</h4>
+    {% endif %}
+
     {% include "reviews/_review_table.html" %}
 {% endblock %}

From 9911a68a7a7c1724c84a3695912d1b6ed30950e6 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:11:55 -0700
Subject: [PATCH 10/12] removed block for template tag user_reviewed

---
 symposion/templates/dashboard.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/symposion/templates/dashboard.html b/symposion/templates/dashboard.html
index 0d2d23e8..a88b4a3f 100644
--- a/symposion/templates/dashboard.html
+++ b/symposion/templates/dashboard.html
@@ -131,7 +131,7 @@
                 <i class="icon-briefcase"></i>
                 <h3>{% trans "Reviews" %}</h3>
             </div>
-            {% user_reviews as user_reviews %}
+            
             <div class="dashboard-panel-content">
                 <h4>Reviews by Section</h4>
                 

From 22b7265649bb05e240aa9dd946d5cdd10510bc78 Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:13:10 -0700
Subject: [PATCH 11/12] removed user_reviews template tag; now being handled by
 review_section view

---
 symposion/reviews/templatetags/review_tags.py | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/symposion/reviews/templatetags/review_tags.py b/symposion/reviews/templatetags/review_tags.py
index 33879d53..abfb136d 100644
--- a/symposion/reviews/templatetags/review_tags.py
+++ b/symposion/reviews/templatetags/review_tags.py
@@ -6,20 +6,6 @@ from symposion.proposals.models import ProposalBase
 
 register = template.Library()
 
-
-@register.assignment_tag(takes_context=True)
-def user_reviews(context):
-    request = context["request"]
-    reviews = Review.objects.filter(user=request.user)
-    return reviews
-
-@register.assignment_tag(takes_context=True)
-def user_not_reviewed(context):
-	request = context["request"]
-	already_reviewed = [r.proposal_id for r in Review.objects.filter(user=request.user)]
-	yet_to_review = ProposalBase.objects.exclude(id__in=[p.id for p in ProposalBase.objects.filter(id__in=already_reviewed)]).exclude(speaker=request.user)
-	return yet_to_review
-
 @register.assignment_tag(takes_context=True)
 def review_assignments(context):
     request = context["request"]

From 306dc683b8ee3f7a8823c26cd82630364e5f4c7b Mon Sep 17 00:00:00 2001
From: florapdx <floraworleypdx@gmail.com>
Date: Mon, 29 Apr 2013 14:14:47 -0700
Subject: [PATCH 12/12] removed proposalbase import from previous version

---
 symposion/reviews/templatetags/review_tags.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/symposion/reviews/templatetags/review_tags.py b/symposion/reviews/templatetags/review_tags.py
index abfb136d..9a73f878 100644
--- a/symposion/reviews/templatetags/review_tags.py
+++ b/symposion/reviews/templatetags/review_tags.py
@@ -1,7 +1,6 @@
 from django import template
 
 from symposion.reviews.models import Review, ReviewAssignment
-from symposion.proposals.models import ProposalBase
 
 
 register = template.Library()