Storage of page history implemented
This commit is contained in:
parent
4b231c0b39
commit
dee48093be
@ -10,3 +10,13 @@ def permission_denied_msg_page(request, rel_path):
|
|||||||
def unavailable_msg_page(request, rel_path):
|
def unavailable_msg_page(request, rel_path):
|
||||||
# TODO: Add translation for this message
|
# TODO: Add translation for this message
|
||||||
messages.info(request, _("Unavailable: The Page '%s' is not available. Create it or follow a valid link, please.") % rel_path)
|
messages.info(request, _("Unavailable: The Page '%s' is not available. Create it or follow a valid link, please.") % rel_path)
|
||||||
|
|
||||||
|
|
||||||
|
def edit_success(request):
|
||||||
|
# TODO: Add translation for this message
|
||||||
|
messages.success(request, _('Thanks for editing, page stored.'))
|
||||||
|
|
||||||
|
|
||||||
|
def edit_no_change(request):
|
||||||
|
# TODO: Add translation for this message
|
||||||
|
messages.info(request, _("Nothing changed, no storage needed."))
|
||||||
|
@ -7,6 +7,7 @@ import logging
|
|||||||
from pages import messages, url_page
|
from pages import messages, url_page
|
||||||
import mycreole
|
import mycreole
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
import time
|
import time
|
||||||
from users.models import get_userprofile
|
from users.models import get_userprofile
|
||||||
import zoneinfo
|
import zoneinfo
|
||||||
@ -53,6 +54,7 @@ class meta_data(dict):
|
|||||||
class base_page(object):
|
class base_page(object):
|
||||||
PAGE_FILE_NAME = 'page'
|
PAGE_FILE_NAME = 'page'
|
||||||
META_FILE_NAME = 'meta.json'
|
META_FILE_NAME = 'meta.json'
|
||||||
|
HISTORY_FOLDER_NAME = 'history'
|
||||||
SPLITCHAR = ":"
|
SPLITCHAR = ":"
|
||||||
|
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
@ -72,17 +74,37 @@ class base_page(object):
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
self._raw_page_src = ""
|
self._raw_page_src = ""
|
||||||
|
|
||||||
|
def _store_history(self):
|
||||||
|
history_folder = os.path.join(self._path, self.HISTORY_FOLDER_NAME)
|
||||||
|
# create folder if needed
|
||||||
|
fstools.mkdir(history_folder)
|
||||||
|
# identify last_history number
|
||||||
|
flist = fstools.filelist(history_folder)
|
||||||
|
flist.sort()
|
||||||
|
if flist:
|
||||||
|
hist_number = int(os.path.basename(flist[-1])[:5]) + 1
|
||||||
|
else:
|
||||||
|
hist_number = 1
|
||||||
|
# copy file to history folder
|
||||||
|
shutil.copy(self.filename, os.path.join(history_folder, "%05d_%s" % (hist_number, self.PAGE_FILE_NAME)))
|
||||||
|
shutil.copy(self._meta_filename, os.path.join(history_folder, "%05d_%s" % (hist_number, self.META_FILE_NAME)))
|
||||||
|
|
||||||
def update_page(self, page_txt):
|
def update_page(self, page_txt):
|
||||||
from .search import update_item
|
from .search import update_item
|
||||||
#
|
if page_txt.replace("\r\n", "\n") != self.raw_page_src:
|
||||||
folder = os.path.dirname(self.filename)
|
# Store page history
|
||||||
if not os.path.exists(folder):
|
if self.raw_page_src:
|
||||||
fstools.mkdir(folder)
|
self._store_history()
|
||||||
with open(self.filename, 'w') as fh:
|
# save the new page content
|
||||||
fh.write(page_txt)
|
fstools.mkdir(os.path.dirname(self.filename))
|
||||||
update_item(self)
|
with open(self.filename, 'w') as fh:
|
||||||
#
|
fh.write(page_txt)
|
||||||
self._update_metadata()
|
# update search index
|
||||||
|
update_item(self)
|
||||||
|
# update metadata
|
||||||
|
self._update_metadata()
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def filename(self):
|
def filename(self):
|
||||||
|
@ -75,7 +75,10 @@ def edit(request, rel_path):
|
|||||||
preview = request.POST.get("preview")
|
preview = request.POST.get("preview")
|
||||||
#
|
#
|
||||||
if save is not None:
|
if save is not None:
|
||||||
p.update_page(page_txt)
|
if p.update_page(page_txt):
|
||||||
|
messages.edit_success(request)
|
||||||
|
else:
|
||||||
|
messages.edit_no_change(request)
|
||||||
return HttpResponseRedirect(url_page(request, rel_path))
|
return HttpResponseRedirect(url_page(request, rel_path))
|
||||||
elif preview is not None:
|
elif preview is not None:
|
||||||
form = EditForm(page_data=page_txt)
|
form = EditForm(page_data=page_txt)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user