/usr/share/pyshared/axiom/test/onestepapp.py is in python-axiom 0.7.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | # -*- test-case-name: axiom.test.test_upgrading.SwordUpgradeTest.test_upgradeSkipVersion -*-
"""
This is a newer version of the module found in oldapp.py, used in the
upgrading tests. It upgrades from oldapp in one step, rather than requiring an
intermediary step as morenewapp.py does.
"""
from axiom.item import Item
from axiom.attributes import text, integer, reference, inmemory
from axiom.upgrade import registerUpgrader
class ActivateHelper:
activated = 0
def activate(self):
self.activated += 1
class Adventurer(ActivateHelper, Item):
typeName = 'test_app_player'
schemaVersion = 2
name = text()
activated = inmemory()
class InventoryEntry(ActivateHelper, Item):
typeName = 'test_app_inv'
schemaVersion = 1
owner = reference()
owned = reference()
activated = inmemory()
class Sword(ActivateHelper, Item):
typeName = 'test_app_sword'
schemaVersion = 3
name = text()
damagePerHit = integer()
activated = inmemory()
def owner():
def get(self):
return self.store.findUnique(InventoryEntry,
InventoryEntry.owned == self).owner
return get,
owner = property(*owner())
def sword2to3(oldsword):
raise RuntimeError("The database does not contain any swords of version 2,"
" so you should be able to skip this version.")
registerUpgrader(sword2to3, 'test_app_sword', 2, 3)
####### DOUBLE-LEGACY UPGRADE SPECTACULAR !! ###########
# declare legacy class.
from axiom.item import declareLegacyItem
declareLegacyItem(typeName = 'test_app_sword',
schemaVersion = 2,
attributes = dict(name=text(),
damagePerHit=integer(),
owner=reference(),
activated=inmemory()))
def upgradePlayerAndSword(oldplayer):
newplayer = oldplayer.upgradeVersion('test_app_player', 1, 2)
newplayer.name = oldplayer.name
oldsword = oldplayer.sword
newsword = oldsword.upgradeVersion('test_app_sword', 1, 3,
name=oldsword.name,
damagePerHit=oldsword.hurtfulness * 2)
invent = InventoryEntry(store=newsword.store,
owner=newplayer,
owned=newsword)
return newplayer, newsword
def player1to2(oldplayer):
newplayer, newsword = upgradePlayerAndSword(oldplayer)
return newplayer
def sword1to3(oldsword):
oldPlayerType = oldsword.store.getOldVersionOf('test_app_player', 1)
oldplayer = list(oldsword.store.query(oldPlayerType,
oldPlayerType.sword == oldsword))[0]
newplayer, newsword = upgradePlayerAndSword(oldplayer)
return newsword
registerUpgrader(sword1to3, 'test_app_sword', 1, 3)
registerUpgrader(player1to2, 'test_app_player', 1, 2)
|