From 64b3828ef440ddcb00dfde968dc44e0541c4f500 Mon Sep 17 00:00:00 2001 From: Harsh Donga <41797494+harshdonga@users.noreply.github.com> Date: Sat, 13 Jul 2019 16:01:52 +0530 Subject: [PATCH 1/4] Create README.md --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1cae71c --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +To run CLI application, + +1. install docker, python3. + +2. configure hyperledger sawtooth + + + +3. From a directory above: + + ./dock + + ./normal (for devMode consensus) + + ./poet (for PoET consensus) + + + +4. Log in to client containers to explore (try following commands: med, transfer) From 498a2033748828b67ad74a4b1ba0f2abe1dbc9d7 Mon Sep 17 00:00:00 2001 From: HarshDonga Date: Thu, 25 Jul 2019 23:50:43 +0530 Subject: [PATCH 2/4] web integration ##1 --- README.md | 19 --- app/app/__init__.py | 0 app/app/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 107 bytes app/app/__pycache__/settings.cpython-37.pyc | Bin 0 -> 2200 bytes app/app/__pycache__/urls.cpython-37.pyc | Bin 0 -> 878 bytes app/app/__pycache__/wsgi.cpython-37.pyc | Bin 0 -> 502 bytes app/app/settings.py | 123 ++++++++++++++++++ app/app/urls.py | 7 + app/app/wsgi.py | 16 +++ app/db.sqlite3 | 0 app/home/__init__.py | 0 app/home/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 123 bytes app/home/__pycache__/admin.cpython-35.pyc | Bin 0 -> 168 bytes app/home/__pycache__/models.cpython-35.pyc | Bin 0 -> 165 bytes app/home/__pycache__/urls.cpython-35.pyc | Bin 0 -> 438 bytes app/home/__pycache__/views.cpython-35.pyc | Bin 0 -> 303 bytes app/home/admin.py | 3 + app/home/apps.py | 5 + app/home/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 134 bytes app/home/models.py | 3 + app/home/templates/home/home.html | 10 ++ app/home/tests.py | 3 + app/home/urls.py | 8 ++ app/home/views.py | 4 + app/logistics/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 128 bytes .../__pycache__/admin.cpython-35.pyc | Bin 0 -> 173 bytes .../__pycache__/models.cpython-35.pyc | Bin 0 -> 170 bytes app/logistics/__pycache__/urls.cpython-35.pyc | Bin 0 -> 340 bytes .../__pycache__/views.cpython-35.pyc | Bin 0 -> 357 bytes app/logistics/admin.py | 3 + app/logistics/apps.py | 5 + app/logistics/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 139 bytes app/logistics/models.py | 3 + app/logistics/tests.py | 3 + app/logistics/urls.py | 7 + app/logistics/views.py | 5 + app/manage.py | 21 +++ app/manufacturers/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 132 bytes .../__pycache__/admin.cpython-35.pyc | Bin 0 -> 177 bytes .../__pycache__/models.cpython-35.pyc | Bin 0 -> 174 bytes .../__pycache__/urls.cpython-35.pyc | Bin 0 -> 419 bytes .../__pycache__/views.cpython-35.pyc | Bin 0 -> 713 bytes app/manufacturers/admin.py | 3 + app/manufacturers/apps.py | 5 + app/manufacturers/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 143 bytes app/manufacturers/models.py | 3 + app/manufacturers/templates/index.html | 12 ++ app/manufacturers/templates/med.html | 38 ++++++ app/manufacturers/templates/transfer.html | 0 app/manufacturers/tests.py | 3 + app/manufacturers/urls.py | 9 ++ app/manufacturers/views.py | 19 +++ djangodocker | 8 ++ dock | 6 +- docker-compose-NORMAL.yaml | 26 ++++ med_python/sawtooth_med/processor/handler.py | 9 +- requirements.txt | 2 + .../sawtooth_transfer/processor/handler.py | 7 +- .../sawtooth_transfer/transfer_cli.py | 14 +- .../sawtooth_transfer/transfer_client.py | 4 +- 65 files changed, 387 insertions(+), 29 deletions(-) delete mode 100644 README.md create mode 100644 app/app/__init__.py create mode 100644 app/app/__pycache__/__init__.cpython-37.pyc create mode 100644 app/app/__pycache__/settings.cpython-37.pyc create mode 100644 app/app/__pycache__/urls.cpython-37.pyc create mode 100644 app/app/__pycache__/wsgi.cpython-37.pyc create mode 100644 app/app/settings.py create mode 100644 app/app/urls.py create mode 100644 app/app/wsgi.py create mode 100644 app/db.sqlite3 create mode 100644 app/home/__init__.py create mode 100644 app/home/__pycache__/__init__.cpython-35.pyc create mode 100644 app/home/__pycache__/admin.cpython-35.pyc create mode 100644 app/home/__pycache__/models.cpython-35.pyc create mode 100644 app/home/__pycache__/urls.cpython-35.pyc create mode 100644 app/home/__pycache__/views.cpython-35.pyc create mode 100644 app/home/admin.py create mode 100644 app/home/apps.py create mode 100644 app/home/migrations/__init__.py create mode 100644 app/home/migrations/__pycache__/__init__.cpython-35.pyc create mode 100644 app/home/models.py create mode 100644 app/home/templates/home/home.html create mode 100644 app/home/tests.py create mode 100644 app/home/urls.py create mode 100644 app/home/views.py create mode 100644 app/logistics/__init__.py create mode 100644 app/logistics/__pycache__/__init__.cpython-35.pyc create mode 100644 app/logistics/__pycache__/admin.cpython-35.pyc create mode 100644 app/logistics/__pycache__/models.cpython-35.pyc create mode 100644 app/logistics/__pycache__/urls.cpython-35.pyc create mode 100644 app/logistics/__pycache__/views.cpython-35.pyc create mode 100644 app/logistics/admin.py create mode 100644 app/logistics/apps.py create mode 100644 app/logistics/migrations/__init__.py create mode 100644 app/logistics/migrations/__pycache__/__init__.cpython-35.pyc create mode 100644 app/logistics/models.py create mode 100644 app/logistics/tests.py create mode 100644 app/logistics/urls.py create mode 100644 app/logistics/views.py create mode 100755 app/manage.py create mode 100644 app/manufacturers/__init__.py create mode 100644 app/manufacturers/__pycache__/__init__.cpython-35.pyc create mode 100644 app/manufacturers/__pycache__/admin.cpython-35.pyc create mode 100644 app/manufacturers/__pycache__/models.cpython-35.pyc create mode 100644 app/manufacturers/__pycache__/urls.cpython-35.pyc create mode 100644 app/manufacturers/__pycache__/views.cpython-35.pyc create mode 100644 app/manufacturers/admin.py create mode 100644 app/manufacturers/apps.py create mode 100644 app/manufacturers/migrations/__init__.py create mode 100644 app/manufacturers/migrations/__pycache__/__init__.cpython-35.pyc create mode 100644 app/manufacturers/models.py create mode 100644 app/manufacturers/templates/index.html create mode 100644 app/manufacturers/templates/med.html create mode 100644 app/manufacturers/templates/transfer.html create mode 100644 app/manufacturers/tests.py create mode 100644 app/manufacturers/urls.py create mode 100644 app/manufacturers/views.py create mode 100644 djangodocker create mode 100644 requirements.txt diff --git a/README.md b/README.md deleted file mode 100644 index 1cae71c..0000000 --- a/README.md +++ /dev/null @@ -1,19 +0,0 @@ -To run CLI application, - -1. install docker, python3. - -2. configure hyperledger sawtooth - - - -3. From a directory above: - - ./dock - - ./normal (for devMode consensus) - - ./poet (for PoET consensus) - - - -4. Log in to client containers to explore (try following commands: med, transfer) diff --git a/app/app/__init__.py b/app/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/app/__pycache__/__init__.cpython-37.pyc b/app/app/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ab9c59994dd8056bdc4bab59f6ddb5c9e4a04ea GIT binary patch literal 107 zcmZ?b<>g`kg4uzVu^{>}h=2h`Aj1KOi&=m~3PUi1CZpdWHa^HWN5Qtd#hKLarX05)C|?*IS* literal 0 HcmV?d00001 diff --git a/app/app/__pycache__/settings.cpython-37.pyc b/app/app/__pycache__/settings.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1064b3a694f96314eee348e47382e93fb44a3b89 GIT binary patch literal 2200 zcmb7FTT|Oc6!t~f#sQKLa%qw_Y6~HxMJ6FlFVjg8wn9Adg<5iGHB&S~XOWla7VRn& z{gvjSdF)^5Pta?h`WO1tBiROz$xNx%yE;1e{q~&o_WXP`htF?6e)~&#E|>c&{TM$L zB(`v}KXHMao`XCToV=bV`J=+`#feoQGw<{1&`VI%%OL0#JEzaW43wY@6_|ypUDB&? z3FcrP7T_{mfva{|zXXf=99*+=Aixq_hZ}GcZrK9O!$*q9Y3;I=9))!$#zlNDC;k=IX2He+gLP5=~t(p(= zxm>kzWO}wQGQv6aY$hK1p=bty7=->2vA9&N?hucJCMO^soQSKC>93pMQcq;u4EacN zRg4&V5JwIlOOK^Zw0@5MTt6ft_0Y9za_V~`{`i1mFzS#mF*d0VI1ku&wHo*qlZG+I z8CbqsBVG+1*0>)~i`B--)`sr+fQW~YNn#;{E$uo6E1C(kP1D;H#Cl>kl{R+aMS`+20EG zwRmZ`AIb7P9?}CT!!Euy&5igVzB9#4O^C<&NkCY9b4thvV~FN?fr|puMvL3i798=n zQq)@+({B6Q@o5|*)P;}=s&XVnszj2-(S7pu{+A~%)!=09dsg>gw#6kVTO3? z5z~u(tsYlucz({c`~ah?cJ8FDQa?MPu*#z`mJVNPHQ9)j(qARvkh63)8J}yOYUng zj9pn(_qx4?@k(wrQP{--n{UaToxZ%I81-&LLATAeV(48gi%K8UZa(^^Go)INHabZu z%SrzrX_Hs{jB1 literal 0 HcmV?d00001 diff --git a/app/app/__pycache__/urls.cpython-37.pyc b/app/app/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..961ee4a332c7272091564e0e6e3e9b9ad5e33d3a GIT binary patch literal 878 zcma)4&5qMB5KhvxyJUBPN0?h0sl?D56(C^6ij@!&f0s%q>&9;DDz+or0hTL|!4vRG zxpLZ9;KbN%r3wjYE!i3;pJ%@Bn|XP5mPNRJzI*)nCW)fo{<2>K44&h*5Ak5pJYq3R znph_DB=+&38OU^=#t~0h%9G7-Gy0LN;`tF9eu#<@Z7?BiTln<;4V-JW6syiqC$!44 zk82KBooQO?95>2dK_jdKqdUi~e_+9B_#*gMTf&7lAhqEj)KVK6Qb5~qYB^ZWXBpsH zJJ;G7Axzh{WE-khx;1*kYgg7<60XR!oD!#7QCs4{1j}2Jz4}Ha=CZTwqEoeJw=Elz zJ}Th_V?Y%M*=plv0867K$m_}r+kQO2Pj~nr83i0D#HT2BJ12CLRBde+L-lZG^}ck6oJ*UzM9zfC?YpMT790%UPxkrL-g(O< zl-fQNU_8Hbx#ICFu7dPCQP|1Br}bU>K}Og;{r;`r9i+pvtE*nWJ4`PJr#~;w78^K} zIPhMX+;v)^m8M9arh!@)wpSvO47DdUWJQrAw7|?&Wlf0jp@fOJ)joXs!1k9^_2(_a e+cw9}(rbjIdg{dw~S=~g2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(mxg{uer~FMMq*KM uhJHa&epYI7iGE^10Yo@HJ~J<~BtBlRpz;=nO>TZlX-=vg$b@1bW&i;Aa~gmE literal 0 HcmV?d00001 diff --git a/app/home/__pycache__/admin.cpython-35.pyc b/app/home/__pycache__/admin.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e74eeec7170968c95d6f029ddef5f9d47789da42 GIT binary patch literal 168 zcmWgR<>g{dw~V!CU|@I*#Bjg_WH|tFu?Ubz0U}0*90rD5MusRx2F4U7hG0$Rmp~Z? zO~zZSi7C06d48HqQG6*`iFxVyddc~DB}JJ@MIb{~G88cbDKPO%RX-y?H&s6)v8Xsh ozn~~TD>b=9Ke3g{dw~V!9U|@I*#Bjg_WH|tFu?Ubz0U}0*90rD5MusRx2F4U7hG0$Rmp~Z? zO~zYnx%nxnImLdOOt&~wvJ&&s^Yv1aia-XeWGG?*Qefhjntn!pZmNDpVo`C1enC-w iR%&vIequoZL>OX*UP0w84jUl5G$+-L5va8oh#3Hw^Cc1h literal 0 HcmV?d00001 diff --git a/app/home/__pycache__/urls.cpython-35.pyc b/app/home/__pycache__/urls.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb16259f41f134a9c7421f0012781df40d0b2d51 GIT binary patch literal 438 zcmY+AO-{ow5QU%f+oq(dD$x_L$);H&A;byTu#3dP#HL9VJCT!s+HFt6mAqxuE3jf5 zDg>7OH1j=cX6#LxCi-;y95Ub&e^x~C1D*arB4{%-fMO^Zn9Dsh9+Z#5hYC;xM16<= zO$ZgCh`=P}A!LMo3=u)ZIC&GCK?V?WoEQs0rqiOnM(zLs} zAL^3)I^4eH@TZGuej-}yff`ymP5|F?gzV~+wNdzcd8X*Bk$b{`-Ei0Hf-fxvo-q$E#_=g literal 0 HcmV?d00001 diff --git a/app/home/__pycache__/views.cpython-35.pyc b/app/home/__pycache__/views.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50fd66c9de4a30c0ccd95e241b7da674c28a3dbd GIT binary patch literal 303 zcmYjMJ!``-5Pg!J4+<`sGH1!)#hwGD6uM{WX6Rrn5hd7>bCO$Hy0w3%bN`LkPW=m+ za#Er6;JrKD$9rg*WmjLj&7%VF&G-w+)g8mFn0TrLTA&lC1cZ`M2|j>|ixdy}?|2Dva;iTu`uPsTt|hpq>8&rQA8M z<5FpAa;EIb9(3c&y6=D6Pka6BivDFxgH*6|K?j1S%-cMv7V1zRceZfGl5Ym@qEQ@2 WgMT#PlW~62Sv9o!HvA!qE#w77IX%_@ literal 0 HcmV?d00001 diff --git a/app/home/admin.py b/app/home/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/app/home/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/app/home/apps.py b/app/home/apps.py new file mode 100644 index 0000000..90dc713 --- /dev/null +++ b/app/home/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class HomeConfig(AppConfig): + name = 'home' diff --git a/app/home/migrations/__init__.py b/app/home/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/home/migrations/__pycache__/__init__.cpython-35.pyc b/app/home/migrations/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b90c7bca57f929d763e8c28dc17a037f420b9971 GIT binary patch literal 134 zcmWgR<>g{dw~S=~g2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(m$80Eer~FMMq*KM zhJHa&epYI7iGE^10Yo@AGrcIWBr`v+SU)~KGcU6wK3=b&@)n0pZhlH>PO2Tquwo!) F003Zy9`^tM literal 0 HcmV?d00001 diff --git a/app/home/models.py b/app/home/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/app/home/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/app/home/templates/home/home.html b/app/home/templates/home/home.html new file mode 100644 index 0000000..30ec0d4 --- /dev/null +++ b/app/home/templates/home/home.html @@ -0,0 +1,10 @@ + + + HOME PAGE +
+ +

+
+
+ + \ No newline at end of file diff --git a/app/home/tests.py b/app/home/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/app/home/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/app/home/urls.py b/app/home/urls.py new file mode 100644 index 0000000..29a1e4f --- /dev/null +++ b/app/home/urls.py @@ -0,0 +1,8 @@ +from django.contrib import admin +from django.urls import path , include +from . import views +urlpatterns = [ + path('', views.home , name = 'home'), + path('manufacturers/', include('manufacturers.urls')), + path('logistics/', include('logistics.urls')), +] \ No newline at end of file diff --git a/app/home/views.py b/app/home/views.py new file mode 100644 index 0000000..6b0c678 --- /dev/null +++ b/app/home/views.py @@ -0,0 +1,4 @@ +from django.shortcuts import render + +def home(request): + return render(request, 'home/home.html') \ No newline at end of file diff --git a/app/logistics/__init__.py b/app/logistics/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/logistics/__pycache__/__init__.cpython-35.pyc b/app/logistics/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5dc9aa19c76eb6b2ffaf09aadea5fae204b6ea6a GIT binary patch literal 128 zcmWgR<>hKkwv1%}g2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(m#%(Ber~FMMq*KM zhJHa&epYI7iGE^1fqqVYdS-D+W^%E9e0*kJW=VX!UP0w84x8Nkl+v73JCHHOK+FID D*u)(x literal 0 HcmV?d00001 diff --git a/app/logistics/__pycache__/admin.cpython-35.pyc b/app/logistics/__pycache__/admin.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15b27e64fe2e0f58cb7baeac9fd30d01009c84bd GIT binary patch literal 173 zcmWgR<>hKkwv4rBU|@I*#Bjg_WH|tFu?Ubz0U}0*90rD5MusRx2F4U7hG0$Rmp~Z? zO~zZSi7C06d48HqQG6*`iFxVyddc~DB}JJ@MIb{~G88cbDKPO%OFtt&H&s6)v8Xsh xzn~~TD>b=9Ke3=dKPNvuv$!NPxmX`;m|j8UEe@O9{FKt1R69nX_F^Dr001#lD0u(? literal 0 HcmV?d00001 diff --git a/app/logistics/__pycache__/models.cpython-35.pyc b/app/logistics/__pycache__/models.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d7556f515bc830476ecfa2c224c7b47505d6b96f GIT binary patch literal 170 zcmWgR<>hKkwv4r8U|@I*#Bjg_WH|tFu?Ubz0U}0*90rD5MusRx2F4U7hG0$Rmp~Z? zO~zYnx%nxnImLdOOt&~wvJ&&s^Yv1aia-XeWGG?*Qefhjwthx_ZmNDpVo`C1enC-w sR%&vIequp^eolURW^qYoaBy#N3J literal 0 HcmV?d00001 diff --git a/app/logistics/__pycache__/urls.cpython-35.pyc b/app/logistics/__pycache__/urls.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f01993f60c3551d370603e882cc51c026ad1f2a0 GIT binary patch literal 340 zcmX|*Jx;_h5QU%fA6ARD+B>9K*GLF)0vbdUi6X>S;>dO)JK?A15S)Q4xux1GP%)NP zSTmny-m{*4-0!a-Zl1pY{80a&oThtf|3nZ}3>q*DEdz^t0-eC5Xj7OBZANMekwND$ z1=<2k(w;*Wm`aEOqQqyy21=+PDm*sznWE9Kkaxl;+aw`dx^)btvc2AfJhO}as^psw z2$}7S47svGzCSc|xE51qhxydcc6I8-C3HXRF5>32cPS|@izp+Ch?)>~WYc4-bk={v z?V}O#+wgHVl8>G9BVXJ+$$sVCvT!{Q%CD;TJSLx(k5Jv3S!`O~#ee#kePBm+NdEvS Cc~B?- literal 0 HcmV?d00001 diff --git a/app/logistics/__pycache__/views.cpython-35.pyc b/app/logistics/__pycache__/views.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..740a632788e97956216c137c3d1d312c5c47bd29 GIT binary patch literal 357 zcmYjM%}T^D5T5jJWwp?g?@$jLJql$JJm^7IaBl?t0!N< zlasP64w*0W|IHky>HJfj-+utWH|bsivMxyRlt9p9&;oP}N(RjP0ki>hA(SEcA&3ax z0m=wO4C_4kp)SbTm{{2hX~{aecFx>MG`dGwGoL5%zo)t+#W{hSsNNV230ALZq0W{! zw^!?elaVtUQV9*4S@|$XbYEa&iu|5%r8~)0Wl?cs^;Xu7SH|#GZyIz>jr_5ZPq;8I zW8Bb2&ygqe%)so7aFxenCbm_-(F;`Cx_WSEeZhFR3oANcT3~9Ji2p(2OAm@pi=mZE Le;0a=jAg+ex!p{O literal 0 HcmV?d00001 diff --git a/app/logistics/admin.py b/app/logistics/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/app/logistics/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/app/logistics/apps.py b/app/logistics/apps.py new file mode 100644 index 0000000..812f267 --- /dev/null +++ b/app/logistics/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class LogisticsConfig(AppConfig): + name = 'logistics' diff --git a/app/logistics/migrations/__init__.py b/app/logistics/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/logistics/migrations/__pycache__/__init__.cpython-35.pyc b/app/logistics/migrations/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07943fbe32d1117331e7bc3dd1708ce554229486 GIT binary patch literal 139 zcmWgR<>hKkwv1%}g2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(mxX>ter~FMMq*KM zhJHa&epYI7iGE^1fqqVYdS-D+W^%E9Zf1H>Vo7FxUa@|Bd}dx|NqoFsLFFwDo80`A O(wtN~kcq`W%m4shXCa~h literal 0 HcmV?d00001 diff --git a/app/logistics/models.py b/app/logistics/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/app/logistics/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/app/logistics/tests.py b/app/logistics/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/app/logistics/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/app/logistics/urls.py b/app/logistics/urls.py new file mode 100644 index 0000000..f8a36d5 --- /dev/null +++ b/app/logistics/urls.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from django.urls import path, include +from . import views + +urlpatterns = [ + path('', views.index, name = 'index') +] \ No newline at end of file diff --git a/app/logistics/views.py b/app/logistics/views.py new file mode 100644 index 0000000..1d60ba1 --- /dev/null +++ b/app/logistics/views.py @@ -0,0 +1,5 @@ +from django.shortcuts import render +from django.http import HttpResponse + +def index(request): + return HttpResponse('

LOGS

') diff --git a/app/manage.py b/app/manage.py new file mode 100755 index 0000000..a3f0719 --- /dev/null +++ b/app/manage.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/app/manufacturers/__init__.py b/app/manufacturers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/manufacturers/__pycache__/__init__.cpython-35.pyc b/app/manufacturers/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12bcd8a2936892ea12fb7b218624db536582c94c GIT binary patch literal 132 zcmWgR<>lf_w2Wl{g2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(m!W<}er~FMMq*KM zhJHa&epYI7iGE^1fqrgcUTIola!F}XYEiL%e0*kJW=VX!UP0w84x8Nkl+v73JCISu HK+FIDCdVFS literal 0 HcmV?d00001 diff --git a/app/manufacturers/__pycache__/admin.cpython-35.pyc b/app/manufacturers/__pycache__/admin.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be21de8ff24375aa4a318dc5f6d686467af669e5 GIT binary patch literal 177 zcmWgR<>lf_w2ZZ9U|@I*#Bjg_WH|tFu?Ubz0U}0*90rD5MusRx2F4U7hG0$Rmp~Z? zO~zZSi7C06d48HqQG6*`iFxVyddc~DB}JJ@MIb{~G88cbDKPO%Pd_6+H&s6)v8Xsh zzn~~TD>b=9Ke3=dKQ}S2G%Yc?q_ilts8}Ctpk6`cEe@O9{FKt1R69nX5ye2v005S~ BDYF0o literal 0 HcmV?d00001 diff --git a/app/manufacturers/__pycache__/models.cpython-35.pyc b/app/manufacturers/__pycache__/models.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fdb0bcdccb58477465ca0ca15d71c1faf9056d5f GIT binary patch literal 174 zcmWgR<>lf_w2ZZ6U|@I*#Bjg_WH|tFu?Ubz0U}0*90rD5MusRx2F4U7hG0$Rmp~Z? zO~zYnx%nxnImLdOOt&~wvJ&&s^Yv1aia-XeWGG?*QefhjzJ5l2ZmNDpVo`C1enC-w wR%&vIequp^er{r3X881l9?N6b>2i6nF;j(E{@Y<_paKV6nhrfkl9O^e%yya9dYL3;{Lq3FB(e zb>!*9T<^0%cXH<9i0PO1(;%L$2TwIq!Y6~~;>A-P6Od6yJQU<9|e1!)wi4#WK4=|^p5#;-<=|?4+o*COW ulNk@9a}ArOMln40xP+RON4|F63tcy5voXASe{wzZ2ZHWF+b661r={X zNyoFerQ#K+I5WwvcCkFy=gy4peCOIvl4Sn#*RzZ7g6KEhyCn2W40Dd4a0}WIHG(#R zgv%xEBsBqT0^|XykiHRZLQ)e_Q?DT+QZuioq)up^&i|kqrDB}2Zk1-J_}tq5tu}qv z8eIazU+x)TyuvUEf+f246kjFk$b3JqQQ-5cvdu0P>~K*mV*O#z#{M9lVCL^CtGY&K zRl%mpdhWKmv{}*jSyQybWl`FJHJj{Xtv{Jn|7D!`qMun9so1oEZKSS_d_KD@9HJ6$X*5nwz zdA)vjFeurf@yrG1?+~U?V`vL=GM zFB*;3o?v5oJb3~A|H%vN_snSLBdp(cE{4w2Xk4mo(Z26irs~+1gEijExHwK%`26ge j>RauB*}Z!27;n|PoIP(kHSF{Y_kVb&ORlf_w2Wl{g2x~N1{i@12OutH0TL+;48fX=ek&P@K*9*(myLc#er~FMMq*KM zhJHa&epYI7iGE^1fqrgcUTIola!F}XYEiL%Zf1H>Vo7FxUa@|Bd}dx|NqoFsLFFwD So80`A(wtN~kg3H$%m4to1tQ!4 literal 0 HcmV?d00001 diff --git a/app/manufacturers/models.py b/app/manufacturers/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/app/manufacturers/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/app/manufacturers/templates/index.html b/app/manufacturers/templates/index.html new file mode 100644 index 0000000..f1a6ef6 --- /dev/null +++ b/app/manufacturers/templates/index.html @@ -0,0 +1,12 @@ + + +

SELECT

+
+
+ + +
+ \ No newline at end of file diff --git a/app/manufacturers/templates/med.html b/app/manufacturers/templates/med.html new file mode 100644 index 0000000..6ef5d5d --- /dev/null +++ b/app/manufacturers/templates/med.html @@ -0,0 +1,38 @@ + + +
+
+ +
+ +
+ +
+ +
+ +
+ + +
+ + diff --git a/app/manufacturers/templates/transfer.html b/app/manufacturers/templates/transfer.html new file mode 100644 index 0000000..e69de29 diff --git a/app/manufacturers/tests.py b/app/manufacturers/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/app/manufacturers/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/app/manufacturers/urls.py b/app/manufacturers/urls.py new file mode 100644 index 0000000..6b54903 --- /dev/null +++ b/app/manufacturers/urls.py @@ -0,0 +1,9 @@ +from django.contrib import admin +from django.urls import path, include +from . import views + +urlpatterns = [ + path('', views.index , name = 'index'), + path('task', views.task , name = 'task'), + path('medtransact', views.medtransact, name = 'medtransact') +] \ No newline at end of file diff --git a/app/manufacturers/views.py b/app/manufacturers/views.py new file mode 100644 index 0000000..a7d2b61 --- /dev/null +++ b/app/manufacturers/views.py @@ -0,0 +1,19 @@ +from django.shortcuts import render +from django.http import HttpResponse + +def index(request): + return render(request, 'index.html') + +def task(request): + options = request.POST['options'] + if options == 'med': + return render(request, 'med.html') + else: + return render(request, 'transfer.html') + +def medtransact(request): + medicineName = request.POST['medicineName'] + medicineName = request.POST['medicineId'] + medicineName = request.POST['medicineKeyContent'] + medicineName = request.POST['medicineAllContents'] + medicineName = request.POST['ExpiryMonths'] diff --git a/djangodocker b/djangodocker new file mode 100644 index 0000000..571232e --- /dev/null +++ b/djangodocker @@ -0,0 +1,8 @@ +FROM python:3.7-alpine + +COPY ./requirements.txt /requirements.txt +RUN pip install -r /requirements.txt + +RUN mkdir /app +WORKDIR /app +COPY ./app /app diff --git a/dock b/dock index 52277ac..31153eb 100755 --- a/dock +++ b/dock @@ -8,6 +8,10 @@ docker volume rm project_keyshare docker volume rm project_blocks -docker build -f transfer_python/Dockerfile -t harsh/transfer:v1 . +docker volume rm project_node + +# docker build -f transfer_python/Dockerfile -t harsh/transfer:v1 . + +docker build -f djangodocker -t harsh/djangoapp:v1 . echo "Done Shit!" diff --git a/docker-compose-NORMAL.yaml b/docker-compose-NORMAL.yaml index 0c4d925..cc4920c 100644 --- a/docker-compose-NORMAL.yaml +++ b/docker-compose-NORMAL.yaml @@ -8,6 +8,7 @@ services: volumes: - keyshare:/root - blocks:/var/lib/sawtooth + - node:/project depends_on: - validator command: | @@ -22,6 +23,7 @@ services: volumes: - keyshare:/root - blocks:/var/lib/sawtooth + - node:/project depends_on: - validator command: | @@ -36,6 +38,7 @@ services: volumes: - keyshare:/root - blocks:/var/lib/sawtooth + - node:/project depends_on: - validator command: | @@ -51,6 +54,7 @@ services: volumes: - keyshare:/root - blocks:/var/lib/sawtooth + - node:/project depends_on: - validator command: | @@ -66,6 +70,7 @@ services: container_name: sawtooth-validator volumes: - blocks:/var/lib/sawtooth + - node:/project expose: - 4004 - 8800 @@ -100,6 +105,7 @@ services: volumes: - keyshare:/root - blocks:/var/lib/sawtooth + - node:/project ports: - "8008:8008" depends_on: @@ -117,6 +123,7 @@ services: volumes: - keyshare:/root - blocks:/var/lib/sawtooth + - node:/project depends_on: - validator command: | @@ -124,7 +131,26 @@ services: devmode-engine-rust -v --connect tcp://validator:5050 " stop_signal: SIGKILL + + + # web: + # image: harsh/nodeapp:v1 + # ports: + # - "3000:3000" + # volumes: + # - keyshare:/root + # - blocks:/var/lib/sawtooth + + app: + image: harsh/djangoapp:v1 + ports: + - "8000:8000" + volumes: + - ./app:/app + command: > + sh -c "python3 manage.py runserver 0.0.0.0:8000" volumes: keyshare: blocks: + node: diff --git a/med_python/sawtooth_med/processor/handler.py b/med_python/sawtooth_med/processor/handler.py index 9ce0a44..d622657 100644 --- a/med_python/sawtooth_med/processor/handler.py +++ b/med_python/sawtooth_med/processor/handler.py @@ -114,10 +114,13 @@ def apply(self, transaction , context): if medicine is None: raise InvalidTransaction('Invalid action: Medicine DOES NOT exists: {}'.format(med_payload.medicineName)) - medicine.stock = med_payload.stock - med_state.set_medicine(med_payload.medicineName , medicine) + if medicine.medicineID == med_payload.medicineID: + medicine.stock = med_payload.stock + med_state.set_medicine(med_payload.medicineName , medicine) - _display('Medicine Info updated successfully by: {}'.format(signer[:6])) + _display('Medicine Info updated successfully by: {}'.format(signer[:6])) + else: + raise InvalidTransaction('Unhandled action: {}'.format(med_payload.action)) else: raise InvalidTransaction('Unhandled action: {}'.format(med_payload.action)) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d3677ab --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +Django +djangorestframework diff --git a/transfer_python/sawtooth_transfer/processor/handler.py b/transfer_python/sawtooth_transfer/processor/handler.py index 9b221d5..da57e97 100644 --- a/transfer_python/sawtooth_transfer/processor/handler.py +++ b/transfer_python/sawtooth_transfer/processor/handler.py @@ -95,7 +95,7 @@ def apply(self, transaction, context): if transfer_state.get_shipment(transfer_payload.shipmentID) is not None: raise InvalidTransaction('Invalid action: Shipment already exists') - + shipment = Shipment( shipmentID = transfer_payload.shipmentID, logisticsID = transfer_payload.logisticsID, @@ -116,6 +116,11 @@ def apply(self, transaction, context): if shipment is None: raise InvalidTransaction('Invalid action : Shipment does not exists: {}'.format(transfer_payload.shipmentID)) + if(transfer_payload.shipmentStatus == 'DELIVERED'): + transfer_state.delete_shipment(transfer_payload.shipmentID) + _display('Shipment Deleted successfully deleted successfully by: {}'.format(signer[:6])) + + shipment.shipmentStatus = transfer_payload.shipmentStatus transfer_state.set_shipment(transfer_payload.shipmentID , shipment) _display('Logistics Company : {} updated Shipment'.format(signer[:6])) diff --git a/transfer_python/sawtooth_transfer/transfer_cli.py b/transfer_python/sawtooth_transfer/transfer_cli.py index 19ab0a1..6b60d6f 100644 --- a/transfer_python/sawtooth_transfer/transfer_cli.py +++ b/transfer_python/sawtooth_transfer/transfer_cli.py @@ -698,7 +698,11 @@ def do_list(args): ] if asset_list is not None: - print(asset_list) + print('-'*50) + for x in asset_list: + print(x) + print('x'*10) + print('-'*50) else: raise TransferException("Could not retireve List") @@ -715,9 +719,13 @@ def do_show(args): data = client.show(ID, auth_user=auth_user, auth_password=auth_password) if data is not None: - print(data) + print('-'*50) + for x in data: + print(x) + print('x'*10) + print('-'*50) else: - raise TransferException("Asset not found: {}".format(shipmentID)) + raise TransferException("Assets not found!") def main(prog_name = os.path.basename(sys.argv[0]), args = None): diff --git a/transfer_python/sawtooth_transfer/transfer_client.py b/transfer_python/sawtooth_transfer/transfer_client.py index 4581271..2451733 100644 --- a/transfer_python/sawtooth_transfer/transfer_client.py +++ b/transfer_python/sawtooth_transfer/transfer_client.py @@ -286,8 +286,8 @@ def _send_transfer_txn(self, signer_public_key=self._signer.get_public_key().as_hex(), family_name="transfer", family_version="1.0", - inputs=[addresss, addressb, address, med_address], - outputs=[addresss, addressb, address, med_address], + inputs=[addresss, addressb, address, med_address, '6d0f36e8b34cbf061ca4c58e89b40e797beefdb663b681a96e2d1ccd8f03f9b52eb4e0'], + outputs=[addresss, addressb, address, med_address, '6d0f36e8b34cbf061ca4c58e89b40e797beefdb663b681a96e2d1ccd8f03f9b52eb4e0'], dependencies=[], payload_sha512=_sha512(payload), batcher_public_key=self._signer.get_public_key().as_hex(), From 288a74a49a2fb8b0948465d57fefe001b235aee6 Mon Sep 17 00:00:00 2001 From: HarshDonga Date: Wed, 7 Aug 2019 09:58:27 +0530 Subject: [PATCH 3/4] web integration ##2 --- app/app/__pycache__/settings.cpython-37.pyc | Bin 2200 -> 2223 bytes app/app/__pycache__/urls.cpython-37.pyc | Bin 878 -> 283 bytes app/app/settings.py | 2 +- app/home/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 108 bytes app/home/__pycache__/admin.cpython-37.pyc | Bin 0 -> 149 bytes app/home/__pycache__/models.cpython-37.pyc | Bin 0 -> 146 bytes app/home/__pycache__/urls.cpython-37.pyc | Bin 0 -> 390 bytes app/home/__pycache__/views.cpython-37.pyc | Bin 0 -> 277 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 113 bytes .../__pycache__/admin.cpython-37.pyc | Bin 0 -> 154 bytes .../__pycache__/models.cpython-37.pyc | Bin 0 -> 151 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 117 bytes .../__pycache__/admin.cpython-37.pyc | Bin 0 -> 158 bytes .../__pycache__/med_client.cpython-35.pyc | Bin 0 -> 8095 bytes .../__pycache__/models.cpython-37.pyc | Bin 0 -> 155 bytes .../__pycache__/urls.cpython-37.pyc | Bin 0 -> 369 bytes .../__pycache__/views.cpython-35.pyc | Bin 713 -> 2079 bytes .../__pycache__/views.cpython-37.pyc | Bin 0 -> 1883 bytes app/manufacturers/med_client.py | 319 ++++++++++++++++++ app/manufacturers/med_exceptions.py | 2 + app/manufacturers/templates/med.html | 8 + app/manufacturers/templates/test.html | 8 + app/manufacturers/views.py | 69 +++- app/med_python/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 114 bytes .../__pycache__/med_client.cpython-37.pyc | Bin 0 -> 7289 bytes app/med_python/sawtooth_med/med_client.py | 319 ++++++++++++++++++ app/med_python/sawtooth_med/med_exceptions.py | 2 + docker-compose-NORMAL.yaml | 250 +++++++------- 29 files changed, 849 insertions(+), 130 deletions(-) create mode 100644 app/home/__pycache__/__init__.cpython-37.pyc create mode 100644 app/home/__pycache__/admin.cpython-37.pyc create mode 100644 app/home/__pycache__/models.cpython-37.pyc create mode 100644 app/home/__pycache__/urls.cpython-37.pyc create mode 100644 app/home/__pycache__/views.cpython-37.pyc create mode 100644 app/logistics/__pycache__/__init__.cpython-37.pyc create mode 100644 app/logistics/__pycache__/admin.cpython-37.pyc create mode 100644 app/logistics/__pycache__/models.cpython-37.pyc create mode 100644 app/manufacturers/__pycache__/__init__.cpython-37.pyc create mode 100644 app/manufacturers/__pycache__/admin.cpython-37.pyc create mode 100644 app/manufacturers/__pycache__/med_client.cpython-35.pyc create mode 100644 app/manufacturers/__pycache__/models.cpython-37.pyc create mode 100644 app/manufacturers/__pycache__/urls.cpython-37.pyc create mode 100644 app/manufacturers/__pycache__/views.cpython-37.pyc create mode 100644 app/manufacturers/med_client.py create mode 100644 app/manufacturers/med_exceptions.py create mode 100644 app/manufacturers/templates/test.html create mode 100644 app/med_python/__init__.py create mode 100644 app/med_python/__pycache__/__init__.cpython-37.pyc create mode 100644 app/med_python/sawtooth_med/__pycache__/med_client.cpython-37.pyc create mode 100644 app/med_python/sawtooth_med/med_client.py create mode 100644 app/med_python/sawtooth_med/med_exceptions.py diff --git a/app/app/__pycache__/settings.cpython-37.pyc b/app/app/__pycache__/settings.cpython-37.pyc index 1064b3a694f96314eee348e47382e93fb44a3b89..f304256fdce11a901bb5d8b55731a5677ccaa07d 100644 GIT binary patch delta 358 zcmY*Uy-or_7`$E9kcEw$W#9D>XA~EMbze${3mD2Ov8@e_yOh+P8k3I delta 295 zcmXw!Jx;?w5QTTwn_b7TlQ?k_eiF=2z)(N|G*BTp0U%L~MEA_%lu1E_I0JGM2^Vkz zgxqiju0hQe5KAP#(f9O?G|jw+^DsFN0*~3eT%O!&pRw=%rHX6i%rg6WPL7@oqdIC( z&~QD|GFt(z=;C_kNJ!FBmlI~6Ln-%R6t-`yQwS(U-LXx`%&TT05}- diff --git a/app/app/__pycache__/urls.cpython-37.pyc b/app/app/__pycache__/urls.cpython-37.pyc index 961ee4a332c7272091564e0e6e3e9b9ad5e33d3a..07a45751a940bd037cee34fe8ea6dd2491b998ee 100644 GIT binary patch delta 203 zcmaFIHk+y5iIBk@r46p(j4nSON10+%yQW$d>av7r-89{8O9Hw06 zDCS(2C>BPBROS@sRK_gUEVgDQAe$wXC55$_v6(5IDT+OXEto-*{Uy)@22I9WtcfYP znR%K_w^#}iOEPXLuxI8a=ai20O&a?LI3~& literal 878 zcma)4&5qMB5KhvxyJUBPN0?h0sl?D56(C^6ij@!&f0s%q>&9;DDz+or0hTL|!4vRG zxpLZ9;KbN%r3wjYE!i3;pJ%@Bn|XP5mPNRJzI*)nCW)fo{<2>K44&h*5Ak5pJYq3R znph_DB=+&38OU^=#t~0h%9G7-Gy0LN;`tF9eu#<@Z7?BiTln<;4V-JW6syiqC$!44 zk82KBooQO?95>2dK_jdKqdUi~e_+9B_#*gMTf&7lAhqEj)KVK6Qb5~qYB^ZWXBpsH zJJ;G7Axzh{WE-khx;1*kYgg7<60XR!oD!#7QCs4{1j}2Jz4}Ha=CZTwqEoeJw=Elz zJ}Th_V?Y%M*=plv0867K$m_}r+kQO2Pj~nr83i0D#HT2BJg`k0_JqfSP=afM8E(ekl_Ht#VkM~g&~+hlhJP_LlHg`k0_JqfSbHG-7{q}ACLqHBh>Hb)L<&O+V-7g`k0_JqfSW6)N7{q}ACLqHBh>Hb)L<&O+V-7&i!_%S2_eJ>&>&GnqA;FGWLU=x?>J~CxsFZJ zC6p*8W0mYunaK2=fyxw@s{=hmz;oaQ@(t@US>BVTIzl#SXo!V0gKeU~CoykBI@n$> zQXOHall?NNS06~=+tDbv&#f?OUmIbUXVK4#Q_i>hi+_5(IPLej9yf!ZhaUX;kDt7| zW)*6=6LvGM`_ayBcybXu7>b`J1~>*C#}QHlT#L&9LIE~RJ1b}X2XPe|2w&%|n5Gsd dZ82dzy@l+`jB?TH8b9Q5=_Ng*WmMCWegn#mWgh?l literal 0 HcmV?d00001 diff --git a/app/home/__pycache__/views.cpython-37.pyc b/app/home/__pycache__/views.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f8ad42bfb638e31b91f6c3e7e973c74d415e3a6 GIT binary patch literal 277 zcmYjLJqyAx5WS@J15ptt|3a5`7DPmM7q^0gc)=>Itx2jVZu)1O{Wo2m{0mOr1q2_w zcez~NyG%Qs77(7B;S#C7xcNcSVL~(m5(E?}WFi&!kC*i+i|R?KgR7l3d$$X^l&DW0&?PHL_IAQI=zwsxkl8g|+1u DUP(5c literal 0 HcmV?d00001 diff --git a/app/logistics/__pycache__/__init__.cpython-37.pyc b/app/logistics/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c77ae19eb16267e7d9d78914e416e2806550226 GIT binary patch literal 113 zcmZ?b<>g`kg4SfqSP=afM8E(ekl_Ht#VkM~g&~+hlhJP_LlHg`kg4SfqSbHG-7{q}ACLqHBh>Hb)L<&O+V-72KczG$)s7LU_A?MO002UcAg`kg4SfqSW6)N7{q}ACLqHBh>Hb)L<&O+V-7g`k0=`7cSP=afM8E(ekl_Ht#VkM~g&~+hlhJP_LlHg`k0=`7cSbHG-7{q}ACLqHBh>Hb)L<&O+V-72KczG$)s7LU{xc9W005QKBLx5e literal 0 HcmV?d00001 diff --git a/app/manufacturers/__pycache__/med_client.cpython-35.pyc b/app/manufacturers/__pycache__/med_client.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e432a0cd9911805da3df4410ddab9340dd8ff37b GIT binary patch literal 8095 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 literal 0 HcmV?d00001 diff --git a/app/manufacturers/__pycache__/models.cpython-37.pyc b/app/manufacturers/__pycache__/models.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..023ba19c0162579c159622df118ebadf62b7526a GIT binary patch literal 155 zcmZ?b<>g`k0=`7cSW6)N7{q}ACLqHBh>Hb)L<&O+V-7nC3Ye^;c*BK!UZ^tTdKVR6*FiV z$-m~Cv44+!y3^2)MhH< z%m_$Lw$CAh{6ioWNCgx}Dv?SkiFQI&P~EYnKA=BqcuY0e-Ze>-lb)Yq-n(vCz#MR} zzxGRSUPELt?H!mmJRqI6Cdyfd=U7_tZ^gGG8^y0C-W!NAo)3K^)$6syX6t@TfFh1CDZNn9*YY* U!ZMgknmdr$il6e8*zgVi1%x_URsaA1 literal 0 HcmV?d00001 diff --git a/app/manufacturers/__pycache__/views.cpython-35.pyc b/app/manufacturers/__pycache__/views.cpython-35.pyc index dfeee660c8f7b1bac9f4763dc611bc805a01f544..4636e2e635f4677d1b458179db48a04597c16408 100644 GIT binary patch literal 2079 zcmaJ?%Wm6N5FNfGN}_DXk35<-FaorIx{#c15*S61z-iH-iCg5+1%X0f#A}N(MY8u^ z#gS}v+VbB5R3?dJY(Pk#CI!C{5A^pN6^L`b6s zjhfc!(}la(E}*s>HltxzHpcK>AtbUDBk6v`v z-ywYJIHo2=kqQYd`c~`exlmPEC~-Ku(;Jp!(HkaG4SSU=M`ECRW0Cf&sUDUE7BrrT z^dQefp=UcotljVR?tO8;yNB!E{)4@}2Lp!>!Ovel2l!VHA(I)@)KUBn+8zIT3^HM%M})n%!N#y=5LHEW*DduQ`*C9^l3 zz__I{ewARfDc)8|kxrD5#vhegVQNRE94ETt8$Xf9%7i>tBx7NGe($)B{rYJpelJvGa)Z@J4NEcIpe_e{7Cqii(;6iL*!~}Nob*PGG zk|VbuFHd9N7a_}LZ6HOW#k1vUCVZVJ(VxiN zFhiMKlIar%N|%EZ(?}+I*ta}yTeV7*IxS^7Yp+_{?*8uCeAdulj;&4;%4O5*tjQfd zGfZ(Jf=qklc{O2D;2p;B!?C+;~(4jEu&5A@z>uxdiC^W|JC!SlDnSV&CB<>sRl`#1!9*+j#-_D&^M^um`!RJiNX`x#4Xk!`a@xp|sehA)%U@m;*j@-uY#0qDcmW&aWb3;yR=WfNmNpzR|z%q!qnm~7h&zZ{q8 cBo|+CJt@w`hO>bNw7Rz34G+N7BQL7|4clVUd;kCd delta 372 zcmZ9Hu}Z{15QhKV+hlXOL?VJzrC@&MMB zcD}+@_ScCo;>;p)I55Mvv%CNN^O~)K>28|F?;o>^X90X;BP8(&Ww%&P56lQw;R!fb zumNo7nLxuvo?_25Ka%D^5u~`F5(jWm5^wy z`l7qiL>=Ekq#_ZibTM&BCVj9H=P6~kP30cA1gyZ`gMbA&k@-4lDqELzTjfPl8R5qC z&`9SeA5Q4-fAoYt^sZ>TqU^U=`qyznoEtsNw3$1$=G{1MZ%Ft({0h-=b7OC>t2z7i LYh)sm$tcl3*Rnca diff --git a/app/manufacturers/__pycache__/views.cpython-37.pyc b/app/manufacturers/__pycache__/views.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bcf3eb95dc564ae81cf8c95c16fcd1d9997add81 GIT binary patch literal 1883 zcmZWq&2Aev5MFY3wLeBgnz0c#%;?3Q8U5Jj{wO#N zVdgBTIpt=}Nfbwb8*z(y%>UJj+bm!qj4Q0kA{bX$i?w0A!t5tjXXO>xVReXZ2%a-8 z07c&_RX*mjEON>B=C^ypV#0gFM95*U6vc=SRBysrznrOIk;8#tm$RKL<+++)AHvz~ zUhnRwpLMsO-QB*owRLYm@Dli;_b&7u=<*W~l~ogEjmRlwWI<|buw79`nZ2-Un>nXW zWmjZD!B%(gHTiiSbY*g=ib4&wGv+fn50C2JQQa*?`l91%T1f4b39N?vWtrq`D!I_k zs7Q0&*e}E+Q5{D+i8zqj$F)3}aP6Rvu?OGlvsC=4=481jN^6*Z*5t`ArV=n;tJpkztMjiy73!>LxJav9HUosZyu&V z{mbr9O|lLV6xM-NPw=0nTqpv~an(mKsjLxPbqk2D z2%}>vHWY!&ZM@td2NAOj!P+ZImBPcvHazj%2Vu;bx0Fb7xzEL!l~g-FeE;O>nXOc; z!9C&{3MAr^v5rdQ_!j7v9Q=_v1*#?bB#UGW=T4M*s)+nqf1f^5CRZxWtRv`r~);;R03F@|L zvenb5YA?t!q`YduJ6vIFRXZien2cBVw6j0W2RZ`Y(?Oc^Jq*t9eD?5xUOUI%@!3w1 zD@Zzh^;~y9%a%H+BZ&S~%ywbVP-=I27UqXZs?rIB<11ubw+DhJitjFO>rm}KPbBY8 zMW!(sFth~*FQkksRWTTg+juTWrfS$Xnbk6|Or$(41nb!1UDzPrL-9U{dF#BAY;JEJ z)$>3>NSheazF5|nPFq~ZulfvZ0rMao5ouQyESc#5Rg7mU5omP0^lV~0GkK<)55E59 z{_`d{bg6Sr8pnz<`x_kt}BH@1<4arUF69;+(%^~!S z7TRxWecHA~55Ct~)2nQh 0: + wait_time = 0 + start_time = time.time() + response = self._send_request( + "batches", batch_list.SerializeToString(), + 'application/octet-stream', + auth_user=auth_user, + auth_password=auth_password) + while wait_time < wait: + status = self._get_status( + batch_id, + wait - int(wait_time), + auth_user=auth_user, + auth_password=auth_password) + wait_time = time.time() - start_time + + if status != 'PENDING': + return response + + return response + + return self._send_request( + "batches", batch_list.SerializeToString(), + 'application/octet-stream', + auth_user=auth_user, + auth_password=auth_password) + + + def _create_batch_list(self, transactions): + transaction_signatures = [t.header_signature for t in transactions] + + header = BatchHeader( + signer_public_key=self._signer.get_public_key().as_hex(), + transaction_ids=transaction_signatures + ).SerializeToString() + + signature = self._signer.sign(header) + + batch = Batch( + header=header, + transactions=transactions, + header_signature=signature) + return BatchList(batches=[batch]) diff --git a/app/manufacturers/med_exceptions.py b/app/manufacturers/med_exceptions.py new file mode 100644 index 0000000..79501da --- /dev/null +++ b/app/manufacturers/med_exceptions.py @@ -0,0 +1,2 @@ +class MedException(Exception): + pass diff --git a/app/manufacturers/templates/med.html b/app/manufacturers/templates/med.html index 6ef5d5d..f373f85 100644 --- a/app/manufacturers/templates/med.html +++ b/app/manufacturers/templates/med.html @@ -32,6 +32,14 @@
+
+ +
+ diff --git a/app/manufacturers/templates/test.html b/app/manufacturers/templates/test.html new file mode 100644 index 0000000..9630053 --- /dev/null +++ b/app/manufacturers/templates/test.html @@ -0,0 +1,8 @@ + + +

NICE

+ + + {{ response }} + + \ No newline at end of file diff --git a/app/manufacturers/views.py b/app/manufacturers/views.py index a7d2b61..49dfcdd 100644 --- a/app/manufacturers/views.py +++ b/app/manufacturers/views.py @@ -1,5 +1,23 @@ from django.shortcuts import render from django.http import HttpResponse +import getpass +import datetime +import pkg_resources +import traceback +import sys +sys.path.insert(0, '/home/harsh/project/med_python') + +from med_python.sawtooth_med.med_client import MedClient + + +DEFAULT_URL = 'http://127.0.0.1:8008' + +def _get_keyfile(args): + username = args + home = os.path.expanduser("~") + key_dir = os.path.join(home, ".sawtooth", "keys") + + return '{}/{}.priv'.format(key_dir, username) def index(request): return render(request, 'index.html') @@ -12,8 +30,51 @@ def task(request): return render(request, 'transfer.html') def medtransact(request): + func = request.POST['func'] medicineName = request.POST['medicineName'] - medicineName = request.POST['medicineId'] - medicineName = request.POST['medicineKeyContent'] - medicineName = request.POST['medicineAllContents'] - medicineName = request.POST['ExpiryMonths'] + medicineID = request.POST['medicineID'] + medicineKeyContent = request.POST['medicineKeyContent'] + medicineAllContents = request.POST['medicineAllContents'] + expiryMonths = request.POST['expiryMonths'] + uname = request.POST['uname'] + wait = request.POST['wait'] + + manufactureDate = datetime.date.today() + expiryDate = manufactureDate + datetime.timedelta((args.expirymonths)*365/12) + + keyfile = _get_keyfile(uname) + url = DEFAULT_URL + + if func == 'createMedicine': + client = MedClient(base_url = url , keyfile= keyfile) + if wait and wait > 0: + response = client.createMedicine( + medicineName, + medicineID, + medicineKeyContent, + medicineAllContents, + manufactureDate, + expiryDate, + stock = 0, + wait = wait, + auth_user = None, + auth_password = None + ) + else: + response = client.createMedicine( + medicineName, + medicineID, + medicineKeyContent, + medicineAllContents, + manufactureDate, + expiryDate, + stock = 0, + auth_user = None, + auth_password = None + ) + print("Response : {}".format(response)) + + + return render(request, 'test.html', {'response': response}) + + diff --git a/app/med_python/__init__.py b/app/med_python/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/med_python/__pycache__/__init__.cpython-37.pyc b/app/med_python/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4eedd3555592b0158ab5a2421cfe34f0329e1f6f GIT binary patch literal 114 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 0: + wait_time = 0 + start_time = time.time() + response = self._send_request( + "batches", batch_list.SerializeToString(), + 'application/octet-stream', + auth_user=auth_user, + auth_password=auth_password) + while wait_time < wait: + status = self._get_status( + batch_id, + wait - int(wait_time), + auth_user=auth_user, + auth_password=auth_password) + wait_time = time.time() - start_time + + if status != 'PENDING': + return response + + return response + + return self._send_request( + "batches", batch_list.SerializeToString(), + 'application/octet-stream', + auth_user=auth_user, + auth_password=auth_password) + + + def _create_batch_list(self, transactions): + transaction_signatures = [t.header_signature for t in transactions] + + header = BatchHeader( + signer_public_key=self._signer.get_public_key().as_hex(), + transaction_ids=transaction_signatures + ).SerializeToString() + + signature = self._signer.sign(header) + + batch = Batch( + header=header, + transactions=transactions, + header_signature=signature) + return BatchList(batches=[batch]) diff --git a/app/med_python/sawtooth_med/med_exceptions.py b/app/med_python/sawtooth_med/med_exceptions.py new file mode 100644 index 0000000..79501da --- /dev/null +++ b/app/med_python/sawtooth_med/med_exceptions.py @@ -0,0 +1,2 @@ +class MedException(Exception): + pass diff --git a/docker-compose-NORMAL.yaml b/docker-compose-NORMAL.yaml index cc4920c..5328016 100644 --- a/docker-compose-NORMAL.yaml +++ b/docker-compose-NORMAL.yaml @@ -2,144 +2,144 @@ version: '3.6' services: - settings-tp: - image: hyperledger/sawtooth-settings-tp:nightly - container_name: sawtooth-settings-tp - volumes: - - keyshare:/root - - blocks:/var/lib/sawtooth - - node:/project - depends_on: - - validator - command: | - bash -c " - settings-tp -vv -C tcp://validator:4004 - " - stop_signal: SIGKILL + # settings-tp: + # image: hyperledger/sawtooth-settings-tp:nightly + # container_name: sawtooth-settings-tp + # volumes: + # - keyshare:/root + # - blocks:/var/lib/sawtooth + # - node:/project + # depends_on: + # - validator + # command: | + # bash -c " + # settings-tp -vv -C tcp://validator:4004 + # " + # stop_signal: SIGKILL - med-tp-python: - image: harsh/med:v3 - container_name: sawtooth-med-tp-python - volumes: - - keyshare:/root - - blocks:/var/lib/sawtooth - - node:/project - depends_on: - - validator - command: | - bash -c " - med-tp-python -vv -C tcp://validator:4004 - " - stop_signal: SIGKILL + # med-tp-python: + # image: harsh/med:v3 + # container_name: sawtooth-med-tp-python + # volumes: + # - keyshare:/root + # - blocks:/var/lib/sawtooth + # - node:/project + # depends_on: + # - validator + # command: | + # bash -c " + # med-tp-python -vv -C tcp://validator:4004 + # " + # stop_signal: SIGKILL - transfer-tp-python: - image: harsh/transfer:v1 - container_name: sawtooth-transfer-tp-python - volumes: - - keyshare:/root - - blocks:/var/lib/sawtooth - - node:/project - depends_on: - - validator - command: | - bash -c " - transfer-tp-python -vv -C tcp://validator:4004 - " - stop_signal: SIGKILL + # transfer-tp-python: + # image: harsh/transfer:v1 + # container_name: sawtooth-transfer-tp-python + # volumes: + # - keyshare:/root + # - blocks:/var/lib/sawtooth + # - node:/project + # depends_on: + # - validator + # command: | + # bash -c " + # transfer-tp-python -vv -C tcp://validator:4004 + # " + # stop_signal: SIGKILL - client: - image: hyperledger/sawtooth-shell:nightly - container_name: sawtooth-shell - volumes: - - keyshare:/root - - blocks:/var/lib/sawtooth - - node:/project - depends_on: - - validator - command: | - bash -c " - sawtooth keygen && - tail -f /dev/null - " - stop_signal: SIGKILL + # client: + # image: hyperledger/sawtooth-shell:nightly + # container_name: sawtooth-shell + # volumes: + # - keyshare:/root + # - blocks:/var/lib/sawtooth + # - node:/project + # depends_on: + # - validator + # command: | + # bash -c " + # sawtooth keygen && + # tail -f /dev/null + # " + # stop_signal: SIGKILL - validator: - image: hyperledger/sawtooth-validator:nightly - container_name: sawtooth-validator - volumes: - - blocks:/var/lib/sawtooth - - node:/project - expose: - - 4004 - - 8800 - - 5050 - ports: - - "4004:4004" - # start the validator with an empty genesis batch - command: | - bash -c " - sawadm keygen - sawset genesis \ - -k /etc/sawtooth/keys/validator.priv \ - -o config-genesis.batch && \ - sawset proposal create \ - -k /etc/sawtooth/keys/validator.priv \ - sawtooth.consensus.algorithm.name=Devmode \ - sawtooth.consensus.algorithm.version=0.1 \ - -o config.batch && \ - sawadm genesis config-genesis.batch config.batch && \ - sawtooth-validator -vv \ - --endpoint tcp://validator:8800 \ - --bind component:tcp://eth0:4004 \ - --bind network:tcp://eth0:8800 \ - --bind consensus:tcp://eth0:5050 \ - " - stop_signal: SIGKILL - + # validator: + # image: hyperledger/sawtooth-validator:nightly + # container_name: sawtooth-validator + # volumes: + # - blocks:/var/lib/sawtooth + # - node:/project + # expose: + # - 4004 + # - 8800 + # - 5050 + # ports: + # - "4004:4004" + # # start the validator with an empty genesis batch + # command: | + # bash -c " + # sawadm keygen + # sawset genesis \ + # -k /etc/sawtooth/keys/validator.priv \ + # -o config-genesis.batch && \ + # sawset proposal create \ + # -k /etc/sawtooth/keys/validator.priv \ + # sawtooth.consensus.algorithm.name=Devmode \ + # sawtooth.consensus.algorithm.version=0.1 \ + # -o config.batch && \ + # sawadm genesis config-genesis.batch config.batch && \ + # sawtooth-validator -vv \ + # --endpoint tcp://validator:8800 \ + # --bind component:tcp://eth0:4004 \ + # --bind network:tcp://eth0:8800 \ + # --bind consensus:tcp://eth0:5050 \ + # " + # stop_signal: SIGKILL - rest-api: - image: hyperledger/sawtooth-rest-api:nightly - container_name: sawtooth-rest-api - volumes: - - keyshare:/root - - blocks:/var/lib/sawtooth - - node:/project - ports: - - "8008:8008" - depends_on: - - validator - command: | - bash -c " - sawtooth-rest-api -v --connect tcp://validator:4004 --bind rest-api:8008 - " - stop_signal: SIGKILL + # rest-api: + # image: hyperledger/sawtooth-rest-api:nightly + # container_name: sawtooth-rest-api + # volumes: + # - keyshare:/root + # - blocks:/var/lib/sawtooth + # - node:/project + # ports: + # - "8008:8008" + # depends_on: + # - validator + # command: | + # bash -c " + # sawtooth-rest-api -v --connect tcp://validator:4004 --bind rest-api:8008 + # " + # stop_signal: SIGKILL - devmode-rust: - image: hyperledger/sawtooth-devmode-engine-rust:nightly - container_name: sawtooth-devmode-engine-rust - volumes: - - keyshare:/root - - blocks:/var/lib/sawtooth - - node:/project - depends_on: - - validator - command: | - bash -c " - devmode-engine-rust -v --connect tcp://validator:5050 - " - stop_signal: SIGKILL - - # web: - # image: harsh/nodeapp:v1 - # ports: - # - "3000:3000" + # devmode-rust: + # image: hyperledger/sawtooth-devmode-engine-rust:nightly + # container_name: sawtooth-devmode-engine-rust # volumes: # - keyshare:/root # - blocks:/var/lib/sawtooth + # - node:/project + # depends_on: + # - validator + # command: | + # bash -c " + # devmode-engine-rust -v --connect tcp://validator:5050 + # " + # stop_signal: SIGKILL + + # dkr: + # image: docker + # privileged: true + # working_dir: "/dkr" + # volumes: + # - ".:/dkr" + # - "/var/run/docker.sock:/var/run/docker.sock" + # command: docker ps -a app: image: harsh/djangoapp:v1 From 3610124b1ad8ddba1fe31ae4751dd6d27d217843 Mon Sep 17 00:00:00 2001 From: HarshDonga Date: Thu, 8 Aug 2019 09:29:11 +0530 Subject: [PATCH 4/4] web integration ##3 --- app/app/__pycache__/settings.cpython-37.pyc | Bin 2223 -> 2202 bytes app/app/management/commands/run.py | 9 + app/app/settings.py | 2 +- app/db.sqlite3 | Bin 0 -> 40960 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 119 bytes app/logistics/__pycache__/urls.cpython-37.pyc | Bin 0 -> 304 bytes .../__pycache__/views.cpython-37.pyc | Bin 0 -> 328 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 124 bytes app/management/commands/run.py | 9 + .../__pycache__/views.cpython-35.pyc | Bin 2079 -> 2144 bytes .../__pycache__/views.cpython-37.pyc | Bin 1883 -> 1824 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 128 bytes app/manufacturers/templates/med.html | 4 +- app/manufacturers/views.py | 6 +- .../__pycache__/__init__.cpython-37.pyc | Bin 114 -> 0 bytes .../__pycache__/med_client.cpython-37.pyc | Bin 7289 -> 0 bytes app/med_python/sawtooth_med/med_client.py | 319 ------------------ app/med_python/sawtooth_med/med_exceptions.py | 2 - djangodocker | 3 + docker-compose-NORMAL.yaml | 4 +- {app/med_python => med_python}/__init__.py | 0 .../__pycache__/med_client.cpython-35.pyc | Bin 7655 -> 8101 bytes requirements.txt | 2 + 23 files changed, 31 insertions(+), 329 deletions(-) create mode 100644 app/app/management/commands/run.py create mode 100644 app/home/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 app/logistics/__pycache__/urls.cpython-37.pyc create mode 100644 app/logistics/__pycache__/views.cpython-37.pyc create mode 100644 app/logistics/migrations/__pycache__/__init__.cpython-37.pyc create mode 100755 app/management/commands/run.py create mode 100644 app/manufacturers/migrations/__pycache__/__init__.cpython-37.pyc delete mode 100644 app/med_python/__pycache__/__init__.cpython-37.pyc delete mode 100644 app/med_python/sawtooth_med/__pycache__/med_client.cpython-37.pyc delete mode 100644 app/med_python/sawtooth_med/med_client.py delete mode 100644 app/med_python/sawtooth_med/med_exceptions.py rename {app/med_python => med_python}/__init__.py (100%) diff --git a/app/app/__pycache__/settings.cpython-37.pyc b/app/app/__pycache__/settings.cpython-37.pyc index f304256fdce11a901bb5d8b55731a5677ccaa07d..504783246d7d5892c3ed899dea0d1c1cd0421dce 100644 GIT binary patch delta 206 zcmW-ZJ5B;o7)Iy6xsJ@h1%{`nAWso`TMJ7q?f%5>kehK0Ca!_d5eis=F>J(Ln79KP z!VOE-8?ZQlx~V>=R9?P$i>AoraIK zNK;F+e1xUV6&}~k-9kRhwz7!n?+k;D$wjLS8HIAl`0UBq_qq6i m)r_guc+fgl8-Zq^#Z23nw`ey1Ip$(yzW+3T7ZR^1yq*9eu`&z* delta 227 zcmW-XKS~2Z97cDBaoycyl5CPqjQ@4j7zHtc*js8LlI{l<;tS)3KtQc*JVUUP6nX*? zZ{j7qgoQ)C$9vWHmVT!8+}b4Yd$_*18BA?Q{Y<;3FN97@%pwsn2_?!{DpXx82{lsc zG-#5!P)f9N-XPAVS~+~8tM1yFl6gPvpv&=k{UTX{+Y8o z@7}!KB3I5x%D&X;NdqHIZ{}@rAZ_#@=pBCj6)KCzle^pT{p9iKIqsjF9UXi6-%kH7 KsOa@7y8H*cbvIxD diff --git a/app/app/management/commands/run.py b/app/app/management/commands/run.py new file mode 100644 index 0000000..766a181 --- /dev/null +++ b/app/app/management/commands/run.py @@ -0,0 +1,9 @@ +from django.core.management.commands.runserver import Command as RunServer + +class Command(RunServer): + + def check(self, *args, **kwargs): + self.stdout.write(self.style.WARNING("SKIPPING SYSTEM CHECKS!\n")) + + def check_migrations(self, *args, **kwargs): + self.stdout.write(self.style.WARNING("SKIPPING MIGRATION CHECKS!\n")) diff --git a/app/app/settings.py b/app/app/settings.py index ebe2961..7872365 100644 --- a/app/app/settings.py +++ b/app/app/settings.py @@ -25,7 +25,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = ['localhost', '127.0.0.1'] +ALLOWED_HOSTS = ['*'] # Application definition diff --git a/app/db.sqlite3 b/app/db.sqlite3 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..64e779e2323c7a2e1f6f2ad34933518a481d0916 100644 GIT binary patch literal 40960 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 Zkogm{9OP#wfBxU19vV1{{vh#;XeQX literal 0 HcmV?d00001 diff --git a/app/home/migrations/__pycache__/__init__.cpython-37.pyc b/app/home/migrations/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a1c758c74e9d7ce7abad4733c33a04770e0f8edd GIT binary patch literal 119 zcmZ?b<>g`k0_JqfSP=afM8E(ekl_Ht#VkM~g&~+hlhJP_LlHZI`6X4x_jUn&p{x9A^jl0M3FAS(;{x}} z>4$ccuHdZvFdq8R&%r#00yolb9WKGfz;F_HMwL-!)QGf08PCl+`1nmilZA}mn@&wr gXUD`J*ktj~FbqPvh<8^qoAW`ul{8Cyf zeu0YJ2qae8*|9yIvCq0W6^EV=aFt~FZIqppC@sd%#eIW^7+JlVehS;*CMTGYqOtLuwR zkrTg`kg4SfqSP=afM8E(ekl_Ht#VkM~g&~+hlhJP_LlHL5bH(V!GP4#FKFAe9bYn>(6YnC z!w!S-9X)u}zs8f7fI|=uo;`^d-#03bCHWqn@5z(*dw=Ae_r+^gUANeNd;jTW3*al9 zxK!k~aV4LQnw>okz*UGX2rY;#7!+Y(1Bn{!E5L~95IZn(A$0%j4TwuHDnnSty$PWQ zya3#S*8t%h@FH+K=RR-;xSR6;cnNqp=M_5fQOo;|NgRE<=e1boJc#(_ZZFzS`;)O; zWyj2uuCfu#QJw_^U^1b@z+SGu3MrBp7qB_#rtO%(AQLT35(=st@)k;;HD4lWs3vmdC~tYsg>5x^aaf&dVF-8oMY*=GjF-L&((R zRU+_zg3RcTlSrgtO@1(!_QHD7eVI-s>5C2qT*cLi{!KFxIvsq8fC>^7f*Jvxaw4NV kw|t(3o1+QeiKAN#9mzQak9jzv|97CEq8f^0I;z9W-)7^JQ~&?~ delta 725 zcmZ8eOKTHR6h3!mGBe4{WG0!I_^73%v{;cW+D#P^iw`KqjanB25<>1ko|ACr78^)# z5pidw+#le|t^58DS6PVQKhR|nJ!kBq^v;~acfWhy=ST24Sg(3s;og`1H)l4$Pq=V& z#1B!@)06d9E4HDZhkgM#05@Qv0V9-yp#viqA{Xx_L>_PpxDD?Cq9X7-@Ir=t;0|y% z!vSzKD`vO^T!)ui{>h)`Dq`Q6ukLDlp-*YC9sp*tGP|mYlKQAM>%@yp1&EfpUc%#} zD#BDl1x$qMOgny7Ml33%E;$&ooer+y!+CIzxy;i9Md&b8bjXF|5lT8#-}DdLeUmz= zU@JEk3~KWNNDF2b;AQTBv|;YTj8TUJ4a93E^XijP3qv-usn3A{0Vr*E2v+_ zoeGYl41IJgQXKr5^wf6lw_X%i)Gc#kU$|I7>-H4DBZ9q_h3&mt*WqY>okH-9P7(bvLrPomfEMQd^xA*@G NwLmvD*K&2&`Uh1{j06Ax diff --git a/app/manufacturers/__pycache__/views.cpython-37.pyc b/app/manufacturers/__pycache__/views.cpython-37.pyc index bcf3eb95dc564ae81cf8c95c16fcd1d9997add81..499f54201ec5247eaacadd4c250665ce82d06083 100644 GIT binary patch delta 652 zcmZWmON$dh5bm1y^vrZ-AL_CXA8~he2`I9NCuL()kX(Q0Q4l=ZRVKdCaLq3l5&6!xh&~3)(q5qaO6AUoaULeOv`wGUGXrH3}gl&n@$DPsd zZy?kcxVA8-_4B}V0S978ElQPdJ**1-LNlo7XzF(Qn7v%mVQy()K=X>MH@l{s77Uy! zaEeymUD3o}aSj1+i_YkmHfS)%D973w+VWrOj-4G#ZvYrBGUO|40_RxC3s3q3D5JtJ zV+j~_E&5pmGL{j>L#s?=K%ZrRN!QUnISi#GZRto?hLWRZ^?VqLAumOL^?!cGR)%3I z3XbVGilmsp0Du*-syUxvP5p2#MpgYmx@=%wardg7(4xBOZq%oCr(aO2iD`82{)76# z-u|B${QC8Q)fgW`jGc-n*OXt9yR?l1a0Vs5kZ6Cxsg( z`P5LO=NT5%>gTO?QB}*{DlDs8-ffsuN8UDUst?{;oxGV;{wgQmL|&(#XH-zl=$Wt5 cyaBTax^CcKkCSz)n!g?gAUwwk{J;+UKY+)HJOBUy delta 758 zcmZWn&1(}u6rb6z?DwW=)rzIW+7F9Z58ebpZ54_YMC~P@A?_?TO|uDarr5$PMeETV z!u$j2!HX9U;?+OEljrpx5Ko>&=*2goAl6yt_a49Z{bon;w>Z8NMLxlEM*6@RDdN~ymKB6C&_*4Qr`fbA*BfV=#UWaDqj9uT{W|VZHIYN zg!vc95j{r=UsPn}kQRY(i%?P)bPV_|JQ+%yb6^yabm6mfS=6ymM%%tLq$w?FOHcX? zt++43;(=ep`ON?Ju{9ZZMJxhV9fi`1kLV$#L_})F`bcNhSF0Xe!uDWZ!-6`tE}Jo& zQH%D%8tC2|VYb(A!+y7yi!BZlNR`3b-Fvq;H=Z;%A8ml81M8Z$`_Rq>1e(xGTuz{- z-r9=>%&HIe#fNj+$=rpV(n-g!1dH1B)MA5f#ssu--bzIs?R*1)Q2*c0@aeRwJ2z=f zJ#(%fETKyo^*b+`kn!Fwq!}+g%#vo$TWO~>`925z6O>Ln=NX8`99C)e_r+E(U*WBn yqSq5!P2^TIf70D}vMU%ho*E{#rr#H?Y53cALeLYc>Zdaw#ztsbhFft>xAF(&_o+?* diff --git a/app/manufacturers/migrations/__pycache__/__init__.cpython-37.pyc b/app/manufacturers/migrations/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2cf9f20c3830716ac745c9f187d336bd3c989748 GIT binary patch literal 128 zcmZ?b<>g`k0=`7cSP=afM8E(ekl_Ht#VkM~g&~+hlhJP_LlH
-