{"id":42700060,"url":"https://github.com/jefcolbi/django-theme-installer","last_synced_at":"2026-01-29T14:15:58.043Z","repository":{"id":57422354,"uuid":"234825502","full_name":"jefcolbi/django-theme-installer","owner":"jefcolbi","description":"An HTML themes installer for Django","archived":false,"fork":false,"pushed_at":"2020-07-06T01:59:44.000Z","size":23,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-29T07:42:56.396Z","etag":null,"topics":["bootstrap","django","html","installer","theme"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jefcolbi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-19T02:04:28.000Z","updated_at":"2022-09-06T08:20:17.000Z","dependencies_parsed_at":"2022-09-13T14:12:23.305Z","dependency_job_id":null,"html_url":"https://github.com/jefcolbi/django-theme-installer","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/jefcolbi/django-theme-installer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefcolbi%2Fdjango-theme-installer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefcolbi%2Fdjango-theme-installer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefcolbi%2Fdjango-theme-installer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefcolbi%2Fdjango-theme-installer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jefcolbi","download_url":"https://codeload.github.com/jefcolbi/django-theme-installer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefcolbi%2Fdjango-theme-installer/sbom","scorecard":{"id":513779,"data":{"date":"2025-08-11","repo":{"name":"github.com/jefcolbi/django-theme-installer","commit":"6ec58cb32ade51db07d7aa41ff9448f1858a6d23"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-20T01:15:11.897Z","repository_id":57422354,"created_at":"2025-08-20T01:15:11.897Z","updated_at":"2025-08-20T01:15:11.897Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28879195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","django","html","installer","theme"],"created_at":"2026-01-29T14:15:57.966Z","updated_at":"2026-01-29T14:15:58.027Z","avatar_url":"https://github.com/jefcolbi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django Theme Installer\n\n### Why?\nWhen you start a new Django project and you are not so good in HTML or don't want to waste your time or found a beautiful free theme, you manually copy it in your django project and start editing it.  \nDjango Theme Installer do this work for you.\n\n### Installation\n    $ pip install django-theme-installer\n    \n### Usage\nAdd 'theme_installer' in INSTALLED_APPS  \nThen run \n\n    $ python manage.py theme_install theme_name /path/where/the/html/files/are/located\n    \n### Tutorial\nLet's fetch a simple html5 templates and install it\n```bash\nmkdir myproj\ncd myproj/\nvirtualenv -p python3 .env\nsource .env/bin/activate\npip install django~=2.2\npip install --upgrade django-theme-installer\nwget https://github.com/BlackrockDigital/startbootstrap-creative/archive/gh-pages.zip\nunzip gh-pages.zip\ndjango-admin startproject myproj\ncd startbootstrap-creative-gh-pages/\nthemedir=`pwd`\ncd .. \u0026\u0026 cd myproj/\nawk 'NR==36{print; print \"    \\\"theme_installer\\\",\"; next}7' myproj/settings.py \u003e testfile.tmp \u0026\u0026 mv testfile.tmp myproj/settings.py\npython manage.py theme_install creative $themedir\npython manage.py runserver 8000\n```\nOpen your browser to http://localhost:8000/creative/index/\n\n### Documentation\nDjango theme installer needs basically 3 folders to work: The source folder where the html template (html + assets dirs) is localted, the django static folder where the assets should go and the django templates folder where html files goes.  \nDjango theme installer is build on the standard pathlib and use a recursive model. This recursive model make him capable of handling sub-themes.  \nDjango theme installer is built over two types of classes: **Loaders** and **Installlers**\n\n###### Loaders\nLoaders are there to provide three folders to the ThemeInstaller class, those folders are: **static_dir**, **templates_dir** and **home_dir**. The home_dir can be null.\n\n###### Installers\nInstallers are there to create and maybe modify/transform some files on the django side. For example the ThemeInstaller class install html and assets files, but ViewsInstaller creates views in app/views.py\n\n#### Management command\nThe management command need barely two arguments: the name of the theme in django side and the path of the source html templates. We say `the name of the theme` here because this name is used for templates path, static path and sometimes for the app name.  \npositional arguments:                                                                                                                        \n-  name                  The name of the theme, it will be the name of the app if --app is omitted                                                                                    \n-  source                The path of the theme                                                                                                \n                                                                                                                                             \noptional arguments:                                                                                                                          \n-  --app APP             The name of the app where to install the static, templates, views and urls.\n-  --assets-dir ASSETS_DIR [ASSETS_DIR ...]\n                        The directory where to find assets, useful in case the assets are not in the same folder with the html files.\n-  --subthemes           Include sub themes, if you want to process the sub themes\n-  --prefix              The STATIC_URL prefix to override default `static`\n\nExample:  \n`python manage.py theme_install fine /home/xxx/themes/fine --app base`\n  \n#### Via the client\n    $ theme_cl.py -n name -s /path/to/html/source/ -c /path/to/djangoproject/static/ -t /path/to/djangoproject/templates/\n    \n#### Via the code\n    \u003e\u003e\u003e th = ThemeInstaller(name, \"/path/to/html/source/\", loader)\"\n    \u003e\u003e\u003e th.proceed()\n\n### Contributing\nIf you find a html theme which can't be installed with django theme installer, open an issue with the link to this theme. I will download it and fix it.  \nNo nulled or cracked themes.  \nContributions are welcome, all PRs will be reviewed and merged.\n\n### License\nFeel free to use it as you want.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjefcolbi%2Fdjango-theme-installer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjefcolbi%2Fdjango-theme-installer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjefcolbi%2Fdjango-theme-installer/lists"}