Provides Ruby on Rails-like command line functionalities, models and helper functions so you can focus on development and removes the pain of repeating frequent actions.
Project description
Introduction
Django simplify provides Ruby on Rails-like command line functionalities, models and helper functions so you can focus on development and removes the pain of repeating frequent actions.
Requirements
Python 3.6 and above
- Django (tested with 3.1, probably works with any version that supports
Python 3)
Installation
django-simplify can be installed via pip.
$ pip install django-simplify
Then just add simplify to your INSTALLED_APPS.
Below are several example commands you can run.
$ python manage.py create_app <app_name>
Features
timestamp for every model
alphabetic filter for admin
model, view, template and url route generator
automatic import
Management commands
1. create_app
automatically adds a urls.py file after app is created.
adds newly created app in the settings.py file under INSTALLED_APPS
creates index, edit, create and detail view and respective templates
adds the app route to your project’s urls.py file
Usage
$ python manage.py create_app <app_name>
2. create_model
Creates a model and their respective fields. the following types maps to respective Django model fields. It will also add the app to the django admin too.
121, o2o or set -> OneToOneField
bool -> BooleanField
date -> DateField
datetime or dt -> DateTimeField
dict or m2m -> ManyToManyField
email -> EmailField
file -> FileField
list or fk -> ForeignKey
float -> FloatField
dec -> DecimalField
img or image -> ImageField
int -> IntegerField
str or char -> CharField
txt or text -> TextField
Usage
$ python manage.py create_app <app_name> <model_name> field_name:type field_name:type ...
an example
$ python manage.py create_app member Member first_name:text last_name:text age:int
will generate the following code in the member/models.py file
class Member(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
age = models.IntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.first_name
Specifying relationships
Specifying ForeignKey, OneToOneField or ManyToManyField is quite easy. just add an =<related_model>. See example
$ python manage.py create_app <app_name> <model_name> field_name:type=related_model
# an example
# if the related model is in the same models.py file, specify it as app_name.Model
$ python manage.py create_app author Author name:char books:fk=Book # or
$ python manage.py create_app author Author name:char books:fk=author.Book
# if in a different app. (say book model)
# obviously you should be able to substitute fk with m2m, o2o, 121
$ python manage.py create_app author Author name:char books:fk=book.Book
will create the following
class Author(models.Model):
name = models.CharField(max_length=50)
books = models.ForeignKey('book.Book', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
3. create_view
Creates a view, generate its respective template and adds the path in the urls.py file
Usage
$ python manage.py create_view <app_name> <view_name>
an example
$ python manage.py create_view member MemberDetail
Helper models
################
- simplify.utils.TimeBasedModel
- Provides the `created_at` and `updated_at` fields for timestamp
- simplify.utils.NamedTimeBasedModel
- Provides the `name`, `created_at` and `updated_at` fields.
- simplify.utils.AlphaNumericFilterAdmin
- when subclassed, it allows the items to be filtered alphabetically by either A-Z or 0-9
- **Note**: for this to work, you must specify values for `alphanumeric_filter` in the model admin.
Usage
######
.. code-block:: python
# models.py
from simplify.utils import TimeBasedModel, NamedTimeBasedModel
class MyModel(TimeBasedModel):
extra_fields = ....
.. code-block:: python
# admin.py
from simplify.utils import AlphaNumericFilterAdmin
class MemberAdmin(AlphaNumericFilterAdmin):
alphanumeric_filter = ["first_name", "last_name", 'age'] # this part is what creates the filter
list_filter = ['age']
list_display = ['first_name', 'last_name',]
Todo
add more helper functions
add documentation
Acknowledgements
I’d like to say a big thank you to God without which this wouldn’t be possible. I would also like to say thanks to everyone who has and will contribute to this in the future.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-simplify-0.2.tar.gz
.
File metadata
- Download URL: django-simplify-0.2.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe5ad4db9d092dabe93584c3fb65dd5feba8da3bf7025ebe476d7fc2898e9868 |
|
MD5 | cde39873fd2fea693fd58a050e63e5d2 |
|
BLAKE2b-256 | 9497de70bf5a2aa67cae008432552295cb93a00e50588d25d4e2d0a5443249b0 |
File details
Details for the file django_simplify-0.2-py3.8.egg
.
File metadata
- Download URL: django_simplify-0.2-py3.8.egg
- Upload date:
- Size: 24.8 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7dbe66594525c87fd86ef530ca292b77b2e97a11c9429d8ec26cfa9b267d42c |
|
MD5 | 989fd1bd546d30a435efa1852a0a4ef4 |
|
BLAKE2b-256 | d8c91dd7d6dee0f34baa31bdd47aec821ca761a36458c65b7bae546d02e66c41 |