13
13
from nevow import athena
15
15
from axiom import iaxiom, item, attributes, userbase
16
from axiom.scheduler import SubScheduler
17
16
from axiom.upgrade import registerAttributeCopyingUpgrader
18
17
from axiom.dependency import dependsOn
19
18
from axiom.upgrade import registerUpgrader
50
49
C{Filter} can also be configured to just look at Postini headers and make a
51
50
determination based on them.
55
54
usePostiniScore = attributes.boolean(doc="""
56
55
Indicate whether or not to classify based on Postini headers.
214
212
filter.usePostiniScore = old.usePostiniScore
215
213
filter.postiniThreshhold = old.postiniThreshhold
216
filter.scheduler = s.findOrCreate(SubScheduler)
217
214
filter.messageSource = s.findOrCreate(MessageSource)
218
215
filter.tiSource = s.findOrCreate(_TrainingInstructionSource)
221
218
registerUpgrader(_filter2to3, Filter.typeName, 2, 3)
220
item.declareLegacyItem(Filter.typeName, 3,
221
dict(messageSource=attributes.reference(),
222
scheduler=attributes.reference(),
223
tiSource=attributes.reference(),
224
usePostiniScore=attributes.boolean(default=False,allowNone=False),
225
postiniThreshhold=attributes.ieee754_double(default=0.03)))
227
def _filter3to4(old):
229
Drop the scheduler reference, preserve everything else.
231
return old.upgradeVersion(
233
usePostiniScore=old.usePostiniScore,
234
postiniThreshhold=old.postiniThreshhold,
235
messageSource=old.messageSource,
236
tiSource=old.tiSource)
238
registerUpgrader(_filter3to4, Filter.typeName, 3, 4)
224
241
class HamFilterFragment(ThemedFragment):
225
242
fragmentName = 'ham-filter'