class IndexAction(AdminAction):
    def _prepare(self, appCode):
        appService = AppService(self.application.getAppConfigPath())
        self.appconfig = appService.getAppConfig(appCode=appCode)
        self.spell = Spell()
        self.spellService = SpellService(self.application.spellFolder, appCode)

    def get(self, *args, **kwargs):
        app = self.checkAppAccess(args)
        self._prepare(app.code)
        self._render()

    def post(self, *args, **kwargs):
        app = self.checkAppAccess(args)
        self._prepare(app.code)
        data = {"key": {}, "tag": {}}

        for eventCode in self.appconfig["keys"]:
            for spellKey in self.spell.keyFields:
                val = self.get_argument("spellKey|{}|{}".format(spellKey, eventCode), default=None)
                if val:
                    if not data["key"].has_key(eventCode):
                        data["key"][eventCode] = {}

                    data["key"][eventCode][spellKey] = val

        for tagCode in self.appconfig["tags"]:
            for spellKey in self.spell.tagFields:
                val = self.get_argument("spellTag|{}|{}".format(spellKey, tagCode), default=None)
                if val:
                    if not data["tag"].has_key(tagCode):
                        data["tag"][tagCode] = {}

                    data["tag"][tagCode][spellKey] = val

        self.spellService.save(data)
        self._render()

    def _render(self):
        self.render(
            "admin/spell/index.jinja2",
            {"spell": self.spell, "appconfig": self.appconfig, "spellService": self.spellService},
        )
 def _prepare(self, appCode):
     appService = AppService(self.application.getAppConfigPath())
     self.appconfig = appService.getAppConfig(appCode=appCode)
     self.spell = Spell()
     self.spellService = SpellService(self.application.spellFolder, appCode)