SHELL := /bin/bash # if a virtualenv is used put the full python path # e.g.: PYTHON=$$HOME/.virtualenvs/ishtar/bin/python PYTHON=python # put name of your current project project=example_project # list used apps apps="ishtar_common" "archaeological_operations" "archaeological_context_records" "archaeological_files" "archaeological_finds" "archaeological_warehouse" "archaeological_files_pdl" default_data='fr' version=`head -n 1 version.py | cut -d' ' -f2` help: # Actions available: # * clean: remove temporary files # * update: # * test: # * pep8: # * pylint: # * syncdb: # * shell: # * makemessages: # * compilemessages: # * schemamigrations: # * schemamigrations_initial: # * generate_doc: # * fixtures: # * fixtures_*: # * translations_push: # * translations_pull: # * readme_md_to_rst: # * sdist: # * distribute_test: # * distribute_main: # * deb: clean: -rm -rf *~* -find . -name '*.pyc' -exec rm {} \; -find . -name '.*.swp' -exec rm {} \; -rm -rf dist ishtar.egg-info update: clean syncdb compilemessages collectstatic test: clean cd $(project); $(PYTHON) manage.py test $(apps) coverage: clean cd $(project); coverage run --source="ishtar_common,archaeological_operations,\ archaeological_context_records,archaeological_files,archaeological_finds,archaeological_warehouse,\ archaeological_files_pdl" ./manage.py test $(apps) && coverage report build_gitlab: cd $(project); $(PYTHON) ./manage.py migrate test_gitlab: clean cd $(project); $(PYTHON) manage.py test $(apps) pep8: pep8 --filename=*.py --ignore=W --exclude="manage.py,settings.py,migrations" --statistics --repeat . pylint: for DIR in $(apps); do \ pylint "$(CURDIR)/$$DIR" --ignore=.git,migrations --max-public-methods=50 --ignored-classes=Item.Meta --method-rgx='[a-z_][a-z0-9_]{2,40}$$'; \ done migrate: cd $(project); $(PYTHON) manage.py migrate shell: cd $(project);$(PYTHON) manage.py shell run: cd $(project); $(PYTHON) manage.py runserver 0.0.0.0:8000 makemessages: for DIR in $(apps); do \ cd $(CURDIR)/$$DIR; \ $(PYTHON) ../$(project)/manage.py makemessages --all; \ msgfilter -i locale/fr/LC_MESSAGES/django.po sed -e d | sed -e "s/fuzzy//g" > locale/django.pot ;\ done compilemessages: for DIR in $(apps); do \ cd $(CURDIR)/$$DIR; \ $(PYTHON) ../$(project)/manage.py compilemessages; \ done collectstatic: cd $(project);$(PYTHON) manage.py collectstatic --noinput migrations: cd $(project);\ for APP in $(apps); do \ echo "* makemigrations for "$$APP; \ $(PYTHON) ./manage.py makemigrations $$APP; \ done generate_doc: cd $(project);\ $(PYTHON) manage.py graph_models --pydot -g -I "ImporterModel,ImporterType,ImporterDefault,ImporterDefaultValues,ImporterColumn,Regexp,ImportTarget,FormaterType,Import" ishtar_common > /tmp/ishtar-imports.dot ;\ dot -Tpng /tmp/ishtar-imports.dot -o ../docs/source/_static/db-imports.png rm /tmp/ishtar-imports.dot cd $(project);\ for APP in $(apps); do \ $(PYTHON) manage.py graph_models -g --pydot $$APP > /tmp/ishtar-$$APP.dot; \ dot -Tpng /tmp/ishtar-$$APP.dot -o ../docs/source/_static/db-$$APP.png; \ rm /tmp/ishtar-$$APP.dot ; \ done fixtures: fixtures_auth fixtures_common fixtures_operations fixtures_context_records fixtures_finds fixtures_warehouse fixtures_files fixtures_auth: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ auth.permission auth.group \ > '../fixtures/initial_data-auth-'$(default_data)'.json' fixtures_common: fixtures_common_importers fixtures_spatialrefsystem cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ ishtar_common.authortype \ ishtar_common.persontype \ ishtar_common.organizationtype \ ishtar_common.sourcetype \ ishtar_common.operationtype \ ishtar_common.titletype \ ishtar_common.supporttype \ ishtar_common.format \ ishtar_common.documenttemplate \ > '../ishtar_common/fixtures/initial_data-'$(default_data)'.json' fixtures_common_importers: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ ishtar_common.importermodel \ ishtar_common.importertype \ ishtar_common.regexp \ ishtar_common.importerdefault \ ishtar_common.importerdefaultvalues \ ishtar_common.importercolumn \ ishtar_common.importtarget \ ishtar_common.formatertype \ ishtar_common.importerduplicatefield \ > '../ishtar_common/fixtures/initial_importtypes-'$(default_data)'.json' fixtures_common_towns: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 \ ishtar_common.state \ ishtar_common.department \ ishtar_common.town \ > '../ishtar_common/fixtures/initial_towns-'$(default_data)'.json' fixtures_spatialrefsystem: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ ishtar_common.SpatialReferenceSystem \ > '../ishtar_common/fixtures/initial_spatialrefsystem-'$(default_data)'.json' fixtures_operations: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_operations.acttype \ archaeological_operations.period \ archaeological_operations.remaintype \ archaeological_operations.reportstate \ > '../archaeological_operations/fixtures/initial_data-'$(default_data)'.json' cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_operations.relationtype \ > '../archaeological_operations/fixtures/initial_data_relation_type-'$(default_data)'.json' cat archaeological_operations/fixtures/initial_data_relation_type-$(default_data).json | tr '\n' '\r' | \ sed -e 's/"inverse_relation": *\[\r *\"[-_a-z0-9]*\" *\r *\]/"inverse_relation": null/g' | \ tr '\r' '\n' > archaeological_operations/fixtures/initial_data_relation_type_norel-'$(default_data)'.json fixtures_context_records: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_context_records.datingquality \ archaeological_context_records.activitytype \ archaeological_context_records.identificationtype \ archaeological_context_records.unit \ archaeological_context_records.datingtype \ archaeological_context_records.excavationtechnictype \ archaeological_context_records.documentationtype \ > '../archaeological_context_records/fixtures/initial_data-'$(default_data)'.json' cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_context_records.relationtype \ > '../archaeological_context_records/fixtures/initial_data_relation_type-'$(default_data)'.json' cat archaeological_context_records/fixtures/initial_data_relation_type-$(default_data).json | tr '\n' '\r' | \ sed -e 's/"inverse_relation": *\[\r *\"[-_a-z0-9]*\" *\r *\]/"inverse_relation": null/g' | \ tr '\r' '\n' > archaeological_context_records/fixtures/initial_data_relation_type_norel-'$(default_data)'.json fixtures_finds: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_finds.materialtype \ archaeological_finds.treatmenttype \ archaeological_finds.treatmentstate \ archaeological_finds.conservatorystate \ archaeological_finds.remarkabilitytype \ archaeological_finds.objecttype \ archaeological_finds.integritytype \ archaeological_finds.batchtype \ archaeological_finds.treatmentfiletype \ > '../archaeological_finds/fixtures/initial_data-'$(default_data)'.json' fixtures_warehouse: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_warehouse.containertype \ archaeological_warehouse.warehousetype \ archaeological_warehouse.warehousedivision \ > '../archaeological_warehouse/fixtures/initial_data-'$(default_data)'.json' fixtures_files: cd $(project); $(PYTHON) ./manage.py dumpdata --indent 4 --natural-primary --natural-foreign \ archaeological_files.saisinetype \ archaeological_files.filetype \ archaeological_files.permittype \ > '../archaeological_files/fixtures/initial_data-'$(default_data)'.json' translations_push: makemessages zanata-cli push translations_pull: zanata-cli pull readme_md_to_rst: pandoc --from=markdown --to=rst --output=README.rst README.md sdist: clean $(PYTHON) setup.py sdist distribute_test: sdist twine upload -r pypitest dist/* rm -rf ishtar.egg-info distribute_main: sdist twine upload -r pypi dist/* rm -rf ishtar.egg-info deb: clean debuild -i -us -uc -b push_install: clean tar cvjf install-ishtar-$(version).tar.bz2 install/ scp install-ishtar-$(version).tar.bz2 root@git:/var/www/ishtar/install/ rm install-ishtar-$(version).tar.bz2