mirror of
https://github.com/django-components/django-components.git
synced 2025-09-27 07:59:08 +00:00
Merge branch 'master' of https://github.com/EmilStenstrom/django-components
This commit is contained in:
commit
5ca0c43071
4 changed files with 102 additions and 28 deletions
|
@ -4,7 +4,7 @@ repos:
|
||||||
hooks:
|
hooks:
|
||||||
- id: isort
|
- id: isort
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 23.9.1
|
rev: 23.11.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
- repo: https://github.com/pycqa/flake8
|
- repo: https://github.com/pycqa/flake8
|
||||||
|
|
86
README.md
86
README.md
|
@ -51,9 +51,9 @@ To use it, add it to INSTALLED_APPS and remove _django.contrib.staticfiles_.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
# django.contrib.staticfiles # <-- REMOVE
|
# 'django.contrib.staticfiles', # <-- REMOVE
|
||||||
"django_components",
|
'django_components',
|
||||||
"django_components.safer_staticfiles" # <-- ADD
|
'django_components.safer_staticfiles' # <-- ADD
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ Then add the app into INSTALLED_APPS in settings.py
|
||||||
```python
|
```python
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
...,
|
...,
|
||||||
"django_components",
|
'django_components',
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -197,8 +197,8 @@ class Calendar(component.Component):
|
||||||
}
|
}
|
||||||
|
|
||||||
class Media:
|
class Media:
|
||||||
css = "calendar/calendar.css"
|
css = "calendar/style.css"
|
||||||
js = "calendar/calendar.js"
|
js = "calendar/script.js"
|
||||||
```
|
```
|
||||||
|
|
||||||
And voilá!! We've created our first component.
|
And voilá!! We've created our first component.
|
||||||
|
@ -535,6 +535,80 @@ COMPONENTS = {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Management Command
|
||||||
|
|
||||||
|
You can use the built-in management command `startcomponent` to create a django component. The command accepts the following arguments and options:
|
||||||
|
|
||||||
|
- `name`: The name of the component to create. This is a required argument.
|
||||||
|
|
||||||
|
- `--path`: The path to the components directory. This is an optional argument. If not provided, the command will use the `BASE_DIR` setting from your Django settings.
|
||||||
|
|
||||||
|
- `--js`: The name of the JavaScript file. This is an optional argument. The default value is `script.js`.
|
||||||
|
|
||||||
|
- `--css`: The name of the CSS file. This is an optional argument. The default value is `style.css`.
|
||||||
|
|
||||||
|
- `--template`: The name of the template file. This is an optional argument. The default value is `template.html`.
|
||||||
|
|
||||||
|
- `--force`: This option allows you to overwrite existing files if they exist. This is an optional argument.
|
||||||
|
|
||||||
|
- `--verbose`: This option allows the command to print additional information during component creation. This is an optional argument.
|
||||||
|
|
||||||
|
- `--dry-run`: This option allows you to simulate component creation without actually creating any files. This is an optional argument. The default value is `False`.
|
||||||
|
|
||||||
|
### Management Command Usage
|
||||||
|
|
||||||
|
To use the command, run the following command in your terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py startcomponent <name> --path <path> --js <js_filename> --css <css_filename> --template <template_filename> --force --verbose --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace `<name>`, `<path>`, `<js_filename>`, `<css_filename>`, and `<template_filename>` with your desired values.
|
||||||
|
|
||||||
|
### Management Command Examples
|
||||||
|
|
||||||
|
Here are some examples of how you can use the command:
|
||||||
|
|
||||||
|
### Creating a Component with Default Settings
|
||||||
|
|
||||||
|
To create a component with the default settings, you only need to provide the name of the component:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py startcomponent my_component
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a new component named `my_component` in the `components` directory of your Django project. The JavaScript, CSS, and template files will be named `script.js`, `style.css`, and `template.html`, respectively.
|
||||||
|
|
||||||
|
### Creating a Component with Custom Settings
|
||||||
|
|
||||||
|
You can also create a component with custom settings by providing additional arguments:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py startcomponent new_component --path my_components --js my_script.js --css my_style.css --template my_template.html
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a new component named `new_component` in the `my_components` directory. The JavaScript, CSS, and template files will be named `my_script.js`, `my_style.css`, and `my_template.html`, respectively.
|
||||||
|
|
||||||
|
### Overwriting an Existing Component
|
||||||
|
|
||||||
|
If you want to overwrite an existing component, you can use the `--force` option:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py startcomponent my_component --force
|
||||||
|
```
|
||||||
|
|
||||||
|
This will overwrite the existing `my_component` if it exists.
|
||||||
|
|
||||||
|
### Simulating Component Creation
|
||||||
|
|
||||||
|
If you want to simulate the creation of a component without actually creating any files, you can use the `--dry-run` option:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py startcomponent my_component --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
This will simulate the creation of `my_component` without creating any files.
|
||||||
|
|
||||||
## Install locally and run the tests
|
## Install locally and run the tests
|
||||||
|
|
||||||
Start by forking the project by clicking the **Fork button** up in the right corner in the GitHub . This makes a copy of the repository in your own name. Now you can clone this repository locally and start adding features:
|
Start by forking the project by clicking the **Fork button** up in the right corner in the GitHub . This makes a copy of the repository in your own name. Now you can clone this repository locally and start adding features:
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
# pip-compile requirements-dev.in
|
# pip-compile requirements-dev.in
|
||||||
#
|
#
|
||||||
asgiref==3.6.0
|
asgiref==3.7.2
|
||||||
# via django
|
# via django
|
||||||
cachetools==5.3.1
|
cachetools==5.3.1
|
||||||
# via tox
|
# via tox
|
||||||
|
@ -16,7 +16,7 @@ colorama==0.4.6
|
||||||
# via tox
|
# via tox
|
||||||
distlib==0.3.7
|
distlib==0.3.7
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
django==4.2.6
|
django==5.0
|
||||||
# via -r requirements-dev.in
|
# via -r requirements-dev.in
|
||||||
filelock==3.12.3
|
filelock==3.12.3
|
||||||
# via
|
# via
|
||||||
|
@ -47,7 +47,7 @@ pluggy==1.3.0
|
||||||
# via
|
# via
|
||||||
# pytest
|
# pytest
|
||||||
# tox
|
# tox
|
||||||
pre-commit==3.4.0
|
pre-commit==3.5.0
|
||||||
# via -r requirements-dev.in
|
# via -r requirements-dev.in
|
||||||
pycodestyle==2.11.0
|
pycodestyle==2.11.0
|
||||||
# via flake8
|
# via flake8
|
||||||
|
@ -55,13 +55,13 @@ pyflakes==3.1.0
|
||||||
# via flake8
|
# via flake8
|
||||||
pyproject-api==1.6.1
|
pyproject-api==1.6.1
|
||||||
# via tox
|
# via tox
|
||||||
pytest==7.4.2
|
pytest==7.4.3
|
||||||
# via -r requirements-dev.in
|
# via -r requirements-dev.in
|
||||||
pyyaml==6.0
|
pyyaml==6.0
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
sqlparse==0.4.4
|
sqlparse==0.4.4
|
||||||
# via django
|
# via django
|
||||||
tox==4.11.3
|
tox==4.11.4
|
||||||
# via -r requirements-dev.in
|
# via -r requirements-dev.in
|
||||||
virtualenv==20.24.3
|
virtualenv==20.24.3
|
||||||
# via
|
# via
|
||||||
|
|
|
@ -114,7 +114,7 @@ def build_deps_envlist(python_to_django):
|
||||||
)
|
)
|
||||||
for django_version in all_django_versions
|
for django_version in all_django_versions
|
||||||
]
|
]
|
||||||
lines = [f"django{a}: Django>={b},<{c}" for a, b, c in lines]
|
lines = [f"django{a}: Django>={b},<{c}" for a, b, c in sorted(lines)]
|
||||||
return "deps = \n" + textwrap.indent("\n".join(lines), prefix=" ")
|
return "deps = \n" + textwrap.indent("\n".join(lines), prefix=" ")
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ def build_pypi_classifiers(python_to_django):
|
||||||
all_python_versions = python_to_django.keys()
|
all_python_versions = python_to_django.keys()
|
||||||
for python_version in all_python_versions:
|
for python_version in all_python_versions:
|
||||||
classifiers.append(
|
classifiers.append(
|
||||||
f"Programming Language :: Python :: {env_format(python_version, divider='.')}"
|
f'"Programming Language :: Python :: {env_format(python_version, divider=".")}",'
|
||||||
)
|
)
|
||||||
|
|
||||||
all_django_versions = set()
|
all_django_versions = set()
|
||||||
|
@ -132,15 +132,15 @@ def build_pypi_classifiers(python_to_django):
|
||||||
for django_version in django_versions:
|
for django_version in django_versions:
|
||||||
all_django_versions.add(django_version)
|
all_django_versions.add(django_version)
|
||||||
|
|
||||||
classifiers.append("...")
|
for django_version in sorted(all_django_versions):
|
||||||
|
|
||||||
for django_version in all_django_versions:
|
|
||||||
classifiers.append(
|
classifiers.append(
|
||||||
f"Programming Language :: Django :: {env_format(django_version, divider='.')}"
|
f'"Programming Language :: Django :: {env_format(django_version, divider=".")}",'
|
||||||
)
|
)
|
||||||
|
|
||||||
return "classifiers=[\n" + textwrap.indent(
|
return (
|
||||||
"\n".join(classifiers), prefix=" "
|
" " * 4
|
||||||
|
+ "classifiers=[\n"
|
||||||
|
+ textwrap.indent("\n".join(classifiers), prefix=" " * 8)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue