From f6d3a7c84ebe6d3e6980883828dc4e315176b142 Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Fri, 22 May 2009 06:17:24 +0100 Subject: [PATCH] [svn] switched from dodgy manually writing to logfile to using python's logging module, which seems great --- expo/models.py | 6 +++++- parsers/cavetab.py | 34 +++++++++++++--------------------- parsers/surveys.py | 22 ++++++++++------------ save_carefully.py | 18 ++++++++---------- templates/controlPanel.html | 2 +- 5 files changed, 37 insertions(+), 45 deletions(-) diff --git a/expo/models.py b/expo/models.py index 70f8381..42b2be6 100644 --- a/expo/models.py +++ b/expo/models.py @@ -1,4 +1,4 @@ -import urllib, urlparse, string, os, datetime +import urllib, urlparse, string, os, datetime, logging import troggle.mptt as mptt from django.forms import ModelForm from django.db import models @@ -14,6 +14,10 @@ getcontext().prec=2 #use 2 significant figures for decimal calculations from models_survex import * +logging.basicConfig(level=logging.DEBUG, + filename=settings.LOGFILE, + filemode='w') + #This class is for adding fields and methods which all of our models will have. class TroggleModel(models.Model): new_since_parsing = models.BooleanField(default=False, editable=False) diff --git a/parsers/cavetab.py b/parsers/cavetab.py index 187c4ac..3a990fe 100644 --- a/parsers/cavetab.py +++ b/parsers/cavetab.py @@ -1,12 +1,7 @@ # -*- coding: utf-8 -*- import troggle.expo.models as models from django.conf import settings -import csv -import time - -import re -import os - +import csv, time, re, os, logging from troggle.save_carefully import save_carefully ##format of CAVETAB2.CSV is @@ -136,20 +131,18 @@ def html_to_wiki(text): text2 = "" return out -def LoadCaveTab(logfile=settings.LOGFILE): +def LoadCaveTab(): cavetab = open(os.path.join(settings.EXPOWEB, "noinfo", "CAVETAB2.CSV"),'rU') caveReader = csv.reader(cavetab) caveReader.next() # Strip out column headers - if logfile: - logfile.write("Beginning to import caves from "+str(cavetab)+"\n"+"-"*60+"\n") + logging.info("Beginning to import caves from "+str(cavetab)+"\n"+"-"*60+"\n") for katArea in ['1623', '1626']: if not models.Area.objects.filter(short_name = katArea): newArea = models.Area(short_name = katArea) newArea.save() - if logfile: - logfile.write("Added area "+str(newArea.short_name)+"\n") + logging.info("Added area "+str(newArea.short_name)+"\n") area1626 = models.Area.objects.filter(short_name = '1626')[0] area1623 = models.Area.objects.filter(short_name = '1623')[0] @@ -190,8 +183,7 @@ def LoadCaveTab(logfile=settings.LOGFILE): addToDefaultArgs(Notes, "notes") newCave, created=save_carefully(models.Cave, lookupAttribs=args, nonLookupAttribs=defaultArgs) - if logfile: - logfile.write("Added cave "+str(newCave)+"\n") + logging.info("Added cave "+str(newCave)+"\n") #If we created a new cave, add the area to it. This does mean that if a cave's identifying features have not changed, areas will not be updated from csv. if created and line[Area]: @@ -209,14 +201,14 @@ def LoadCaveTab(logfile=settings.LOGFILE): newCave.area.add(area1623) newCave.save() - if logfile: - logfile.write("Added area "+line[Area]+" to cave "+str(newCave)+"\n") + + logging.info("Added area "+line[Area]+" to cave "+str(newCave)+"\n") if created and line[UnofficialName]: newUnofficialName = models.OtherCaveName(cave = newCave, name = line[UnofficialName]) newUnofficialName.save() - if logfile: - logfile.write("Added unofficial name "+str(newUnofficialName)+" to cave "+str(newCave)+"\n") + + logging.info("Added unofficial name "+str(newUnofficialName)+" to cave "+str(newCave)+"\n") if created and line[MultipleEntrances] == '' or \ line[MultipleEntrances] == 'entrance' or \ @@ -277,8 +269,8 @@ def LoadCaveTab(logfile=settings.LOGFILE): addToArgs(Bearings, 'bearings') newEntrance = models.Entrance(**args) newEntrance.save() - if logfile: - logfile.write("Added entrance "+str(newEntrance)+"\n") + + logging.info("Added entrance "+str(newEntrance)+"\n") if line[Entrances]: entrance_letter = line[Entrances] @@ -287,8 +279,8 @@ def LoadCaveTab(logfile=settings.LOGFILE): newCaveAndEntrance = models.CaveAndEntrance(cave = newCave, entrance = newEntrance, entrance_letter = entrance_letter) newCaveAndEntrance.save() - if logfile: - logfile.write("Added CaveAndEntrance "+str(newCaveAndEntrance)+"\n") + + logging.info("Added CaveAndEntrance "+str(newCaveAndEntrance)+"\n") # lookup function modelled on GetPersonExpeditionNameLookup diff --git a/parsers/surveys.py b/parsers/surveys.py index 142a2bb..da94fe6 100644 --- a/parsers/surveys.py +++ b/parsers/surveys.py @@ -1,6 +1,4 @@ -import sys -import os -import types +import sys, os, types, logging #sys.path.append('C:\\Expo\\expoweb') #from troggle import * #os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings' @@ -26,7 +24,7 @@ def get_or_create_placeholder(year): placeholder_logbook_entry, newly_created = save_carefully(LogbookEntry, lookupAttribs, nonLookupAttribs) return placeholder_logbook_entry -def readSurveysFromCSV(logfile=None): +def readSurveysFromCSV(): try: surveytab = open(os.path.join(settings.SURVEYS, "Surveys.csv")) except IOError: @@ -43,16 +41,16 @@ def readSurveysFromCSV(logfile=None): print "There are no expeditions in the database. Please run the logbook parser." sys.exit() - if logfile: - logfile.write("Deleting all scanned images") + + logging.info("Deleting all scanned images") ScannedImage.objects.all().delete() - if logfile: - logfile.write("Deleting all survey objects") + + logging.info("Deleting all survey objects") Survey.objects.all().delete() - if logfile: - logfile.write("Beginning to import surveys from "+str(os.path.join(settings.SURVEYS, "Surveys.csv"))+"\n"+"-"*60+"\n") + + logging.info("Beginning to import surveys from "+str(os.path.join(settings.SURVEYS, "Surveys.csv"))+"\n"+"-"*60+"\n") for survey in surveyreader: #I hate this, but some surveys have a letter eg 2000#34a. The next line deals with that. @@ -74,8 +72,8 @@ def readSurveysFromCSV(logfile=None): pass surveyobj.save() - if logfile: - logfile.write("added survey " + survey[header['Year']] + "#" + surveyobj.wallet_number + "\r") + + logging.info("added survey " + survey[header['Year']] + "#" + surveyobj.wallet_number + "\r") def listdir(*directories): try: diff --git a/save_carefully.py b/save_carefully.py index f72b4fa..ee7c0cc 100644 --- a/save_carefully.py +++ b/save_carefully.py @@ -1,4 +1,4 @@ -from settings import LOGFILE +import logging def save_carefully(objectType, lookupAttribs={}, nonLookupAttribs={}): """Looks up instance using lookupAttribs and carries out the following: @@ -18,14 +18,12 @@ def save_carefully(objectType, lookupAttribs={}, nonLookupAttribs={}): setattr(instance, k, v) instance.save() - if LOGFILE: - if created: - LOGFILE.write(unicode(instance)+u' was just added to the database for the first time. \n') - - if not created and instance.new_since_parsing: - LOGFILE.write(unicode(instance)+" has been modified using Troggle, so the current script left it as is. \n") + if created: + logging.info(unicode(instance)+u' was just added to the database for the first time. \n') + + if not created and instance.new_since_parsing: + logging.info(unicode(instance)+" has been modified using Troggle, so the current script left it as is. \n") - if not created and not instance.new_since_parsing: - LOGFILE.write(unicode(instance)+" existed in the database unchanged since last parse. It was overwritten by the current script. \n") - LOGFILE.flush() + if not created and not instance.new_since_parsing: + logging.info(unicode(instance)+" existed in the database unchanged since last parse. It was overwritten by the current script. \n") return (instance, created) \ No newline at end of file diff --git a/templates/controlPanel.html b/templates/controlPanel.html index d62030f..209fa20 100644 --- a/templates/controlPanel.html +++ b/templates/controlPanel.html @@ -10,7 +10,7 @@
  • {{ job }}
  • {% endfor %} - {% if settings.LOGFILE %}See the logfile at {{settings.LOGFILE.path}} for more information.{% endif %} + {% if settings.LOGFILE %}See the logfile at {{settings.LOGFILE}} for more information.{% endif %} dismiss this message {% endif %}