import os import time import timeit import settings """Two currently unused functions. To be re-engineered to produce a logbook file in canonical post-2010 Parseloghtmltxt() format after importing from one of the older more artisanal formats which will then be retired. For example, 2003 used a unique HTML format and we should regularise this and deprecate the unique parser code Parseloghtml03(). """ os.environ['PYTHONPATH'] = settings.PYTHON_PATH os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings') from django.core import management from django.db import connection, close_old_connections from django.contrib.auth.models import User from django.http import HttpResponse from django.urls import reverse from troggle.core.models.caves import Cave, Entrance # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def import_auto_logbooks(): '''For logbook entries which have been 'typed up' by entering the data in a form, which makes a copy of the LBE in years//autologbook/.html this will then re-import all thoise individual LBE files. Gosh. How complicated. Thank goodness we don't do anything like this anymore. ''' import os import troggle.parsers.logbooks for pt in troggle.core.models.PersonTrip.objects.all(): pt.delete() for lbe in troggle.core.models.LogbookEntry.objects.all(): lbe.delete() for expedition in troggle.core.models.Expedition.objects.all(): directory = os.path.join(settings.EXPOWEB, "years", expedition.year, "autologbook") for root, dirs, filenames in os.walk(directory): for filename in filenames: print((os.path.join(root, filename))) parsers.logbooks.parseAutoLogBookEntry(os.path.join(root, filename)) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #Temporary function until definitive source of data transfered. from django.template.defaultfilters import slugify from django.template import loader def dumplogbooks(): '''This appears to take all the LBEs in the database and to write them all out as infividual html files so that they can be re-imported. This is the sort of silly thing you have to do when you started out thinking that the database was going to be the Source Of All Truth and then retrofitting to make inthe input files be the master. ''' def get_name(pe): if pe.nickname: return pe.nickname else: return pe.person.first_name for lbe in troggle.core.models.LogbookEntry.objects.all(): dateStr = lbe.date.strftime("%Y-%m-%d") directory = os.path.join(settings.EXPOWEB, "years", lbe.expedition.year, "autologbook") if not os.path.isdir(directory): os.mkdir(directory) filename = os.path.join(directory, dateStr + "." + slugify(lbe.title)[:50] + ".html") if lbe.cave: print((lbe.cave.reference())) trip = {"title": lbe.title, "html":lbe.text, "cave": lbe.cave.reference(), "caveOrLocation": "cave"} else: trip = {"title": lbe.title, "html":lbe.text, "location":lbe.place, "caveOrLocation": "location"} pts = [pt for pt in lbe.persontrip_set.all() if pt.personexpedition] persons = [{"name": get_name(pt.personexpedition), "TU": pt.time_underground, "author": pt.is_logbook_entry_author} for pt in pts] f = open(filename, "wb") template = loader.get_template('dataformat/logbookentry.html') context = {'trip': trip, 'persons': persons, 'date': dateStr, 'expeditionyear': lbe.expedition.year} output = template.render(context) f.write(str(output).encode( "utf-8" )) f.close() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -