forked from expo/troggle
Add some exception checking to parsers/caves.py so that missing entrance
slugs don't blow up the import. Also reduce the noise, so you just get a warning about missing slugs printed out
This commit is contained in:
parent
631ac20c12
commit
fb495119ab
@ -10,18 +10,18 @@ def readcaves():
|
|||||||
newArea.save()
|
newArea.save()
|
||||||
newArea = models.Area(short_name = "1626", parent = None)
|
newArea = models.Area(short_name = "1626", parent = None)
|
||||||
newArea.save()
|
newArea.save()
|
||||||
print "Entrances"
|
print "Reading Entrances"
|
||||||
print "list of <Slug> <Filename>"
|
#print "list of <Slug> <Filename>"
|
||||||
for filename in os.walk(settings.ENTRANCEDESCRIPTIONS).next()[2]: #Should be a better way of getting a list of files
|
for filename in os.walk(settings.ENTRANCEDESCRIPTIONS).next()[2]: #Should be a better way of getting a list of files
|
||||||
readentrance(filename)
|
readentrance(filename)
|
||||||
print "Caves"
|
print "Reading Caves"
|
||||||
for filename in os.walk(settings.CAVEDESCRIPTIONS).next()[2]: #Should be a better way of getting a list of files
|
for filename in os.walk(settings.CAVEDESCRIPTIONS).next()[2]: #Should be a better way of getting a list of files
|
||||||
readcave(filename)
|
readcave(filename)
|
||||||
|
|
||||||
def readentrance(filename):
|
def readentrance(filename):
|
||||||
with open(os.path.join(settings.ENTRANCEDESCRIPTIONS, filename)) as f:
|
with open(os.path.join(settings.ENTRANCEDESCRIPTIONS, filename)) as f:
|
||||||
contents = f.read()
|
contents = f.read()
|
||||||
context = " in file %s" % filename
|
context = "in file %s" % filename
|
||||||
entrancecontentslist = getXML(contents, "entrance", maxItems = 1, context = context)
|
entrancecontentslist = getXML(contents, "entrance", maxItems = 1, context = context)
|
||||||
if len(entrancecontentslist) == 1:
|
if len(entrancecontentslist) == 1:
|
||||||
entrancecontents = entrancecontentslist[0]
|
entrancecontents = entrancecontentslist[0]
|
||||||
@ -76,7 +76,7 @@ def readentrance(filename):
|
|||||||
e.save()
|
e.save()
|
||||||
primary = True
|
primary = True
|
||||||
for slug in slugs:
|
for slug in slugs:
|
||||||
print slug, filename
|
#print slug, filename
|
||||||
cs = models.EntranceSlug(entrance = e,
|
cs = models.EntranceSlug(entrance = e,
|
||||||
slug = slug,
|
slug = slug,
|
||||||
primary = primary)
|
primary = primary)
|
||||||
@ -87,7 +87,7 @@ def readcave(filename):
|
|||||||
with open(os.path.join(settings.CAVEDESCRIPTIONS, filename)) as f:
|
with open(os.path.join(settings.CAVEDESCRIPTIONS, filename)) as f:
|
||||||
contents = f.read()
|
contents = f.read()
|
||||||
context = " in file %s" % filename
|
context = " in file %s" % filename
|
||||||
print "Reading file %s" % filename
|
#print "Reading file %s" % filename
|
||||||
cavecontentslist = getXML(contents, "cave", maxItems = 1, context = context)
|
cavecontentslist = getXML(contents, "cave", maxItems = 1, context = context)
|
||||||
#print cavecontentslist
|
#print cavecontentslist
|
||||||
if len(cavecontentslist) == 1:
|
if len(cavecontentslist) == 1:
|
||||||
@ -146,17 +146,25 @@ def readcave(filename):
|
|||||||
c.area.add(newArea)
|
c.area.add(newArea)
|
||||||
primary = True
|
primary = True
|
||||||
for slug in slugs:
|
for slug in slugs:
|
||||||
|
try:
|
||||||
cs = models.CaveSlug(cave = c,
|
cs = models.CaveSlug(cave = c,
|
||||||
slug = slug,
|
slug = slug,
|
||||||
primary = primary)
|
primary = primary)
|
||||||
cs.save()
|
cs.save()
|
||||||
|
except:
|
||||||
|
print "Can't find text (slug): %s, skipping %s" % (slug, context)
|
||||||
|
|
||||||
primary = False
|
primary = False
|
||||||
for entrance in entrances:
|
for entrance in entrances:
|
||||||
slug = getXML(entrance, "entranceslug", maxItems = 1, context = context)[0]
|
slug = getXML(entrance, "entranceslug", maxItems = 1, context = context)[0]
|
||||||
letter = getXML(entrance, "letter", maxItems = 1, context = context)[0]
|
letter = getXML(entrance, "letter", maxItems = 1, context = context)[0]
|
||||||
|
try:
|
||||||
entrance = models.Entrance.objects.get(entranceslug__slug = slug)
|
entrance = models.Entrance.objects.get(entranceslug__slug = slug)
|
||||||
ce = models.CaveAndEntrance(cave = c, entrance_letter = letter, entrance = entrance)
|
ce = models.CaveAndEntrance(cave = c, entrance_letter = letter, entrance = entrance)
|
||||||
ce.save()
|
ce.save()
|
||||||
|
except:
|
||||||
|
print "Entrance text (slug) %s missing %s" % (slug, context)
|
||||||
|
|
||||||
|
|
||||||
def getXML(text, itemname, minItems = 1, maxItems = None, printwarnings = True, context = ""):
|
def getXML(text, itemname, minItems = 1, maxItems = None, printwarnings = True, context = ""):
|
||||||
items = re.findall("<%(itemname)s>(.*?)</%(itemname)s>" % {"itemname": itemname}, text, re.S)
|
items = re.findall("<%(itemname)s>(.*?)</%(itemname)s>" % {"itemname": itemname}, text, re.S)
|
||||||
|
Loading…
Reference in New Issue
Block a user