Commit 7e640e39 by Bridger Maxwell

Merge

parents ccacc90c 84471d17
...@@ -127,7 +127,7 @@ def profile(request): ...@@ -127,7 +127,7 @@ def profile(request):
subtitle = s.get('subtitle') if s.get('subtitle') else format subtitle = s.get('subtitle') if s.get('subtitle') else format
if format and graded_total[1] > 0: if format and graded_total[1] > 0:
format_scores = total_scores[ format ] if format in total_scores else [] format_scores = total_scores[ format ] if format in total_scores else []
format_scores.append( graded_total ) format_scores.append( graded_total + (s.get("name"),) )
total_scores[ format ] = format_scores total_scores[ format ] = format_scores
score={'section':s.get("name"), score={'section':s.get("name"),
...@@ -165,18 +165,17 @@ def profile(request): ...@@ -165,18 +165,17 @@ def profile(request):
for i in range(12): for i in range(12):
if i < len(homework_scores): if i < len(homework_scores):
percentage = homework_scores[i][0] / float(homework_scores[i][1]) percentage = homework_scores[i][0] / float(homework_scores[i][1])
summary = "{0:.0%} ({1:g}/{2:g})".format( percentage, homework_scores[i][0], homework_scores[i][1] ) summary = "Homework {0} - {1} - {2:.0%} ({3:g}/{4:g})".format( i + 1, homework_scores[i][2] , percentage, homework_scores[i][0], homework_scores[i][1] )
else: else:
percentage = 0 percentage = 0
summary = "0% (?/?)" summary = "Unreleased Homework {0} - 0% (?/?)".format(i + 1)
if settings.GENERATE_PROFILE_SCORES: if settings.GENERATE_PROFILE_SCORES:
points_possible = random.randrange(10, 50) points_possible = random.randrange(10, 50)
points_earned = random.randrange(5, points_possible) points_earned = random.randrange(5, points_possible)
percentage = points_earned / float(points_possible) percentage = points_earned / float(points_possible)
summary = "{0:.0%} ({1:g}/{2:g})".format( percentage, points_earned, points_possible ) summary = "Random Homework - {0:.0%} ({1:g}/{2:g})".format( percentage, points_earned, points_possible )
summary = "Homework {0} - {1}".format(i + 1, summary)
label = "HW {0:02d}".format(i + 1) label = "HW {0:02d}".format(i + 1)
homework_percentages.append( {'percentage': percentage, 'summary': summary, 'label' : label} ) homework_percentages.append( {'percentage': percentage, 'summary': summary, 'label' : label} )
...@@ -189,18 +188,17 @@ def profile(request): ...@@ -189,18 +188,17 @@ def profile(request):
for i in range(12): for i in range(12):
if i < len(lab_scores): if i < len(lab_scores):
percentage = lab_scores[i][0] / float(lab_scores[i][1]) percentage = lab_scores[i][0] / float(lab_scores[i][1])
summary = "{0:.0%} ({1:g}/{2:g})".format( percentage, lab_scores[i][0], lab_scores[i][1] ) summary = "Lab {0} - {1} - {2:.0%} ({3:g}/{4:g})".format( i + 1, lab_scores[i][2] , percentage, lab_scores[i][0], lab_scores[i][1] )
else: else:
percentage = 0 percentage = 0
summary = "0% (?/?)" summary = "Unreleased Lab {0} - 0% (?/?)".format(i + 1)
if settings.GENERATE_PROFILE_SCORES: if settings.GENERATE_PROFILE_SCORES:
points_possible = random.randrange(10, 50) points_possible = random.randrange(10, 50)
points_earned = random.randrange(5, points_possible) points_earned = random.randrange(5, points_possible)
percentage = points_earned / float(points_possible) percentage = points_earned / float(points_possible)
summary = "{0:.0%} ({1:g}/{2:g})".format( percentage, points_earned, points_possible ) summary = "Random Lab - {0:.0%} ({1:g}/{2:g})".format( percentage, points_earned, points_possible )
summary = "Lab {0} - {1}".format(i + 1, summary)
label = "Lab {0:02d}".format(i + 1) label = "Lab {0:02d}".format(i + 1)
lab_percentages.append( {'percentage': percentage, 'summary': summary, 'label' : label} ) lab_percentages.append( {'percentage': percentage, 'summary': summary, 'label' : label} )
......
...@@ -3,6 +3,7 @@ import os ...@@ -3,6 +3,7 @@ import os
from django import forms from django import forms
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.cache import cache
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.db.models import signals from django.db.models import signals
...@@ -55,10 +56,16 @@ class Article(models.Model): ...@@ -55,10 +56,16 @@ class Article(models.Model):
raise ShouldHaveExactlyOneRootSlug() raise ShouldHaveExactlyOneRootSlug()
def get_url(self): def get_url(self):
"""Return the Wiki URL for an article""" """Return the Wiki URL for an article"""
url = self.slug + "/" url = self.slug + "/"
if (self.parent): if self.parent_id:
url = self.parent.get_url() + url parent_url = cache.get("wiki_url-" + str(self.parent_id))
if parent_url is None:
parent_url = self.parent.get_url()
url = parent_url + url
cache.set("wiki_url-" + str(self.id), url, 60*60)
return url return url
......
...@@ -9,6 +9,7 @@ urlpatterns = patterns('', ...@@ -9,6 +9,7 @@ urlpatterns = patterns('',
url(r'^history(/[a-zA-Z\d/_-]*)/([0-9]*)/?$', 'simplewiki.views.history', name='wiki_history'), url(r'^history(/[a-zA-Z\d/_-]*)/([0-9]*)/?$', 'simplewiki.views.history', name='wiki_history'),
url(r'^search_related(/[a-zA-Z\d/_-]*)/?$', 'simplewiki.views.search_add_related', name='search_related'), url(r'^search_related(/[a-zA-Z\d/_-]*)/?$', 'simplewiki.views.search_add_related', name='search_related'),
url(r'^random/?$', 'simplewiki.views.random_article', name='wiki_random'), url(r'^random/?$', 'simplewiki.views.random_article', name='wiki_random'),
url(r'^revision_feed/([0-9]*)/?$', 'simplewiki.views.revision_feed', name='wiki_revision_feed'),
url(r'^search/?$', 'simplewiki.views.search_articles', name='wiki_search_articles'), url(r'^search/?$', 'simplewiki.views.search_articles', name='wiki_search_articles'),
url(r'^list/?$', 'simplewiki.views.search_articles', name='wiki_list_articles'), #Just an alias for the search, but you usually don't submit a search term url(r'^list/?$', 'simplewiki.views.search_articles', name='wiki_list_articles'), #Just an alias for the search, but you usually don't submit a search term
# url(r'^/?([a-zA-Z\d/_-]*)/_related/add/$', 'simplewiki.views.add_related', name='add_related'), # url(r'^/?([a-zA-Z\d/_-]*)/_related/add/$', 'simplewiki.views.add_related', name='add_related'),
......
...@@ -232,7 +232,7 @@ def history(request, wiki_url, page=1): ...@@ -232,7 +232,7 @@ def history(request, wiki_url, page=1):
except ValueError: except ValueError:
p = 1 p = 1
history = Revision.objects.filter(article__exact = article).order_by('-counter') history = Revision.objects.filter(article__exact = article).order_by('-counter').select_related('previous_revision__counter', 'revision_user', 'wiki_article')
if request.method == 'POST': if request.method == 'POST':
if request.POST.__contains__('revision'): #They selected a version, but they can be either deleting or changing the version if request.POST.__contains__('revision'): #They selected a version, but they can be either deleting or changing the version
...@@ -297,6 +297,37 @@ def history(request, wiki_url, page=1): ...@@ -297,6 +297,37 @@ def history(request, wiki_url, page=1):
d.update(csrf(request)) d.update(csrf(request))
return render_to_response('simplewiki_history.html', d) return render_to_response('simplewiki_history.html', d)
def revision_feed(request, page=1):
if not request.user.is_superuser:
return redirect('/')
page_size = 10
try:
p = int(page)
except ValueError:
p = 1
history = Revision.objects.order_by('-revision_date').select_related('revision_user', 'article', 'previous_revision')
page_count = (history.count()+(page_size-1)) / page_size
if p > page_count:
p = 1
beginItem = (p-1) * page_size
next_page = p + 1 if page_count > p else None
prev_page = p - 1 if p > 1 else None
d = {'wiki_page': p,
'wiki_next_page': next_page,
'wiki_prev_page': prev_page,
'wiki_history': history[beginItem:beginItem+page_size],
'show_delete_revision' : request.user.is_superuser,}
d.update(csrf(request))
return render_to_response('simplewiki_revision_feed.html', d)
def search_articles(request): def search_articles(request):
if not request.user.is_authenticated(): if not request.user.is_authenticated():
...@@ -333,9 +364,8 @@ def search_articles(request): ...@@ -333,9 +364,8 @@ def search_articles(request):
results = results._search(Q(current_revision__contents__icontains = queryword) | \ results = results._search(Q(current_revision__contents__icontains = queryword) | \
Q(title__icontains = queryword)) Q(title__icontains = queryword))
results.select_related('current_revision__deleted') results = results.select_related('current_revision__deleted')
print [(article.title.lower(), article.get_url()) for article in results]
results = sorted(results, key=lambda article: (article.current_revision.deleted, article.get_url().lower()) ) results = sorted(results, key=lambda article: (article.current_revision.deleted, article.get_url().lower()) )
if len(results) == 1 and querystring: if len(results) == 1 and querystring:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment