Change the way skills are loaded. We now load all skills when character is created, instead of just creating character and loading skills on demand. This fixes a bug in which new characters were not saving their skills to the database.
This commit is contained in:
@@ -70,8 +70,7 @@ class Character(object):
|
||||
# We do not have to be afraid of committing here and saving
|
||||
# edited character data. If this ever runs, it will be during the
|
||||
# get character list phase when pyfa first starts
|
||||
all5 = Character("All 5")
|
||||
all5.defaultLevel = 5
|
||||
all5 = Character("All 5", 5)
|
||||
eos.db.character_session.add(all5)
|
||||
eos.db.character_session.commit()
|
||||
|
||||
@@ -83,18 +82,21 @@ class Character(object):
|
||||
|
||||
if all0 is None:
|
||||
all0 = Character("All 0")
|
||||
all0.defaultLevel = None
|
||||
eos.db.character_session.add(all0)
|
||||
eos.db.character_session.commit()
|
||||
|
||||
return all0
|
||||
|
||||
def __init__(self, name):
|
||||
def __init__(self, name, defaultLevel=None):
|
||||
self.name = name
|
||||
self.__owner = None
|
||||
self.defaultLevel = None
|
||||
self.defaultLevel = defaultLevel
|
||||
self.__skills = []
|
||||
self.__skillIdMap = {}
|
||||
|
||||
for item in self.getSkillList():
|
||||
self.addSkill(Skill(item.ID, self.defaultLevel))
|
||||
|
||||
self.__implants = eos.saveddata.fit.HandledImplantBoosterList()
|
||||
self.apiKey = None
|
||||
|
||||
@@ -135,11 +137,7 @@ class Character(object):
|
||||
skill = self.__skillIdMap.get(item.ID)
|
||||
|
||||
if skill is None:
|
||||
if self.defaultLevel is None:
|
||||
skill = Skill(item, 0, False, False)
|
||||
else:
|
||||
skill = Skill(item, self.defaultLevel, False, True)
|
||||
|
||||
skill = Skill(item, self.defaultLevel, False, True)
|
||||
self.addSkill(skill)
|
||||
|
||||
return skill
|
||||
@@ -201,7 +199,7 @@ class Character(object):
|
||||
else: return val
|
||||
|
||||
class Skill(HandledItem):
|
||||
def __init__(self, item, level = 0, ro = False, learned = True):
|
||||
def __init__(self, item, level=0, ro=False, learned=True):
|
||||
self.__item = item if not isinstance(item, int) else None
|
||||
self.itemID = item.ID if not isinstance(item, int) else item
|
||||
self.__level = level if learned else None
|
||||
|
||||
@@ -190,6 +190,8 @@ class Character(object):
|
||||
if isinstance(thing, eos.types.Skill):
|
||||
if not thing.character.isDirty:
|
||||
thing.character.dirty = True
|
||||
elif thing in eos.db.character_session.dirty:
|
||||
thing.dirty = True
|
||||
|
||||
return map(lambda c: (c.ID, c.name if not c.isDirty else "{} *".format(c.name), c == sFit.character), eos.db.getCharacterList())
|
||||
|
||||
@@ -249,10 +251,8 @@ class Character(object):
|
||||
skill = eos.db.getCharacter(charID).getSkill(skillID)
|
||||
return skill.level if skill.learned else "Not learned"
|
||||
|
||||
def rename(self, charID, newName):
|
||||
char = eos.db.getCharacter(charID)
|
||||
char.name = newName
|
||||
self.saveCharacter(charID)
|
||||
def getCharName(self, charID):
|
||||
return eos.db.getCharacter(charID).name
|
||||
|
||||
def new(self):
|
||||
#@todo: seems setting skills on a new character doesn't trigger the dirty setting. Probably goes for character copy too
|
||||
@@ -263,8 +263,10 @@ class Character(object):
|
||||
eos.db.character_session.flush([char])
|
||||
return char.ID
|
||||
|
||||
def getCharName(self, charID):
|
||||
return eos.db.getCharacter(charID).name
|
||||
def rename(self, charID, newName):
|
||||
char = eos.db.getCharacter(charID)
|
||||
char.name = newName
|
||||
self.saveCharacter(charID)
|
||||
|
||||
def copy(self, charID):
|
||||
char = eos.db.getCharacter(charID)
|
||||
|
||||
Reference in New Issue
Block a user