From b69deb698d676cc2faad58e8dba4dc6c2c7694b4 Mon Sep 17 00:00:00 2001 From: Bridger Maxwell Date: Fri, 29 Jun 2012 12:05:55 -0400 Subject: [PATCH] Got the view page of the wiki rendering. Most of it is a styling mess. --- lms/djangoapps/courseware/courses.py | 1 + lms/djangoapps/simplewiki/admin.py | 2 +- lms/djangoapps/simplewiki/models.py | 10 +---- lms/djangoapps/simplewiki/urls.py | 20 --------- lms/djangoapps/simplewiki/views.py | 18 ++++++-- lms/templates/course_navigation.html | 2 +- lms/templates/simplewiki/simplewiki_base.html | 43 ++++++++----------- lms/urls.py | 20 ++++++++- 8 files changed, 55 insertions(+), 61 deletions(-) delete mode 100644 lms/djangoapps/simplewiki/urls.py diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index 983e2f5eaf..a731a08151 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -14,6 +14,7 @@ _FIELDS = ['number', # 6.002x 'path', # /some/absolute/filepath/6.002x --> course.xml is in here. 'instructors', # ['Anant Agarwal'] 'institution', # "MIT" + 'wiki_namespace', 'grader', # a courseware.graders.CourseGrader object #'start', # These should be datetime fields diff --git a/lms/djangoapps/simplewiki/admin.py b/lms/djangoapps/simplewiki/admin.py index b53ace1a7a..8d1094bbc0 100644 --- a/lms/djangoapps/simplewiki/admin.py +++ b/lms/djangoapps/simplewiki/admin.py @@ -34,7 +34,7 @@ class ArticleAdminForm(forms.ModelForm): model = Article class ArticleAdmin(admin.ModelAdmin): - list_display = ('created_by', 'slug', 'modified_on', 'parent') + list_display = ('created_by', 'slug', 'modified_on', 'namespace') search_fields = ('slug',) prepopulated_fields = {'slug': ('title',) } inlines = [RevisionInline] diff --git a/lms/djangoapps/simplewiki/models.py b/lms/djangoapps/simplewiki/models.py index 5fbcb1719c..4c3f393d1d 100644 --- a/lms/djangoapps/simplewiki/models.py +++ b/lms/djangoapps/simplewiki/models.py @@ -56,15 +56,7 @@ class Article(models.Model): try: return Article.objects.filter(slug__exact = "")[0] except: - raise ShouldHaveExactlyOneRootSlug() - - @models.permalink - def get_absolute_url(self): - return ('wiki_view', [self.slug]) - - def get_full_slug(self): - # TODO: Return namespace : slug - return self.slug + raise ShouldHaveExactlyOneRootSlug() # @classmethod # def get_url_reverse(cls, path, article, return_list=[]): diff --git a/lms/djangoapps/simplewiki/urls.py b/lms/djangoapps/simplewiki/urls.py deleted file mode 100644 index a41ce3617b..0000000000 --- a/lms/djangoapps/simplewiki/urls.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.conf.urls.defaults import * - -urlpatterns = patterns('', - url(r'^$', 'simplewiki.views.root_redirect', name='wiki_root'), - url(r'^view(/[a-zA-Z\d/_-]*)/?$', 'simplewiki.views.view', name='wiki_view'), - url(r'^view_revision/([0-9]*)(/[a-zA-Z\d/_-]*)/?$', 'simplewiki.views.view_revision', name='wiki_view_revision'), - url(r'^edit(/[a-zA-Z\d/_-]*)/?$', 'simplewiki.views.edit', name='wiki_edit'), - url(r'^create(/[a-zA-Z\d/_-]*)/?$', 'simplewiki.views.create', name='wiki_create'), - 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'^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'^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/remove/(\d+)$', 'simplewiki.views.remove_related', name='wiki_remove_relation'), -# url(r'^/?([a-zA-Z\d/_-]*)/_add_attachment/$', 'simplewiki.views_attachments.add_attachment', name='add_attachment'), -# url(r'^/?([a-zA-Z\d/_-]*)/_view_attachment/(.+)?$', 'simplewiki.views_attachments.view_attachment', name='wiki_view_attachment'), -# url(r'^(.*)$', 'simplewiki.views.encode_err', name='wiki_encode_err') -) diff --git a/lms/djangoapps/simplewiki/views.py b/lms/djangoapps/simplewiki/views.py index f3cc06f946..ea4d7e2542 100644 --- a/lms/djangoapps/simplewiki/views.py +++ b/lms/djangoapps/simplewiki/views.py @@ -4,7 +4,7 @@ from django.contrib.auth.decorators import login_required from django.core.context_processors import csrf from django.core.urlresolvers import reverse from django.db.models import Q -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect, Http404 from django.utils import simplejson from django.utils.translation import ugettext_lazy as _ from mitxmako.shortcuts import render_to_response @@ -15,6 +15,14 @@ from models import Revision, Article, CreateArticleForm, RevisionFormWithTitle, import wiki_settings def view(request, course_id, slug, namespace=None): + try: + course = settings.COURSES_BY_ID[course_id] + if not namespace: + namespace = course.wiki_namespace + except KeyError: + raise Http404("Course not found") + + (article, err) = get_article(request, slug, namespace if namespace else course_id ) if err: return err @@ -27,9 +35,11 @@ def view(request, course_id, slug, namespace=None): 'wiki_write': article.can_write_l(request.user), 'wiki_attachments_write': article.can_attach(request.user), 'wiki_current_revision_deleted' : not (article.current_revision.deleted == 0), - 'wiki_title' : article.title + " - MITX %s Wiki" % course_number + 'wiki_title' : article.title + " - edX %s Wiki" % course.title, + 'course' : course, } d.update(csrf(request)) + print d return render_to_response('simplewiki/simplewiki_view.html', d) def view_revision(request, course_id, slug, revision_number, namespace=None): @@ -445,8 +455,8 @@ def get_article(request, slug, namespace): article = None try: - article = Article.objects.get(slug__exact == slug )#, namespace__name__exact = namespace) - except: + article = Article.objects.get( slug__exact = slug )#, namespace__name__exact = namespace) + except Article.DoesNotExist: #TODO: We need to pass a url for creating the article here err = not_found(request, slug) diff --git a/lms/templates/course_navigation.html b/lms/templates/course_navigation.html index 24048dd2b9..8bda22148d 100644 --- a/lms/templates/course_navigation.html +++ b/lms/templates/course_navigation.html @@ -17,7 +17,7 @@ def url_class(url):
  • Textbook
  • Discussion
  • % endif -
  • Wiki
  • +
  • Wiki
  • % if user.is_authenticated():
  • Profile
  • % endif diff --git a/lms/templates/simplewiki/simplewiki_base.html b/lms/templates/simplewiki/simplewiki_base.html index 6a9be3bf08..81ea188088 100644 --- a/lms/templates/simplewiki/simplewiki_base.html +++ b/lms/templates/simplewiki/simplewiki_base.html @@ -1,15 +1,19 @@ ##This file is based on the template from the SimpleWiki source which carries the GPL license -<%inherit file="main.html"/> -<%namespace name='static' file='static_content.html'/> +<%inherit file="../main.html"/> +<%namespace name='static' file='../static_content.html'/> + +<%! + from django.core.urlresolvers import reverse +%> +## A convenience function that calls reverse with the kwargs course_id, namespace, and slug +<%def name="wiki_reverse(wiki_page)"> + ${reverse(wiki_page, kwargs={'course_id': course.id, 'namespace' : wiki_article.namespace.name, 'slug' : wiki_article.slug})} + <%block name="headextra"> - <%! - from django.core.urlresolvers import reverse - %> -