Package: djtezos
djTezos: Django-TezosDjango-Tezos provides Django Models and uWSGI Spooler (djCall) integration with
PyTezos.Install djTezosInstall djtezos with pip then add djtezos to INSTALLED_APPS.Run ./manage.py migrate to create tables for djtezos models.You need a SECRET_KEY that is sufficiently long for AES.Add BlockchainsBlockchain is the first model you have to manage, you can do it in the admin.
For any blockchain, you can choose a Python Provider Class, such asdjtezos.tezos.Providerordjtezos.fake.Providerfor a mock that you can
use in tests.Example:tzlocal=Blockchain.objects.create(name='tzlocal',endpoint='http://tz:8732',provider_class='djtezos.tezos.Provider',is_active=True,confirmation_blocks=1,)Run tzlocal with:docker run --name tz --rm --publish 8732:8732 yourlabs/tezosAdd to /etc/hosts:tzon line starting with 127.0.0.1In gitlab-ci, add:services:-name:yourlabs/tezosalias:tzCreate accountsCreate an account for a user:account=user.account_set.create(blockchain=tzlocal)account.generate_private_key()account.save()Users can have as many accounts as you want.QueueTransactions are queued in the database with the Transaction model. You can
emit 3 types of Transactions.Deploy a smart contractCreate a Transaction with a contract_micheline to deploy a smart contract:contract=Transaction.objects.create(sender=account,name='TICKR',contract_micheline=mich,contract_name='PyMich FA 1.2',args={'int':'1'},state='deploy',)You may then retreive it through either of the Transaction model and the
Contract proxy model.Call a smart contract functionCall a smart contract function with a new Transaction:call=Transaction.objects.create(sender=account,contract=contract,function='replace',args=[3],state='deploy',)This calls the replace function with only one arg: an integer of 3.A Call proxy model is also available to retrieve.Execute a transferCreate a transfer on the blockchain:transfer=Transaction.objects.create(sender=account,receiver=account2,amount=10000,state='deploy',)Migrate from v0.4.xCallbacks have been rewritten in a release candidate version, where you need to:callAccount.generate_private_key()andAccount.save()to
be able to deploy with it, or provision the private key by yourself
through the AES encryption defined in models.pyrun at repeated intervals:./manage.py djtezos_sync, will catch up backlog
at first, then sync incrementally, support reorgrun at repeated intervals:./manage.py djtezos_balanceAlso, you can't use a form to show a sender field without filling it.Migrate from djblockchainchange all your importsremove migration dependencies to djblockchain to djtezos.0001_initialexecute the following SQL in productionaltertabledjblockchain_accountrenametodjtezos_account;altertabledjblockchain_blockchainrenametodjtezos_blockchain;altertabledjblockchain_transactionrenametodjtezos_transaction;altertabledjtezos_transactiondropcolumnblock_id;droptabledjblockchain_block;altertabledjtezos_transactionaddcolumncontract_michelinejsonnull;altertabledjtezos_transactionaddcolumnamountintnull;insertintodjango_migrations(app,name,applied)values('djtezos','0001_initial',now());updatedjtezos_blockchainsetprovider_class=replace(provider_class,'djblockchain','djtezos');Then, you might still have Blockchain objects with Ethereum provider, this has
not bee ported from djblockchain, you may deactivate them by setting
is_active=False or you can delete them but that will cascade delete of all
their transactions which might not be what existing users expect to happen on
your platform...