SHELL := /bin/bash # if a virtualenv is used put the full python path # e.g.: PYTHON=$$HOME/.virtualenvs/ishtar/bin/python PYTHON=python3 # 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` branch_name=`git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1/"` help: # Actions available: # * clean: remove temporary files # * update: # * test: # * pep8: # * pylint: # * syncdb: # * run: # * runcelery: # * shell: # * makemessages: # * compilemessages: # * sass: # * 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 {} \; -find . -name "__pycache__" -exec rm -rf {} \; 2> /dev/null -rm -rf dist ishtar.egg-info update: clean syncdb compilemessages collectstatic test: clean cd $(project); $(PYTHON) manage.py test $(apps) soft_test: clean cd $(project); $(PYTHON) manage.py test -k $(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: clean collectstatic cd $(project); $(PYTHON) ./manage.py migrate test_gitlab: build_gitlab cd $(project); $(PYTHON) manage.py test $(apps) soft_test_gitlab: build_gitlab cd $(project); $(PYTHON) manage.py -k 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 runcelery: celery -A example_project worker -l info 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,ValueFormater,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.profiletype \ 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.valueformater \ 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 --natural-primary --natural-foreign \ ishtar_common.state \ ishtar_common.department \ ishtar_common.town \ ishtar_common.area \ > '../ishtar_common/fixtures/towns-'$(default_data)'.json' cat 'ishtar_common/fixtures/towns-'$(default_data)'.json' | tr '\n' '\r' | \ sed -e 's/"children": *\[\r *\[\r *"[0-9-]*", *\r *[0-9]*\ *\r *\]\r *\]/"children": []/g' | \ tr '\r' '\n' > 'ishtar_common/fixtures/towns_norel-'$(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.materialtypequalitytype \ archaeological_finds.treatmenttype \ archaeological_finds.treatmentstate \ archaeological_finds.conservatorystate \ archaeological_finds.remarkabilitytype \ archaeological_finds.objecttype \ archaeological_finds.objecttypequalitytype \ archaeological_finds.integritytype \ archaeological_finds.batchtype \ archaeological_finds.checkedtype \ 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 --project-config zanata.xml --project-version $(branch_name) translations_pull: zanata-cli pull --project-config zanata.xml --project-version $(branch_name) 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 INSTALL_PATH=/var/www/ishtar/install/ ; \ ARCHIVE_NAME=install-ishtar-$(version).tar.bz2 ; \ tar cvjf $$ARCHIVE_NAME install/ ; \ scp $$ARCHIVE_NAME root@git.iggdrasil.net:$$INSTALL_PATH ; \ rm $$ARCHIVE_NAME ; #ifeq ($(BRANCH_NAME),master) \ # ssh root@git rm $$INSTALL_PATH"install-ishtar-latest.tar.bz2" ; \ # ssh root@git ln -s $$INSTALL_PATH$$ARCHIVE_NAME $$INSTALL_PATH"install-ishtar-latest.tar.bz2" ;\ #endif \ #ifeq ($(BRANCH_NAME),develop) \ # ssh root@git rm $$INSTALL_PATH"install-ishtar-develop.tar.bz2" ; \ # ssh root@git ln -s $$INSTALL_PATH$$ARCHIVE_NAME $$INSTALL_PATH"install-ishtar-develop.tar.bz2" ;\ #endif sass: ./node_modules/node-sass/bin/node-sass scss/custom.scss --output-style compressed > ishtar_common/static/bootstrap/bootstrap.css