Changeset b68f7d6de15b487f7851223cf8af7db6054d49c8


Ignore:
Timestamp:
14.03.2013 23:18:20 (7 years ago)
Author:
Stanislaw Klekot <dozzie@…>
Branches:
b66903eafbcb1d49112014abc82c8bf683413db0, prototype, prototype-new-outfit
Children:
5882870f228cda06814a473c32b4a339ff17dbf2
Parents:
057b172786fd55343118d727b92725998b0beb0a
git-author:
Stanislaw Klekot <dozzie@…> (14.03.2013 23:18:20)
git-committer:
Stanislaw Klekot <dozzie@…> (14.03.2013 23:18:20)
Message:

Added going between edit and display wiki.

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • dashwiki/wiki/views.py

    r057b17 rb68f7d  
    11#----------------------------------------------------------------------------- 
     2# preamble (imports) {{{ 
    23 
    34from django.http import HttpResponse 
     
    56from wiki.models import WikiPage 
    67 
     8# TODO: enable CSRF protection 
     9from django.views.decorators.csrf import csrf_exempt 
     10 
    711import yaml 
    812# yaml.dump(something, default_flow_style = False) 
    913 
     14# }}} 
     15#----------------------------------------------------------------------------- 
     16# tooling {{{ 
     17 
     18def load_wiki_or_null(page_name): 
     19  from django.core.exceptions import ObjectDoesNotExist 
     20 
     21  try: 
     22    page = WikiPage.objects.get(name = page_name) 
     23  except ObjectDoesNotExist, e: 
     24    page = None 
     25 
     26  return page 
     27 
     28# }}} 
    1029#----------------------------------------------------------------------------- 
    1130 
     31@csrf_exempt 
    1232def handle_wiki(request, page_name): 
    13   if 'edit' in request.GET: 
     33  if 'cancel' in request.POST: 
     34    return redirect_to_display_wiki(request, page_name) 
     35  elif 'save' in request.POST: 
     36    return save_wiki(request, page_name) 
     37  elif 'edit' in request.GET: 
    1438    return edit_wiki(request, page_name) 
    1539  else: 
    1640    return display_wiki(request, page_name) 
    1741 
     42#----------------------------------------------------------------------------- 
     43# display_wiki() {{{ 
     44 
     45@csrf_exempt 
    1846def display_wiki(request, page_name): 
    1947  template = loader.get_template('display_wiki.html') 
    2048 
    21   from django.core.exceptions import ObjectDoesNotExist 
    22   try: 
    23     page = WikiPage.objects.get(name = page_name) 
    24     context = Context({ 
    25       'name': page_name, 
    26       'body': page.content, 
    27     }) 
    28   except ObjectDoesNotExist, e: 
    29     context = Context({ 
    30       'name':  page_name, 
    31       'body':  '<h1>Page does not exist</h1>\n\n<p>Create this page</p>', 
    32     }) 
     49  page = load_wiki_or_null(page_name) 
     50  context = Context({ 
     51    'name': page_name, 
     52    'body': page.content if page else None, 
     53    'editable': True, 
     54  }) 
    3355 
    3456  return HttpResponse(template.render(context)) 
    3557 
     58# }}} 
     59#----------------------------------------------------------------------------- 
     60# edit_wiki() {{{ 
     61 
     62@csrf_exempt 
    3663def edit_wiki(request, page_name): 
    3764  template = loader.get_template('edit_wiki.html') 
    3865 
    39   from django.core.exceptions import ObjectDoesNotExist 
    40   try: 
    41     page = WikiPage.objects.get(name = page_name) 
    42     context = Context({ 
    43       'name': page_name, 
    44       'body': page.content, 
    45     }) 
    46   except ObjectDoesNotExist, e: 
    47     context = Context({ 
    48       'name':  page_name, 
    49       'body':  None, 
    50     }) 
     66  page = load_wiki_or_null(page_name) 
     67  context = Context({ 
     68    'name': page_name, 
     69    'body': page.content if page else None, 
     70    'form_target': request.path, 
     71  }) 
    5172 
    5273  return HttpResponse(template.render(context)) 
    5374 
     75# }}} 
    5476#----------------------------------------------------------------------------- 
     77# save_wiki() {{{ 
     78 
     79@csrf_exempt 
     80def save_wiki(request, page_name): 
     81  template = loader.get_template('display_wiki.html') 
     82 
     83  page = load_wiki_or_null(page_name) 
     84  context = Context({ 
     85    'name': page_name, 
     86    'body': page.content if page else None, 
     87    'editable': True, 
     88    'message': 'Wiki page saved' 
     89  }) 
     90 
     91  return HttpResponse(template.render(context)) 
     92 
     93# }}} 
     94#----------------------------------------------------------------------------- 
     95# redirect_to_display_wiki() {{{ 
     96 
     97@csrf_exempt 
     98def redirect_to_display_wiki(request, page_name): 
     99  response = HttpResponse(status = 302) 
     100  response['location'] = request.path 
     101  return response 
     102 
     103# }}} 
     104#----------------------------------------------------------------------------- 
     105# vim:ft=python:foldmethod=marker 
  • templates/display_wiki.html

    rb1a274 rb68f7d  
    55 
    66{% block body %} 
    7 {{ body|markdown }} 
     7  {% if message %} 
     8    <div class="message"> 
     9      {{ message }} 
     10    </div> 
     11  {% endif %} 
     12 
     13  {{ body|markdown }} 
     14 
     15  {% if editable %} 
     16  <form> 
     17    <input type="submit" name="edit" value="Edit" /> 
     18  </form> 
     19  {% endif %} 
    820{% endblock %} 
  • templates/edit_wiki.html

    rb1a274 rb68f7d  
    55 
    66{% block body %} 
    7 {{ body|markdown }} 
     7 
     8<h2>Editing {{ name }}</h2> 
     9 
     10<form id="edit" method="post" action="{{ form_target }}"> 
     11  <textarea cols="80" rows="30" name="body">{{ body }}</textarea> 
     12  <div> 
     13    <input type="submit" name="save"   value="Save" /> | 
     14    <input type="submit" name="cancel" value="Cancel" /> 
     15  </div> 
     16</form> 
     17 
    818{% endblock %} 
  • templates/template.html

    rb1a274 rb68f7d  
    22<head> 
    33<title>{% block title %}&lt;default title&gt;{% endblock %} | DashWiki</title> 
     4<style type="text/css"> 
     5  .message { 
     6    color: black; 
     7    background-color: #66ff66; 
     8    border: solid 1px; 
     9  } 
     10</style> 
    411</head> 
    512<body> 
Note: See TracChangeset for help on using the changeset viewer.