- fix tiny bug where player logging in has no record gets a record

made.


git-svn-id: svn://svn.code.sf.net/p/crossfire/code/trunk/maps@2903 282e977c-c81d-0410-88c4-b93c2d0d6712
master
temitchell 2004-09-01 03:08:04 +00:00
parent 6a517e7fe6
commit d185c2a08a
2 changed files with 17 additions and 8 deletions

View File

@ -1,6 +1,6 @@
# CFDataFile.py - CFData classes # CFDataFile.py - CFData classes
# #
# Copyright (C) 2002 Joris Bontje # Copyright (C) 2004 Todd Mitchell
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -25,23 +25,24 @@ class CFDataFile:
'''Plain text storage for Crossfire data''' '''Plain text storage for Crossfire data'''
def __init__(self, datafile_name): def __init__(self, datafile_name):
'''make datafile paths for datafile 'object'
- these all go in ../var/crossfire/datafiles to keep the local dir clean'''
self.datafile_name = datafile_name self.datafile_name = datafile_name
self.filename = os.path.join((CFPython.GetLocalDirectory()),'datafiles',datafile_name) self.filename = os.path.join((CFPython.GetLocalDirectory()),'datafiles',datafile_name)
def exists(self): def exists(self):
'''checks for datafile''' '''checks for datafile - no need to load it yet'''
if os.path.isfile(self.filename): if os.path.isfile(self.filename):
return 1 return 1
else: else:
return 0 return 0
def make_file(self, header): def make_file(self, header):
'''creates a datafile, making the column header from a list''' '''creates a datafile, making the column header from a list passed in'''
try: try:
file = open(self.filename,'w') file = open(self.filename,'w')
except: except:
print "Can't create datafile %s" % self.datafile_name print "Can't create datafile %s" % self.datafile_name
return 0
else: else:
temp = [] temp = []
for item in header: for item in header:
@ -53,7 +54,7 @@ class CFDataFile:
def getData(self): def getData(self):
'''Gets the formatted file as a dictionary '''Gets the formatted file as a dictionary
The # key contains the column headers for the file''''' The # key contains the column headers for the file and indicates the 'primary' key'''
try: try:
file = open(self.filename,'r') file = open(self.filename,'r')
except: except:
@ -70,7 +71,7 @@ class CFDataFile:
return DF return DF
def putData(self, dic): def putData(self, dic):
'''Writes dictionary to formatted file''' '''Writes dictionary to formatted file - uses | character as a delimiter'''
try: try:
file = open(self.filename,'w') file = open(self.filename,'w')
except: except:
@ -92,7 +93,9 @@ class CFDataFile:
file.close() file.close()
class CFData: class CFData:
'''CFData Object is basically a dictionary parsed from the datafile''' '''CFData Object is basically a dictionary parsed from the datafile -
serves to pass back and forth a dictionary containing the datafile header
and the desired record to the caller - easier to read the '''
def __init__(self, filename, header): def __init__(self, filename, header):
self.header = header self.header = header
@ -101,6 +104,9 @@ class CFData:
if self.datafile.exists(): if self.datafile.exists():
self.datadb = self.datafile.getData() self.datadb = self.datafile.getData()
if self.datadb['#'] != self.header: if self.datadb['#'] != self.header:
# see if header in calling object matches header in file
# raise an alert but do nothing yet -
# indicates possible upgrade of caller, will flesh this out later
raise 'Header does not match! You may need to fix the object or the datafile.' raise 'Header does not match! You may need to fix the object or the datafile.'
else: else:
self.datafile.make_file(self.header) self.datafile.make_file(self.header)

View File

@ -34,7 +34,10 @@ ip = CFPython.WhatIsMessage()
mail = CFMail.CFMail() mail = CFMail.CFMail()
log = CFLog.CFLog() log = CFLog.CFLog()
total = mail.countmail(name) total = mail.countmail(name)
log.login_update(name, ip) if log.info(name):
log.login_update(name, ip)
else:
log.create(name)
if total > 0: if total > 0:
CFPython.Write('You have some mail waiting for you', activator) CFPython.Write('You have some mail waiting for you', activator)