Exemple #1
0
    def addinfo(self):
        """ Add known facts to templating namespace.
        """
        # Basic values
        self.ns.watch_path = self.job.config.path
        self.ns.relpath = None
        for watch in self.job.config.path:
            if self.ns.pathname.startswith(watch.rstrip('/') + '/'):
                self.ns.relpath = os.path.dirname(
                    self.ns.pathname)[len(watch.rstrip('/')) + 1:]
                break

        # Build indicator flags for target state from filename
        flags = self.ns.pathname.split(os.sep)
        flags.extend(flags[-1].split('.'))
        self.ns.flags = set(i for i in flags if i)

        # Metafile stuff
        announce = self.metadata.get("announce", None)
        if announce:
            self.ns.tracker_alias = configuration.map_announce2alias(announce)

        main_file = self.ns.info_name
        if "files" in self.metadata["info"]:
            main_file = list(
                sorted((i["length"], i["path"][-1])
                       for i in self.metadata["info"]["files"]))[-1][1]
        self.ns.filetype = os.path.splitext(main_file)[1]

        # Add name traits
        kind, info = traits.name_trait(self.ns.info_name, add_info=True)
        self.ns.traits = Bunch(info)
        self.ns.traits.kind = kind
        self.ns.label = '/'.join(
            traits.detect_traits(name=self.ns.info_name,
                                 alias=self.ns.tracker_alias,
                                 filetype=self.ns.filetype)).strip('/')

        # Finally, expand commands from templates
        self.ns.commands = []
        for key, cmd in sorted(self.job.custom_cmds.items()):
            try:
                self.ns.commands.append(
                    formatting.expand_template(cmd, self.ns))
            except error.LoggableError as exc:
                self.job.LOG.error("While expanding '%s' custom command: %s" %
                                   (key, exc))
Exemple #2
0
    def addinfo(self):
        """ Add known facts to templating namespace.
        """
        # Basic values
        self.ns.watch_path = self.job.config.path
        self.ns.relpath = None
        for watch in self.job.config.path:
            if self.ns.pathname.startswith(watch.rstrip('/') + '/'):
                self.ns.relpath = os.path.dirname(self.ns.pathname)[len(watch.rstrip('/'))+1:]
                break

        # Build indicator flags for target state from filename
        flags = self.ns.pathname.split(os.sep)
        flags.extend(flags[-1].split('.'))
        self.ns.flags = set(i for i in flags if i)

        # Metafile stuff
        announce = self.metadata.get("announce", None)
        if announce:
            self.ns.tracker_alias = configuration.map_announce2alias(announce)

        main_file = self.ns.info_name
        if "files" in self.metadata["info"]:
            main_file = list(sorted((i["length"], i["path"][-1])
                for i in self.metadata["info"]["files"]))[-1][1]
        self.ns.filetype = os.path.splitext(main_file)[1]

        # Add name traits
        kind, info = traits.name_trait(self.ns.info_name, add_info=True)
        self.ns.traits = Bunch(info)
        self.ns.traits.kind = kind
        self.ns.label = '/'.join(traits.detect_traits(
            name=self.ns.info_name, alias=self.ns.tracker_alias, filetype=self.ns.filetype)).strip('/')

        # Finally, expand commands from templates
        self.ns.commands = []
        for key, cmd in sorted(self.job.custom_cmds.items()):
            try:
                self.ns.commands.append(formatting.expand_template(cmd, self.ns))
            except error.LoggableError, exc:
                self.job.LOG.error("While expanding '%s' custom command: %s" % (key, exc))
    def tv_mapper(obj, name, templ):
        "Helper for TV name mapping"
        try:
            return obj._fields[name]
        except KeyError:
            itemname = obj.name
            result = ""

            kind, info = traits.name_trait(itemname, add_info=True)
            if kind == "tv":
                try:
                    info["show"] = ' '.join([
                        i.capitalize()
                        for i in info["show"].replace('.', ' ').replace(
                            '_', ' ').split()
                    ])
                    result = templ % info
                except KeyError, exc:
                    #print exc
                    pass

            obj._fields[name] = result
            return result