示例#1
0
文件: rss.py 项目: crawln45/tranny
def create():
    status = 1
    try:
        feed = "rss_{0}".format(request.values['new_short_name'])
        if config.has_section(feed):
            raise KeyError()
        else:
            config.add_section(feed)
    except KeyError:
        msg = "Duplicate feed name"
    else:
        try:
            config.set(feed, "url", request.values['new_url'])
            config.set(feed, "interval", request.values['new_interval'])
            config.set(feed, "enabled", request.values['new_enabled'])

            if config.save():
                msg = "RSS Feed saved successfully: {0}".format(request.values['new_short_name'])
                status = 0
            else:
                msg = "Error saving config to disk."
        except KeyError:
            msg = "Failed to save config. Malformed request: {0}".format(feed)
    if status == 1:
        logger.error(msg)
    else:
        logger.info(msg)
    return redirect(url_for(".index"))
示例#2
0
文件: rss.py 项目: kannibalox/tranny
def create():
    """ Create a new RSS feed over XHR

    :return: Feed creation status response
    :rtype: Response
    """
    status = api.STATUS_FAIL

    feed = "rss_{0}".format(re.sub('[^0-9a-zA-Z]+', '_', request.values['feed'].lower()))
    if config.has_section(feed):
        msg = "Duplicate feed name"
    else:
        config.add_section(feed)
        try:
            config.set(feed, "url", request.values['url'])
            config.set(feed, "interval", request.values['interval'])
            config.set(feed, "enabled", request.values['enabled'])
            if config.save():
                msg = "Feed {0} saved successfully, reloading page.".format(request.values['feed'])
                status = api.STATUS_OK
            else:
                msg = "Error saving config to disk."
        except KeyError:
            msg = "Failed to save config. Malformed request: {0}".format(feed)
    log.error(msg) if status == api.STATUS_FAIL else log.info(msg)
    return dict(msg=msg, status=status)
示例#3
0
文件: rss.py 项目: bobbintb/tranny
def create():
    """ Create a new RSS feed over XHR

    :return: Feed creation status response
    :rtype: Response
    """
    status = api.STATUS_FAIL

    feed = "rss_{0}".format(re.sub('[^0-9a-zA-Z]+', '_', request.values['feed'].lower()))
    if config.has_section(feed):
        msg = "Duplicate feed name"
    else:
        config.add_section(feed)
        try:
            config.set(feed, "url", request.values['url'])
            config.set(feed, "interval", request.values['interval'])
            config.set(feed, "enabled", request.values['enabled'])
            if config.save():
                msg = "Feed {0} saved successfully, reloading page.".format(request.values['feed'])
                status = api.STATUS_OK
            else:
                msg = "Error saving config to disk."
        except KeyError:
            msg = "Failed to save config. Malformed request: {0}".format(feed)
    log.error(msg) if status == api.STATUS_FAIL else log.info(msg)
    return dict(msg=msg, status=status)
示例#4
0
文件: rss.py 项目: kannibalox/tranny
def delete():
    """ Delete a RSS feed from the config over XHR

    :return: Deletion status response
    :rtype: dict
    """
    status = api.STATUS_FAIL

    feed = "rss_{0}".format(re.sub('[^0-9a-zA-Z]+', '_', request.values['feed'].lower()))
    if not config.has_section(feed):
        msg = "Invalid feed name"
    else:
        if config.remove_section(feed) and config.save():
            msg = "RSS Feed deleted successfully: {0}".format(request.values['feed'])
            status = api.STATUS_OK
        else:
            msg = "Failed to remove configuration section: {0}".format(feed)
    return dict(msg=msg, status=status)
示例#5
0
文件: rss.py 项目: crawln45/tranny
def save():
    status = 1
    try:
        feed = "rss_{0}".format(request.values['feed'])
        if not config.has_section(feed):
            raise KeyError()
    except KeyError:
        msg = "Invalid feed name"
    else:
        try:
            config.set(feed, "url", request.values['url'])
            config.set(feed, "interval", request.values['interval'])
            config.set(feed, "enabled", request.values['enabled'])
            msg = "RSS Feed saved successfully: {0}".format(request.values['feed'])
            status = 0
        except KeyError:
            msg = "Failed to save config. Malformed request: {0}".format(feed)
    return dumps({'msg': msg, 'status': status})
示例#6
0
文件: rss.py 项目: bobbintb/tranny
def delete():
    """ Delete a RSS feed from the config over XHR

    :return: Deletion status response
    :rtype: dict
    """
    status = api.STATUS_FAIL

    feed = "rss_{0}".format(re.sub('[^0-9a-zA-Z]+', '_', request.values['feed'].lower()))
    if not config.has_section(feed):
        msg = "Invalid feed name"
    else:
        if config.remove_section(feed) and config.save():
            msg = "RSS Feed deleted successfully: {0}".format(request.values['feed'])
            status = api.STATUS_OK
        else:
            msg = "Failed to remove configuration section: {0}".format(feed)
    return dict(msg=msg, status=status)
示例#7
0
文件: rss.py 项目: crawln45/tranny
def delete():
    status = 1
    try:
        feed = "rss_{0}".format(request.values['feed'])
        if not config.has_section(feed):
            raise KeyError()
    except KeyError:
        msg = "Invalid feed name"
    else:

        if config.remove_section(feed) and config.save():
            msg = "RSS Feed deleted successfully: {0}".format(request.values['feed'])
            status = 0
        else:
            msg = "Failed to remove configuration section: {0}".format(feed)
    response = {
        'msg': msg,
        'status': status
    }
    return dumps(response)
示例#8
0
    def __init__(self, service_manager):
        """

        :param service_manager:
        :type service_manager: tranny.manager.ServiceManager                continue
        :return:
        :rtype:
        """
        self._service_manager = service_manager
        self._observer = Observer()
        for section in config.find_sections("watch"):
            try:
                section_name = config.get_default(section, "section", False)
                watch_path = config.get(section, "path")
                if not exists(watch_path):
                    log.warn(
                        "Watch path does not exist {0}".format(watch_path))
            except (NoOptionError, NoSectionError):
                log.warn(
                    "Failed to get dl_path key for watch section {0}. Does not exist"
                    .format(section))
                continue

            dl_path = expanduser(
                config.get("section_{0}".format(section_name), "dl_path"))
            if not dl_path or not exists(dl_path) or not isdir(dl_path):
                log.warning(
                    "Invalid download directory {0}. Disabling watch service for this directory"
                    .format(dl_path))
                watch_path = None
            if not config.has_section("section_{0}".format(section_name)):
                log.warning(
                    "Invalid section name specified for watch dir: {0}".format(
                        section_name))
            if watch_path:
                self._observer.schedule(self, watch_path, recursive=True)
                self._path_sections[watch_path] = section_name
        if not self._path_sections:
            log.warning("No valid watch dirs found, disabling service")
        self._observer.start()
示例#9
0
文件: rss.py 项目: kannibalox/tranny
def save():
    """ Save the new config values of an existing feed over XHR

    :return: Save status response
    :rtype: dict
    """
    status = api.STATUS_FAIL

    feed = "rss_{0}".format(request.values['feed'])
    if not config.has_section(feed):
        msg = "Invalid feed name"
    else:
        try:
            config.set(feed, "url", request.values['url'])
            config.set(feed, "interval", request.values['interval'])
            config.set(feed, "enabled", request.values['enabled'])
            config.save()
            msg = "RSS Feed saved successfully: {0}".format(request.values['feed'])
            status = api.STATUS_OK
        except KeyError:
            msg = "Failed to save config. Malformed request: {0}".format(feed)
    return dict(msg=msg, status=status)
示例#10
0
文件: rss.py 项目: bobbintb/tranny
def save():
    """ Save the new config values of an existing feed over XHR

    :return: Save status response
    :rtype: dict
    """
    status = api.STATUS_FAIL

    feed = "rss_{0}".format(request.values['feed'])
    if not config.has_section(feed):
        msg = "Invalid feed name"
    else:
        try:
            config.set(feed, "url", request.values['url'])
            config.set(feed, "interval", request.values['interval'])
            config.set(feed, "enabled", request.values['enabled'])
            config.save()
            msg = "RSS Feed saved successfully: {0}".format(request.values['feed'])
            status = api.STATUS_OK
        except KeyError:
            msg = "Failed to save config. Malformed request: {0}".format(feed)
    return dict(msg=msg, status=status)
示例#11
0
文件: watch.py 项目: crawln45/tranny
    def __init__(self, service_manager):
        """

        :param service_manager:
        :type service_manager: tranny.manager.ServiceManager                continue
        :return:
        :rtype:
        """
        self._service_manager = service_manager
        self._observer = Observer()
        for section in config.find_sections("watch"):
            try:
                section_name = config.get_default(section, "section", False)
                watch_path = config.get(section, "path")
                if not exists(watch_path):
                    logger.warn("Watch path does not exist {0}".format(watch_path))
            except (NoOptionError, NoSectionError):
                logger.warn("Failed to get dl_path key for watch section {0}. Does not exist".format(
                    section
                ))
                continue

            dl_path = expanduser(config.get("section_{0}".format(section_name), "dl_path"))
            if not dl_path or not exists(dl_path) or not isdir(dl_path):
                logger.warning(
                    "Invalid download directory {0}. Disabling watch service for this directory".format(dl_path)
                )
                watch_path = None
            if not config.has_section("section_{0}".format(section_name)):
                logger.warning("Invalid section name specified for watch dir: {0}".format(section_name))
            if watch_path:
                self._observer.schedule(self, watch_path, recursive=True)
                self._path_sections[watch_path] = section_name
        if not self._path_sections:
            logger.warning("No valid watch dirs found, disabling service")
        self._observer.start()