Получение информации о статических файлах в Python App Engine; обходные

1

Я работаю над проектом App Engine, который будет иметь настраиваемые темы. Я хотел бы иметь возможность использовать темы jQuery UI. Проблема заключается в выяснении того, какой файл CSS будет называться. (Как правило, "jquery-ui-1.7.2.custom.css". Номера версий будут меняться, и люди, как правило, переименовывают вещи, но должен быть только один файл CSS, и я в порядке, поскольку это условие ошибки, если там два или более по какой-то причине.) Поскольку это статический файл (статические файлы загружаются в App Engine отдельно от остальных ресурсов приложения), я не могу просто glob каталог для файла CSS. Я не могу просто предположить, что он жестко закодирован, и я действительно не хочу настраивать его, потому что это плохой пользовательский интерфейс.

Гвидо сказал мне, чтобы символизировать его так, что App Engine видит две копии и может рассматривать их как статические, а другой как ресурс приложения, но символические ссылки не работают на Windows, и поскольку в конечном итоге это будет открытым исходным кодом, я могу 't контролировать, какой SDK пользователь использует. Другое предложение состояло в том, чтобы использовать время развертывания script, но пользователи Mac имеют эту симпатичную кнопку "Развернуть" в своей версии SDK, и я бы не сказал им: "О, извините за неудобства, но вы не можете использовать это для этого проекта".

Мне явно нужно готовое решение для этого, но я в недоумении. У кого-нибудь есть хорошие предложения по тому, как получить пользовательскую тему пользовательского интерфейса jQuery из ThemeRoller и в приложение App Engine? Некоторая пост-обработка уже необходима, потому что только файлы в zip файле, предоставленные ThemeRoller, находятся в каталоге "css". Может быть, я могу написать что-то, что берет необработанную тему в качестве входных данных и выплескивает что-то полезное с другой стороны (трюк развертывания script, но как-то менее недружелюбный пользователь). Трюк здесь - презентация - я хочу, чтобы пользователь потратил как можно меньше времени на командную строку. Идеальное решение предполагает, что человек, выполняющий эту задачу, по большей части нетехничен. Никакая часть решения не может быть намного сложнее, чем устанавливать что-то вроде WordPress или Drupal, и в идеальном мире это должно быть проще, проще.

  • 0
    Зачем вам нужно знать имя файла CSS? Разве CSS не будет ссылаться исключительно из шаблонов, которые не являются статическим содержимым, и, следовательно, вы можете найти?
  • 0
    Потому что это тема, которая может быть изменена пользователем. Это не жестко закодировано. Я хочу представить пользователю выпадающий список доступных тем. Путь к файлу CSS должен быть установлен из названия темы.
Теги:
themes
google-app-engine

1 ответ

1
Лучший ответ

Чтобы выполнить то, что вы просите, я бы использовал хранилище данных для обслуживания файлов CSS. Поскольку это позволит легко распечатывать, сортировать и даже изменять и загружать.

Кроме того, ваши следующие лучшие параметры состоят в том, чтобы хранить данные CSS внутри script (словарь, где имя файла - это имя ключа, а код CSS - это значение). Или, как вы предположили, запустить script перед развертыванием в AppEngine.

Лично я бы пошел на хранение в опции хранилища данных, так как это позволит намного больше пользовательской настройки (например, каждый пользователь может предоставить свой собственный файл CSS), просто обязательно используйте memcache, чтобы избежать необходимо, когда это возможно, получить доступ к хранилищу данных (что должно быть очень распространенным явлением), а также использовать заголовки HTTP, чтобы сообщить браузеру кэшировать файл CSS локально.

  • 0
    Хранение данных CSS внутри скрипта не будет работать, потому что это не решает проблему упрощения работы с нетехническими пользователями. Я склонялся к тому, чтобы обслуживать либо хранилище данных, либо хранилище BLOB-объектов, но меня беспокоят характеристики производительности. Это, вероятно, один из наиболее востребованных файлов в приложении.
  • 0
    Предполагая, что вы установили заголовки http, которые задают поведение кэширования в скрипте, который обслуживает файл CSS для клиента, все должно быть в порядке (поскольку браузер не будет запрашивать его при каждой загрузке страницы). В сочетании с memcache проблем быть не должно. У меня не было бы никаких оговорок, делающих это в моем собственном приложении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню