Skip to content

Commit

Permalink
Merge pull request miki725#28 from miki725/cookiecutter
Browse files Browse the repository at this point in the history
Restructure
  • Loading branch information
miki725 committed Feb 1, 2015
2 parents 9e300b8 + f230d0a commit 9db7753
Show file tree
Hide file tree
Showing 24 changed files with 650 additions and 162 deletions.
13 changes: 10 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
language: python

python:
- 2.7
install: pip install -q --use-mirrors tox
script: tox
- "3.4"
- "2.7"
- "pypy"

# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors
install: pip install -r requirements-dev.txt

# command to run tests, e.g. python setup.py test
script: make check
18 changes: 18 additions & 0 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Credits
-------

Development Lead
~~~~~~~~~~~~~~~~

* Miroslav Shubernetskiy - https://github.com/miki725

Contributors
~~~~~~~~~~~~

* Arien Tolner - https://github.com/Bounder
* Davide Mendolia - https://github.com/davideme
* Kevin Brown - https://github.com/kevin-brown
* Martin Cavoj - https://github.com/macav
* Mjumbe Poe - https://github.com/mjumbewu
* Thomas Wajs - https://github.com/thomasWajs
* Xavier Ordoquy - https://github.com/xordoquy
103 changes: 103 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
============
Contributing
============

Contributions are welcome, and they are greatly appreciated! Every
little bit helps, and credit will always be given.

You can contribute in many ways:

Types of Contributions
----------------------

Report Bugs
~~~~~~~~~~~

Report bugs at https://github.com/miki725/django-rest-framework-bulk/issues.

If you are reporting a bug, please include:

* Your operating system name and version.
* Any details about your local setup that might be helpful in troubleshooting.
* Detailed steps to reproduce the bug.

Fix Bugs
~~~~~~~~

Look through the GitHub issues for bugs. Anything tagged with "bug"
is open to whoever wants to implement it.

Implement Features
~~~~~~~~~~~~~~~~~~

Look through the GitHub issues for features. Anything tagged with "feature"
is open to whoever wants to implement it.

Write Documentation
~~~~~~~~~~~~~~~~~~~

Django REST Bulk could always use more documentation, whether
as part of the official Django REST Bulk docs (one day...), in docstrings,
or even on the web in blog posts, articles, and such.

Submit Feedback
~~~~~~~~~~~~~~~

The best way to send feedback is to file an issue at
https://github.com/miki725/django-rest-framework-bulk/issues.

If you are proposing a feature:

* Explain in detail how it would work.
* Keep the scope as narrow as possible, to make it easier to implement.
* Remember that this is a volunteer-driven project, and that contributions
are welcome :)

Get Started!
------------

Ready to contribute? Here's how to set up ``django-rest-framework-bulk`` for local development.

1. Fork the ``django-rest-framework-bulk`` repo on GitHub.
2. Clone your fork locally::

$ git clone [email protected]:your_name_here/django-rest-framework-bulk.git

3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::

$ mkvirtualenv djangorestbulk
$ cd django-rest-framework-bulk/
$ make install

4. Create a branch for local development::

$ git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.

5. When you're done making changes, check that your changes pass
flake8 and the tests, including testing other Python versions with tox::

$ make lint
$ make test-all

6. Commit your changes and push your branch to GitHub::

$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature

7. Submit a pull request through the GitHub website.

Pull Request Guidelines
-----------------------

Before you submit a pull request, check that it meets these guidelines:

1. The pull request should include tests.
2. If the pull request adds functionality, the docs should be updated.
Put your new functionality into a function with a docstring,
and add the feature to the list in README.rst.
3. The pull request should work for Python 2.7, 3.4, and for PyPy.
Check https://travis-ci.org/miki725/django-rest-framework-bulk/pull_requests
and make sure that the tests pass for all supported Python versions.
34 changes: 34 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
.. :changelog:
History
-------

0.1.4 (2014-02-01)
~~~~~~~~~~~~~~~~~~

* Added base model viewset.
* Fixed installation issues.
See `#18 <https://github.com/miki725/django-rest-framework-bulk/pull/18>`_,
`#22 <https://github.com/miki725/django-rest-framework-bulk/pull/22>`_.

0.1.3 (2014-06-11)
~~~~~~~~~~~~~~~~~~

* Fixed bug how ``post_save()`` was called in bulk create.

0.1.2 (2014-04-15)
~~~~~~~~~~~~~~~~~~

* Fixed bug how ``pre_save()`` was called in bulk update.
* Fixed bug of unable to mixins by importing directly ``from rest_framework_bulk import <mixin>``.
See `#5 <https://github.com/miki725/django-rest-framework-bulk/pull/5>`_ for more info.

0.1.1 (2014-01-20)
~~~~~~~~~~~~~~~~~~

* Fixed installation bug with setuptools.

0.1 (2014-01-18)
~~~~~~~~~~~~~~~~

* First release on PyPI.
6 changes: 4 additions & 2 deletions LICENSE.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
License
-------

The source code can be found at `Github <https://github.com/miki725/django-rest-framework-bulk>`_.
Source code can be found at `Github <https://github.com/miki725/django-rest-framework-bulk>`_.

This library is licensed with `MIT License <http://opensource.org/licenses/MIT>`_::
`The MIT License (MIT) <http://opensource.org/licenses/MIT>`_::

Copyright (c) 2014-2015, Miroslav Shubernetskiy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
4 changes: 3 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
include *.rst
include *.rst *.txt
recursive-include tests *.sh *.py
recursive-exclude * __pycache__
recursive-exclude * *.py[co]
65 changes: 65 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
.PHONY: clean-pyc clean-build docs clean

NOSE_FLAGS=-s --verbosity=2
COVER_CONFIG_FLAGS=--with-coverage --cover-package=rest_framework_bulk --cover-erase
COVER_REPORT_FLAGS=--cover-html --cover-html-dir=htmlcov
COVER_FLAGS=${COVER_CONFIG_FLAGS} ${COVER_REPORT_FLAGS}

help:
@echo "install - install all requirements including for testing"
@echo "clean - remove all artifacts"
@echo "clean-build - remove build artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "clean-test - remove test and coverage artifacts"
@echo "clean-test-all - remove all test-related artifacts including tox"
@echo "lint - check style with flake8"
@echo "test - run tests quickly with the default Python"
@echo "test-coverage - run tests with coverage report"
@echo "test-all - run tests on every Python version with tox"
@echo "check - run all necessary steps to check validity of project"
@echo "release - package and upload a release"
@echo "dist - package"

install:
pip install -r requirements-dev.txt

clean: clean-build clean-pyc clean-test-all

clean-build:
@rm -rf build/
@rm -rf dist/
@rm -rf *.egg-info

clean-pyc:
-@find . -name '*.pyc' -follow -print0 | xargs -0 rm -f
-@find . -name '*.pyo' -follow -print0 | xargs -0 rm -f
-@find . -name '__pycache__' -type d -follow -print0 | xargs -0 rm -rf

clean-test:
rm -rf .coverage coverage*
rm -rf tests/.coverage test/coverage*
rm -rf htmlcov/

clean-test-all: clean-test
rm -rf .tox/

lint:
flake8 rest_framework_bulk

test:
python tests/manage.py test ${NOSE_FLAGS}

test-coverage:
python tests/manage.py test ${NOSE_FLAGS} ${COVER_FLAGS}

test-all:
tox

check: clean-build clean-pyc clean-test lint test

release: clean
python setup.py sdist upload

dist: clean
python setup.py sdist
ls -l dist
57 changes: 19 additions & 38 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ Django REST Framework Bulk
==========================

.. image:: https://badge.fury.io/py/djangorestframework-bulk.png
:target: http://badge.fury.io/py/djangorestframework-bulk
:target: http://badge.fury.io/py/djangorestframework-bulk

.. image:: https://d2weczhvl823v0.cloudfront.net/miki725/django-rest-framework-bulk/trend.png
:alt: Bitdeli badge
:target: https://bitdeli.com/free
.. image:: https://travis-ci.org/miki725/django-rest-framework-bulk.svg?branch=master
:target: https://travis-ci.org/miki725/django-rest-framework-bulk

Django REST Framework bulk CRUD view mixins.

Expand All @@ -24,7 +23,7 @@ Requirements

* Python (2.6, 2.7 and 3.3)
* Django 1.3+
* Django REST Framework >= 2.2.5 (when bulk features were added to serializers)
* Django REST Framework >= 2.2.5 (when bulk features were added to serializers), < 3.0

Installing
----------
Expand Down Expand Up @@ -86,21 +85,18 @@ The above will allow to create the following queries
Router
------

The bulk router can map automatically the bulk actions ::

from rest_framework_bulk.routes import BulkRouter
class UserViewSet(BulkCreateModelMixin
BulkUpdateModelMixin,
BulkDestroyModelMixin,
viewsets.ModelViewSet):
model = User
def allow_bulk_destroy(self, qs, filtered):
"""Don't forget to fine-grain this method"""
router = BulkRouter()
router.register(r'users', UserViewSet)
The bulk router can map automatically the bulk actions::

from rest_framework_bulk.routes import BulkRouter

class UserViewSet(BulkModelViewSet):
model = User

def allow_bulk_destroy(self, qs, filtered):
"""Don't forget to fine-grain this method"""

router = BulkRouter()
router.register(r'users', UserViewSet)

Notes
-----
Expand All @@ -122,10 +118,10 @@ take a look at the source code at ``generics.py`` as it is mostly
self-explanatory.

Most bulk operations are pretty safe in terms of how they operate,
that is you excplicitly describe all requests. For example, if you
that is you explicitly describe all requests. For example, if you
need to update 3 specific resources, you have to explicitly identify
those resources in the request's ``PUT`` or ``PATCH`` data.
The only exception to this is bulk delete. Conside a ``DELETE``
The only exception to this is bulk delete. Consider a ``DELETE``
request to the first url. That can potentially delete all resources
without any special confirmation. To try to account for this, bulk delete
mixin allows to implement a hook to determine if the bulk delete
Expand All @@ -146,20 +142,5 @@ is filtered to only get certain resources, more attention was payed hence
the action is less likely to be accidental. On how to filter requests,
please refer to Django REST
`docs <http://www.django-rest-framework.org/api-guide/filtering>`_.
Either way, please use bulk deletes with extreme causion since they
Either way, please use bulk deletes with extreme caution since they
can be dangerous.

Credits
-------

Maintainers/contributors:

* Miroslav Shubernetskiy - https://github.com/miki725
* Arien Tolner - https://github.com/Bounder
* Kevin Brown - https://github.com/kevin-brown
* Martin Cavoj - https://github.com/macav
* Mjumbe Poe - https://github.com/mjumbewu
* Thomas Wajs - https://github.com/thomasWajs
* Xavier Ordoquy - https://github.com/xordoquy
* Davide Mendolia - https://github.com/davideme

5 changes: 5 additions & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-r requirements.txt
coverage
django-nose
flake8
tox
6 changes: 1 addition & 5 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,2 @@
coverage
django
django-nose
djangorestframework
mock
tox
djangorestframework<3
6 changes: 3 additions & 3 deletions rest_framework_bulk/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
__version__ = '0.1.3'
__version__ = '0.1.4'
__author__ = 'Miroslav Shubernetskiy'

try:
from .generics import *
from .mixins import *
from .generics import * # noqa
from .mixins import * # noqa
except Exception:
pass
Loading

0 comments on commit 9db7753

Please sign in to comment.