diff --git a/www/Dockerfile b/www/Dockerfile index b912afc09f1458df1ff1d38e35dcb74895148b11..d430958c87c6a80ebc30885886a108fe7152d3c0 100644 --- a/www/Dockerfile +++ b/www/Dockerfile @@ -34,13 +34,13 @@ RUN rm /etc/nginx/sites-enabled/default RUN mkdir /opt/socket/ -COPY misc/ldapdb_base.py /usr/local/lib/python2.7/dist-packages/ldapdb/backends/ldap/base.py +COPY misc/ldapdb_base.py /usr/local/lib/python3.4/dist-packages/ldapdb/backends/ldap/base.py COPY misc/entrypoint.sh /opt/entrypoint.sh ADD web /opt/warpinfra/ ADD nginx /opt/nginx -EXPOSE 8000 +EXPOSE 8000 443 80 VOLUME ["/opt/nginx", "/opt/warpinfra"] diff --git a/www/misc/entrypoint.sh b/www/misc/entrypoint.sh index ac1f3e394c2e27a668417ef69e7753068c18d3af..36f0bbd6497771fea9f0b115ef805bd20302f2f4 100644 --- a/www/misc/entrypoint.sh +++ b/www/misc/entrypoint.sh @@ -5,7 +5,7 @@ cd /opt/warpinfra; python3 manage.py makemigrations python3 manage.py migrate python3 manage.py collectstatic --noinput - +cp -r /opt/warpinfra/static /opt/socket/ uwsgi --ini /opt/nginx/uwsgi.ini --py-autoreload 1 bash diff --git a/www/nginx/nginx_warpinfra.conf b/www/nginx/nginx_warpinfra.conf index 2c993bad8ca369190918e96049225883d1ab4376..33bccbdb8c5588ec727abf923dcb4e811ae9b20d 100644 --- a/www/nginx/nginx_warpinfra.conf +++ b/www/nginx/nginx_warpinfra.conf @@ -4,7 +4,22 @@ upstream django { server { listen 80; - return 301 https://$host$request_uri; + server_name _; + charset utf-8; + + client_max_body_size 100M; # adjust to taste + + location /static { + alias /opt/warpinfra/static; # your Django project's static files - amend as required + } + + # Finally, send all non-media requests to the Django server. + location / { + uwsgi_pass django; + include /opt/nginx/uwsgi_params; # the uwsgi_params file you installed + } + +# return 301 https://$host$request_uri; } # configuration of the server diff --git a/www/nginx/warpinfra.crt b/www/nginx/warpinfra.crt index 57cf97f9d112f676f20dcac1d198bff5f486afcf..f50c90dfdbc476caf4b97e67ca802d49cb6d46de 100644 --- a/www/nginx/warpinfra.crt +++ b/www/nginx/warpinfra.crt @@ -1,33 +1,87 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+s9A9vnnfhuMh +7TJQQ+/pEAY2cQomr2zQqZbkcbZe+7vSf9BnXZbW9WBq932YQI5LT9aopkJrUgGM +BdifjwXG5umIio4Jdp/HduBv7cg5S7aEABsFgNJ7eIRZsQ5J6Ho1ce1HhqcM8eEe +W/IiKBUxfzBkugZ59wk7v6SMcpGNiDKEt9osHEPVKC+2sKII6dA72iLnZg3UeQHa +2ixL4u92Dmvr3mq7Il4wGydvEMLXFYg1L20Qnvy3uOC0MpYG9iz6e5OK+FH4ytCE +vBkOsyWZ5v+//ufThDlQPuIygPXuYUq+cZaIeYpXmVaGtf2gV0XQmvypna6EcsHp +xnEP0tZNAgMBAAECggEAWfO1OTqcgAw/HOSmg+fXxUZyt8FQOXkrya0E6NKeZGU3 +bg4t/mPN3600gqAk1Ok2dV2+ciSiVb8DzcmAKZsr7WtEIszAPMSAj3SKXyF4/VWy +TMdD96+RGP5651e11rTa2FTZyJBCQb/iIRDbwLLJdGR7Ljf1EBiveUhnVHxCHdCc +/HOuGQnEJR1zOO8llTp36XN457ufqWWKSpS507gBmKdQiJDIooclaf71CIkJQBjh +j04O74RlTpTFzHyg/vzn5VDllwokgAJ3g9PgunBmHqCTQCF5chkkBKaubtKa2hx0 +JsXuTS8Zf6TBRNlUXxPC4SwkuUMdRFIcCAlSF8jK3QKBgQDkbtfGC8PAoYTIO6pK +tgRWSkdMkYG6UBoiLpH8qh7KDXT+CRcYdZNsDrH97VxaZlPUccL3Zrw68UVd50St +Vfdke/BD0lkmzjACou4Ebwmp4ZupEE8RghKP7MoWlNLqzLs4T60UzQHMyNIUUxkT +f6hWnuUBxasKkx4a+t2HWvXUrwKBgQDVt1SVcPcjr6VbFqs51LrzX4NU6d/b/il+ +uQS7QENzuCzVviGWAH59yQeVUSBB1xZweennIRnHhcpFYlqKA69VUwkyQb7uZZ4Y +iRvlOAdbBE156LsUE0vU6rFDyCNGvhz5ClKt+nXWoJscl1kY3S5qyPGhkrwBFlQT +594niKq7wwKBgQCt5Pt5lkckg1CzpUgTq9BNaCoyzan2DTh3wP/9WfwqUGg5Yu4j +/o2FewJgjar6Xl9+oEONVrYAIN9vhrivQ3wbEIZs+tpHQjsmJqYO1gCDRG3dG781 +UtGSou2Mlyqg982mJnFaHl46aL4UHtY+E7YwirFG0hVM7YXDgCnX+pSdnQKBgGnj +TrZIZTq6MSyDe8zIeORSg4iT5AVk1XxjAVQhkAoKy7QPYyamEgYSj35M1rWocwbB +cMHCpbo0sLZV99P/5WRaIulSp94IXR9892RHsWVIKXbod6CHuv/AVJnn1IqdcU92 +7OYkfTQdGR0+Y7etBu2DqCzMvfev73J5ZJmj3ivvAoGBAIz13UZrQoj7SdOjUZkJ +xGVjQKZbxJmEPCDXRoEjkPAmNCYiEtgMSD2xYuaSly1qyKwEwaevDzGBVO9Gf9QN +9Lmb4E9OKVehGpdPYT2+MPKO4i0dXfD5w3CP7SXE6zhzInmX5+qEcdAqVemz8QI0 +b2XE2w6nht6kQcMj7MrdCphv +-----END PRIVATE KEY----- + -----BEGIN CERTIFICATE----- -MIIFrTCCA5WgAwIBAgIJAKzK6RrFSz83MA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV -BAYTAkRFMQwwCgYDVQQIDANOUlcxETAPBgNVBAcMCE11ZW5zdGVyMRIwEAYDVQQK -DAlJVFNlY1RlYW0xEzARBgNVBAsMCkZsYWdIdW50ZXIxFDASBgNVBAMMC2ZsYWcu -aHVudGVyMB4XDTE1MTEyMDE5MTQ1OVoXDTE2MTExOTE5MTQ1OVowbTELMAkGA1UE -BhMCREUxDDAKBgNVBAgMA05SVzERMA8GA1UEBwwITXVlbnN0ZXIxEjAQBgNVBAoM -CUlUU2VjVGVhbTETMBEGA1UECwwKRmxhZ0h1bnRlcjEUMBIGA1UEAwwLZmxhZy5o -dW50ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC7toPOwQ1Xcqwk -VJItQC8wifoGeNk/E0k52XYVhvxXsZZI90n3CBp4LEIUMB6tPBwZ/mpI83hUu29f -yWkD1iexWFQF5uJJr4IlAjKjznYuvi7EzbNAQsFTmOYRvmTSVvnONx1PpZFRGEt8 -d4AmeztCMtk9JCV45xPeh7T00mxq7okOFsfrIlKfi7q0N5X1neMK4hgOuRqR+TE3 -MJvcsCKzIi/g1hvrly48OZqhnoBeQZHxbuT2i+jyl56sBjHqRswFxxBOwifEBNsP -V27Q9LWAi6tF1+RU6YYtfD4/en9sLEZ9y9U+Ch9kL82EaScIh234Sxb7VevAdJ3K -b+sL3Vum3JaOwejhTbzMtl2JkTy7knR2PUFW4ZA85MvE6/IChFoYSHVM/rsbUESn -nu08qAQ7AF2Yj/+sPCqc1BUEXxO6qYFeX+yXx4Fbl29xu3d5evbc2CHjVqGuGRyv -2V7XkuUHhvLmYV8AVUFHp1yLxhEZsMl4eSoPjVnNmY/WoljJeNjC7XmHwllsvqJt -59meh7FkD28DPducKnjfsKElqbc5pjeVi24302nHTS41eExalgHCd07j2sQVjXgF -C3BUP2Jl+tU2QV5/jRH2GCLMkhEwP/lPdK5usS9jXhJo0sb56M1ak4ECfavrxHHh -TSmgD9IaqP0ChOVIZ04DuxYxX2MURQIDAQABo1AwTjAdBgNVHQ4EFgQUC/Jkv7Vf -f/VAeY8zrBqvyWe+L4cwHwYDVR0jBBgwFoAUC/Jkv7Vff/VAeY8zrBqvyWe+L4cw -DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAeTtgmsIFI6LgxbyAIc/8 -dZXmP9DKXZkv17UEAKoJC/d+IOqDogXoeRhbo2cLmIXCE5cmhp+xsXZnxke4Oq39 -az6eBlcwaPUUTlzP5MiIqDpzbhi6sjQhp5FmH2/RtFkVzjpNm2NP+7IW1lAxx3is -qxXBCVXYXmiHL6rW5BwNrlGDqwUhFDVZJL4QIBENqwMC7qTubYiukBdaqWz8uTYs -WFOo73fYqG/SNbFifq78czTRoXTTr085Yxnprr4whuqTPpmBd42IUzOxRHF5ICPX -316S6X3b65mTzzz15p1KquUe+VsULnUZTtOOeyIqpm8VWSu4EoKK0c2w8bZkgImR -ttAMRnA4S00ZuhQ1CnJgMX/54krJWdswJH7O+fTsu7A7jy2PhADbyhPx61pVyH2H -zYm+7RPlvGgdkqvdyO6EeZN1RRIPkyUb+6bbCwHPIDRc+DXh5dq4w0wN7vctMMri -eo+OrxK97O4egmg67J3XCYBCmPsnH0vaV/UTOgmyeo7Y8NqMulUOCVz1PhidW0r2 -M7dRB7958G6Z1tuuFXr0Y+88RDyTHdu9XqCLHjLAjF2PIqhPHZ59KnHVmb4bWICK -4D3rdOS0woeiXCxUQxekBh8ZMBIzyeUONrkYykBwV5sZrMZt26GGMlNyJ7uYcFzW -MsRX8eO4RytlNdVSGVSrLpQ= +MIIE/jCCA+agAwIBAgISA1hyjstoi3F5Iclnmu5EQMScMA0GCSqGSIb3DQEBCwUA +MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD +ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjA4MjgxNDI5MDBaFw0x +NjExMjYxNDI5MDBaMBgxFjAUBgNVBAMTDWRldi5keWhvc3QuZGUwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+s9A9vnnfhuMh7TJQQ+/pEAY2cQomr2zQ +qZbkcbZe+7vSf9BnXZbW9WBq932YQI5LT9aopkJrUgGMBdifjwXG5umIio4Jdp/H +duBv7cg5S7aEABsFgNJ7eIRZsQ5J6Ho1ce1HhqcM8eEeW/IiKBUxfzBkugZ59wk7 +v6SMcpGNiDKEt9osHEPVKC+2sKII6dA72iLnZg3UeQHa2ixL4u92Dmvr3mq7Il4w +GydvEMLXFYg1L20Qnvy3uOC0MpYG9iz6e5OK+FH4ytCEvBkOsyWZ5v+//ufThDlQ +PuIygPXuYUq+cZaIeYpXmVaGtf2gV0XQmvypna6EcsHpxnEP0tZNAgMBAAGjggIO +MIICCjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF +BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHahdg/WaDq0yPz59/SZOwb9HmLX +MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAGCCsGAQUFBwEBBGQw +YjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y +Zy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v +cmcvMBgGA1UdEQQRMA+CDWRldi5keWhvc3QuZGUwgf4GA1UdIASB9jCB8zAIBgZn +gQwBAgEwgeYGCysGAQQBgt8TAQEBMIHWMCYGCCsGAQUFBwIBFhpodHRwOi8vY3Bz +LmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYBBQUHAgIwgZ4MgZtUaGlzIENlcnRpZmlj +YXRlIG1heSBvbmx5IGJlIHJlbGllZCB1cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBh +bmQgb25seSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIENlcnRpZmljYXRlIFBvbGlj +eSBmb3VuZCBhdCBodHRwczovL2xldHNlbmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzAN +BgkqhkiG9w0BAQsFAAOCAQEAl598A9BClTRIh84bzUTSSGu8nym9IOpl5and/gCX +IsB1w66ZhJDcJC21mXkQWRSSysenwX0zayRaNs2KMZviyr32RTTfNPJHXFROYiNl +G0iQodNvEhkF05/QEPS2DvFWqwU9nkxZ9byzzvciwFVHh1RqDzmGUqQTyu6pAqBt +UZIjFulDL/zjLduIz9326hPGv/9qiEbumPpH7WTxUesaBrXXgrCSDkrXrVwk5V+b +hGU5s/gEsrAxqQgFVqhrrnc8fK40kcqF45i5K2mrhFMSNtEuI7gwrKbs+vulZpJY +TM2a4Gtibkew5XwpaC7aED6QLNux9jQdQ3lqsaSLj4Y9dQ== -----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow +SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT +GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF +q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 +SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 +Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA +a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj +/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG +CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv +bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k +c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw +VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC +ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz +MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu +Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF +AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo +uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ +wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu +X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG +PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 +KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== +-----END CERTIFICATE----- + diff --git a/www/nginx/warpinfra.key b/www/nginx/warpinfra.key index fb31d8d8b32b14632a7944541d778d7d3dac3a7a..f50c90dfdbc476caf4b97e67ca802d49cb6d46de 100644 --- a/www/nginx/warpinfra.key +++ b/www/nginx/warpinfra.key @@ -1,52 +1,87 @@ -----BEGIN PRIVATE KEY----- -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 -su7ZYG7K5L+RRjrWZagNh8X2s6qeaA== +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+s9A9vnnfhuMh +7TJQQ+/pEAY2cQomr2zQqZbkcbZe+7vSf9BnXZbW9WBq932YQI5LT9aopkJrUgGM +BdifjwXG5umIio4Jdp/HduBv7cg5S7aEABsFgNJ7eIRZsQ5J6Ho1ce1HhqcM8eEe +W/IiKBUxfzBkugZ59wk7v6SMcpGNiDKEt9osHEPVKC+2sKII6dA72iLnZg3UeQHa +2ixL4u92Dmvr3mq7Il4wGydvEMLXFYg1L20Qnvy3uOC0MpYG9iz6e5OK+FH4ytCE +vBkOsyWZ5v+//ufThDlQPuIygPXuYUq+cZaIeYpXmVaGtf2gV0XQmvypna6EcsHp +xnEP0tZNAgMBAAECggEAWfO1OTqcgAw/HOSmg+fXxUZyt8FQOXkrya0E6NKeZGU3 +bg4t/mPN3600gqAk1Ok2dV2+ciSiVb8DzcmAKZsr7WtEIszAPMSAj3SKXyF4/VWy +TMdD96+RGP5651e11rTa2FTZyJBCQb/iIRDbwLLJdGR7Ljf1EBiveUhnVHxCHdCc +/HOuGQnEJR1zOO8llTp36XN457ufqWWKSpS507gBmKdQiJDIooclaf71CIkJQBjh +j04O74RlTpTFzHyg/vzn5VDllwokgAJ3g9PgunBmHqCTQCF5chkkBKaubtKa2hx0 +JsXuTS8Zf6TBRNlUXxPC4SwkuUMdRFIcCAlSF8jK3QKBgQDkbtfGC8PAoYTIO6pK +tgRWSkdMkYG6UBoiLpH8qh7KDXT+CRcYdZNsDrH97VxaZlPUccL3Zrw68UVd50St +Vfdke/BD0lkmzjACou4Ebwmp4ZupEE8RghKP7MoWlNLqzLs4T60UzQHMyNIUUxkT +f6hWnuUBxasKkx4a+t2HWvXUrwKBgQDVt1SVcPcjr6VbFqs51LrzX4NU6d/b/il+ +uQS7QENzuCzVviGWAH59yQeVUSBB1xZweennIRnHhcpFYlqKA69VUwkyQb7uZZ4Y +iRvlOAdbBE156LsUE0vU6rFDyCNGvhz5ClKt+nXWoJscl1kY3S5qyPGhkrwBFlQT +594niKq7wwKBgQCt5Pt5lkckg1CzpUgTq9BNaCoyzan2DTh3wP/9WfwqUGg5Yu4j +/o2FewJgjar6Xl9+oEONVrYAIN9vhrivQ3wbEIZs+tpHQjsmJqYO1gCDRG3dG781 +UtGSou2Mlyqg982mJnFaHl46aL4UHtY+E7YwirFG0hVM7YXDgCnX+pSdnQKBgGnj +TrZIZTq6MSyDe8zIeORSg4iT5AVk1XxjAVQhkAoKy7QPYyamEgYSj35M1rWocwbB +cMHCpbo0sLZV99P/5WRaIulSp94IXR9892RHsWVIKXbod6CHuv/AVJnn1IqdcU92 +7OYkfTQdGR0+Y7etBu2DqCzMvfev73J5ZJmj3ivvAoGBAIz13UZrQoj7SdOjUZkJ +xGVjQKZbxJmEPCDXRoEjkPAmNCYiEtgMSD2xYuaSly1qyKwEwaevDzGBVO9Gf9QN +9Lmb4E9OKVehGpdPYT2+MPKO4i0dXfD5w3CP7SXE6zhzInmX5+qEcdAqVemz8QI0 +b2XE2w6nht6kQcMj7MrdCphv -----END PRIVATE KEY----- + +-----BEGIN CERTIFICATE----- +MIIE/jCCA+agAwIBAgISA1hyjstoi3F5Iclnmu5EQMScMA0GCSqGSIb3DQEBCwUA +MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD +ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjA4MjgxNDI5MDBaFw0x +NjExMjYxNDI5MDBaMBgxFjAUBgNVBAMTDWRldi5keWhvc3QuZGUwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+s9A9vnnfhuMh7TJQQ+/pEAY2cQomr2zQ +qZbkcbZe+7vSf9BnXZbW9WBq932YQI5LT9aopkJrUgGMBdifjwXG5umIio4Jdp/H +duBv7cg5S7aEABsFgNJ7eIRZsQ5J6Ho1ce1HhqcM8eEeW/IiKBUxfzBkugZ59wk7 +v6SMcpGNiDKEt9osHEPVKC+2sKII6dA72iLnZg3UeQHa2ixL4u92Dmvr3mq7Il4w +GydvEMLXFYg1L20Qnvy3uOC0MpYG9iz6e5OK+FH4ytCEvBkOsyWZ5v+//ufThDlQ +PuIygPXuYUq+cZaIeYpXmVaGtf2gV0XQmvypna6EcsHpxnEP0tZNAgMBAAGjggIO +MIICCjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF +BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHahdg/WaDq0yPz59/SZOwb9HmLX +MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAGCCsGAQUFBwEBBGQw +YjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y +Zy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v +cmcvMBgGA1UdEQQRMA+CDWRldi5keWhvc3QuZGUwgf4GA1UdIASB9jCB8zAIBgZn +gQwBAgEwgeYGCysGAQQBgt8TAQEBMIHWMCYGCCsGAQUFBwIBFhpodHRwOi8vY3Bz +LmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYBBQUHAgIwgZ4MgZtUaGlzIENlcnRpZmlj +YXRlIG1heSBvbmx5IGJlIHJlbGllZCB1cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBh +bmQgb25seSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIENlcnRpZmljYXRlIFBvbGlj +eSBmb3VuZCBhdCBodHRwczovL2xldHNlbmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzAN +BgkqhkiG9w0BAQsFAAOCAQEAl598A9BClTRIh84bzUTSSGu8nym9IOpl5and/gCX +IsB1w66ZhJDcJC21mXkQWRSSysenwX0zayRaNs2KMZviyr32RTTfNPJHXFROYiNl +G0iQodNvEhkF05/QEPS2DvFWqwU9nkxZ9byzzvciwFVHh1RqDzmGUqQTyu6pAqBt +UZIjFulDL/zjLduIz9326hPGv/9qiEbumPpH7WTxUesaBrXXgrCSDkrXrVwk5V+b +hGU5s/gEsrAxqQgFVqhrrnc8fK40kcqF45i5K2mrhFMSNtEuI7gwrKbs+vulZpJY +TM2a4Gtibkew5XwpaC7aED6QLNux9jQdQ3lqsaSLj4Y9dQ== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow +SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT +GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF +q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 +SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 +Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA +a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj +/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG +CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv +bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k +c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw +VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC +ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz +MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu +Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF +AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo +uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ +wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu +X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG +PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 +KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== +-----END CERTIFICATE----- + diff --git a/www/run_dev.sh b/www/run_dev.sh index b32520a3dfa64ca8dc4057e37215669091367597..476fcd0edce7187ab84fad522ff8c3494693c564 100644 --- a/www/run_dev.sh +++ b/www/run_dev.sh @@ -6,10 +6,10 @@ docker rm warpinfra docker run \ -v $SCRIPTPATH/web:/opt/warpinfra \ - -v $SCRIPTPATH/nginx:/opt/nginx \ + -v $SCRIPTPATH/nginx:/opt/nginx \ -v $SCRIPTPATH/conf/config.example.ini:/etc/warpinfra/config.ini \ --link ldap-service:ldap \ --name warpinfra \ - -p 8000:443 \ + -p 8000:80 \ -itd \ warpinfra diff --git a/www/run_prod.sh b/www/run_prod.sh index d9cb93821a4316ddd246bcba3acef5b0a0943013..ac4e6494ba835dd6126c060298c9327cb63252cd 100644 --- a/www/run_prod.sh +++ b/www/run_prod.sh @@ -9,6 +9,7 @@ docker run \ --link ldap-service:ldap \ --name warpinfra \ --volume /tmp/warpinfra:/opt/socket \ + --volume /opt/warpinfra/data:/opt/database/ -p 8000:443 \ -itd \ warpinfra diff --git a/www/web/data/warpzone.db b/www/web/data/warpzone.db new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/www/web/warpauth/migrations/0001_initial.py b/www/web/warpauth/migrations/0001_initial.py index d9bbae0a34e1467587059118a8f9f707b8d75d73..495e7e88c9b767398d2dbf2aa50e96881f0cff7e 100644 --- a/www/web/warpauth/migrations/0001_initial.py +++ b/www/web/warpauth/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9 on 2016-08-18 15:07 +# Generated by Django 1.9 on 2016-08-21 16:21 from __future__ import unicode_literals from django.db import migrations, models @@ -18,9 +18,9 @@ class Migration(migrations.Migration): name='LdapGroup', fields=[ ('dn', models.CharField(max_length=200)), - ('gid', ldapdb.models.fields.IntegerField(db_column=b'gidNumber', unique=True)), - ('name', ldapdb.models.fields.CharField(db_column=b'cn', max_length=200, primary_key=True, serialize=False)), - ('members', ldapdb.models.fields.ListField(db_column=b'memberUid')), + ('gid', ldapdb.models.fields.IntegerField(db_column='gidNumber', unique=True)), + ('name', ldapdb.models.fields.CharField(db_column='cn', max_length=200, primary_key=True, serialize=False)), + ('members', ldapdb.models.fields.ListField(db_column='memberUid')), ], options={ 'abstract': False, @@ -30,11 +30,11 @@ class Migration(migrations.Migration): name='LdapUser', fields=[ ('dn', models.CharField(max_length=200)), - ('uid', ldapdb.models.fields.CharField(db_column=b'uid', max_length=200, primary_key=True, serialize=False, unique=True)), - ('first_name', ldapdb.models.fields.CharField(db_column=b'givenName', max_length=200)), - ('last_name', ldapdb.models.fields.CharField(db_column=b'sn', max_length=200)), - ('email', ldapdb.models.fields.CharField(db_column=b'description', max_length=200)), - ('cn', ldapdb.models.fields.CharField(db_column=b'cn', max_length=200)), + ('uid', ldapdb.models.fields.CharField(db_column='uid', max_length=200, primary_key=True, serialize=False, unique=True)), + ('first_name', ldapdb.models.fields.CharField(db_column='givenName', max_length=200)), + ('last_name', ldapdb.models.fields.CharField(db_column='sn', max_length=200)), + ('email', ldapdb.models.fields.CharField(db_column='mail', max_length=200)), + ('cn', ldapdb.models.fields.CharField(db_column='cn', max_length=200)), ], options={ 'abstract': False, diff --git a/www/web/warpauth/migrations/0002_auto_20160821_1613.py b/www/web/warpauth/migrations/0002_auto_20160821_1613.py new file mode 100644 index 0000000000000000000000000000000000000000..e83f51969682beb912c169d1b13d4a5f05374225 --- /dev/null +++ b/www/web/warpauth/migrations/0002_auto_20160821_1613.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-08-21 16:13 +from __future__ import unicode_literals + +from django.db import migrations +import ldapdb.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('warpauth', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='ldapgroup', + name='gid', + field=ldapdb.models.fields.IntegerField(db_column='gidNumber', unique=True), + ), + migrations.AlterField( + model_name='ldapgroup', + name='members', + field=ldapdb.models.fields.ListField(db_column='memberUid'), + ), + migrations.AlterField( + model_name='ldapgroup', + name='name', + field=ldapdb.models.fields.CharField(db_column='cn', max_length=200, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='ldapuser', + name='cn', + field=ldapdb.models.fields.CharField(db_column='cn', max_length=200), + ), + migrations.AlterField( + model_name='ldapuser', + name='email', + field=ldapdb.models.fields.CharField(db_column='mail', max_length=200), + ), + migrations.AlterField( + model_name='ldapuser', + name='first_name', + field=ldapdb.models.fields.CharField(db_column='givenName', max_length=200), + ), + migrations.AlterField( + model_name='ldapuser', + name='last_name', + field=ldapdb.models.fields.CharField(db_column='sn', max_length=200), + ), + migrations.AlterField( + model_name='ldapuser', + name='uid', + field=ldapdb.models.fields.CharField(db_column='uid', max_length=200, primary_key=True, serialize=False, unique=True), + ), + ] diff --git a/www/web/warpauth/migrations/0002_ldapuser_card_id.py b/www/web/warpauth/migrations/0002_ldapuser_card_id.py new file mode 100644 index 0000000000000000000000000000000000000000..95cb90cc8218d0e5ffb9e9f17c759e7d11d8cc12 --- /dev/null +++ b/www/web/warpauth/migrations/0002_ldapuser_card_id.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-08-21 16:52 +from __future__ import unicode_literals + +from django.db import migrations +import ldapdb.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('warpauth', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='ldapuser', + name='card_id', + field=ldapdb.models.fields.CharField(db_column='pager', default=0, max_length=200), + preserve_default=False, + ), + ] diff --git a/www/web/warpauth/models.py b/www/web/warpauth/models.py index 3f4bae70c6a8e7ce4e788bda6ba9124b2bd280bb..e783a92a44ae6ad7fe34b64237a08011b93deb6e 100644 --- a/www/web/warpauth/models.py +++ b/www/web/warpauth/models.py @@ -22,7 +22,7 @@ class LdapUser(ldapdb.models.Model): last_name = CharField(db_column='sn', max_length=200) email = CharField(db_column='mail', max_length=200) cn = CharField(db_column='cn', max_length=200) - + card_id = CharField(db_column='pager', max_length=200) def __str__(self): return self.uid @@ -34,7 +34,7 @@ class LdapUser(ldapdb.models.Model): class LdapUserForm(ModelForm): class Meta: model = LdapUser - fields = ['first_name', 'last_name', 'email'] + fields = ['first_name', 'last_name', 'email','card_id'] class LdapGroup(ldapdb.models.Model): diff --git a/www/web/warpfood/migrations/0001_initial.py b/www/web/warpfood/migrations/0001_initial.py index b058e2f7c068bc20c7ee12d6c0e93f3900e57336..0a5a045d4448b76918dd0b16a2fd8cce3444790c 100644 --- a/www/web/warpfood/migrations/0001_initial.py +++ b/www/web/warpfood/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9 on 2016-08-18 15:07 +# Generated by Django 1.9 on 2016-08-21 16:20 from __future__ import unicode_literals from django.db import migrations, models diff --git a/www/web/warpmain/migrations/0001_initial.py b/www/web/warpmain/migrations/0001_initial.py index e9f00807171a408da3714cb288d644f026c3f327..110b564820cc74d6549b156a474bed5089af4c5a 100644 --- a/www/web/warpmain/migrations/0001_initial.py +++ b/www/web/warpmain/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9 on 2016-08-18 15:07 +# Generated by Django 1.9 on 2016-08-21 16:27 from __future__ import unicode_literals from django.db import migrations, models diff --git a/www/web/warppay/admin.py b/www/web/warppay/admin.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5f28e7452a7174e0e4d975ec1d5ca8ed9c177a12 100644 --- a/www/web/warppay/admin.py +++ b/www/web/warppay/admin.py @@ -0,0 +1,16 @@ +from django.contrib import admin +from warppay.models import * + +# Register your models here. + +@admin.register(ProductCategory) +class ProductCategoryAdmin(admin.ModelAdmin): + pass + +@admin.register(Product) +class ProductAdmin(admin.ModelAdmin): + pass + +@admin.register(UserCredit) +class UserCreditAdmin(admin.ModelAdmin): + pass \ No newline at end of file diff --git a/www/web/warppay/migrations/0001_initial.py b/www/web/warppay/migrations/0001_initial.py index 8bb050b85990563e516ccb4f43774d3f199e1eba..03b54baa7b2f7cc01c3fb216f27601bfc8a5475f 100644 --- a/www/web/warppay/migrations/0001_initial.py +++ b/www/web/warppay/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9 on 2016-08-18 15:07 +# Generated by Django 1.9 on 2016-08-21 16:21 from __future__ import unicode_literals from django.db import migrations, models @@ -28,6 +28,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('uid', models.CharField(max_length=100, unique=True)), + ('card_id', models.IntegerField()), ('credit', models.FloatField()), ], ), diff --git a/www/web/warppay/migrations/0002_auto_20160821_1701.py b/www/web/warppay/migrations/0002_auto_20160821_1701.py new file mode 100644 index 0000000000000000000000000000000000000000..e8d2e68b722d2bf46e643b14149635ad53b27315 --- /dev/null +++ b/www/web/warppay/migrations/0002_auto_20160821_1701.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-08-21 17:01 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warppay', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='product', + old_name='user', + new_name='name', + ), + migrations.RemoveField( + model_name='product', + name='created', + ), + migrations.RemoveField( + model_name='product', + name='message', + ), + migrations.RemoveField( + model_name='product', + name='title', + ), + migrations.AddField( + model_name='product', + name='count', + field=models.IntegerField(default=0), + preserve_default=False, + ), + migrations.AddField( + model_name='product', + name='price', + field=models.FloatField(default=0), + preserve_default=False, + ), + ] diff --git a/www/web/warppay/migrations/0002_usercredit_card_id.py b/www/web/warppay/migrations/0002_usercredit_card_id.py new file mode 100644 index 0000000000000000000000000000000000000000..bcb14cd56a798c23b31ae85cf23d0c2d29897a26 --- /dev/null +++ b/www/web/warppay/migrations/0002_usercredit_card_id.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-08-21 16:12 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warppay', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='usercredit', + name='card_id', + field=models.IntegerField(default=0), + preserve_default=False, + ), + ] diff --git a/www/web/warppay/migrations/0003_auto_20160821_1706.py b/www/web/warppay/migrations/0003_auto_20160821_1706.py new file mode 100644 index 0000000000000000000000000000000000000000..d834e1bcdff258bceb5092015858b996faceaf8c --- /dev/null +++ b/www/web/warppay/migrations/0003_auto_20160821_1706.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-08-21 17:06 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('warppay', '0002_auto_20160821_1701'), + ] + + operations = [ + migrations.CreateModel( + name='ProductCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, unique=True)), + ], + ), + migrations.AddField( + model_name='product', + name='category', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='warppay.ProductCategory'), + ), + ] diff --git a/www/web/warppay/migrations/0004_auto_20160909_1401.py b/www/web/warppay/migrations/0004_auto_20160909_1401.py new file mode 100644 index 0000000000000000000000000000000000000000..4d8597b17a67bae6ce97b5df8b596e3ca65896bd --- /dev/null +++ b/www/web/warppay/migrations/0004_auto_20160909_1401.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-09-09 14:01 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warppay', '0003_auto_20160821_1706'), + ] + + operations = [ + migrations.AlterField( + model_name='usercredit', + name='card_id', + field=models.CharField(max_length=10, unique=True), + ), + ] diff --git a/www/web/warppay/models.py b/www/web/warppay/models.py index c462cfa3f235f004d1f7cc471bc5d57967d06dcb..edda802f86a1919186034df70c72fcec50e02b2d 100644 --- a/www/web/warppay/models.py +++ b/www/web/warppay/models.py @@ -4,22 +4,35 @@ from django.db import models from rest_framework import routers, serializers, viewsets from warpauth.models import LdapUser - +class ProductCategory(models.Model): + name = models.CharField(max_length=100, unique=True) + def __str__(self): + return self.name + class Product(models.Model): - user = models.CharField(max_length=100, null=True) - title = models.CharField(max_length=100) - message = models.TextField() - created = models.DateTimeField(auto_now_add=True) + name = models.CharField(max_length=100, null=True) + price = models.FloatField() + category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE, null=True) + count = models.IntegerField() def __str__(self): - return self.title + return self.name + +class ProductSerializer(serializers.ModelSerializer): + category = serializers.StringRelatedField() + class Meta: + model = Product + fields = ['id', 'name', 'price', 'category', 'count'] + class UserCredit(models.Model): uid = models.CharField(max_length=100,unique=True) + card_id = models.CharField(max_length=10, unique=True) credit = models.FloatField() + def __str__(self): + return self.uid - -class UserCreditSerializer(serializers.HyperlinkedModelSerializer): +class UserCreditSerializer(serializers.ModelSerializer): class Meta: model = UserCredit - fields = ['uid', 'credit'] + fields = ['uid', 'card_id', 'credit'] diff --git a/www/web/warppay/urls.py b/www/web/warppay/urls.py index 157ac62f86129fdc1da39e0ac86fb416f3a6d7e1..ac022ce57c617862cab5e9222e7829b9e99ca7ec 100644 --- a/www/web/warppay/urls.py +++ b/www/web/warppay/urls.py @@ -4,4 +4,8 @@ from warppay import views urlpatterns = [ #url(r'^api/', include(router.urls)), url(r'^api/users/$', views.user_list), + url(r'^api/users/(?P<user_id>\w+)/$', views.user_list), + url(r'^api/products/$', views.product_list), + url(r'^api/gen_token/$', views.gen_token), + ] diff --git a/www/web/warppay/views.py b/www/web/warppay/views.py index 42db93ab15af3a1db030dcff09e35f93516d3636..2cae82afd60116cf0fcd8b0e204d6636a8bd3293 100644 --- a/www/web/warppay/views.py +++ b/www/web/warppay/views.py @@ -1,41 +1,92 @@ from django.db import IntegrityError from warpauth.models import LdapUser -from warppay.models import UserCredit, UserCreditSerializer +from warppay.models import UserCredit, UserCreditSerializer, Product, ProductSerializer from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.authentication import TokenAuthentication from rest_framework.permissions import IsAuthenticated from rest_framework.decorators import authentication_classes, permission_classes +from rest_framework.authtoken.models import Token +from django.contrib.auth.models import User +from rest_framework import status -# from rest_framework.authtoken.models import Token -# token = Token.objects.create(user=request.user) # logging.getLogger('main').info(token.key) -@api_view(['GET', 'POST', 'PUT']) -@authentication_classes((TokenAuthentication,)) -@permission_classes((IsAuthenticated,)) -def user_list(request): +@api_view(['GET', 'PUT']) +#@authentication_classes((TokenAuthentication,)) +#@permission_classes((IsAuthenticated,)) +def product_list(request): if request.method == 'GET': - sync_users() - users = UserCredit.objects.all() - serializer = UserCreditSerializer(users, many=True) + products = Product.objects.all() + serializer = ProductSerializer(products,context={'request': request}, many=True) return Response(serializer.data) - elif request.method == 'POST': - + elif request.method == 'PUT': return Response() + return Response() + + +@api_view(['GET']) +def gen_token(request): + if request.method == 'GET': + token = Token.objects.create(user=User.objects.get(username='api')) + return Response(token) + return Response() + +@api_view(['GET', 'PUT', 'POST']) +#@authentication_classes((TokenAuthentication,)) +#@permission_classes((IsAuthenticated,)) +def user_list(request, user_id = 0): + if request.method == 'GET': + sync_users() + if not user_id: + users = UserCredit.objects.all() + serializer = UserCreditSerializer(users, many=True) + else: + user = UserCredit.objects.get(uid=user_id) + serializer = UserCreditSerializer(user) + return Response(serializer.data) elif request.method == 'PUT': + if not user_id: + return Response(status=status.HTTP_406_NOT_ACCEPTABLE) + sync_users() try: - UserCredit.objects.get(uid=request.data['uid']) + user = UserCredit.objects.get(uid=user_id) + if "credit" in request.data: + user.credit = request.data['credit'] + if "card_id" in request.data: + user.card_id = request.data['card_id'] + user.save(); + return Response(UserCreditSerializer(user).data) except UserCredit.DoesNotExist: - u = UserCredit(uid=request.data['uid'], credit=0.0) - u.save() + return Response(status=status.HTTP_404_NOT_FOUND) return Response() + + elif request.method == 'POST': + card_id="" + if not 'uid' in request.data: + return Response(status=status.HTTP_406_NOT_ACCEPTABLE) + if 'card_id' in request.data: + card_id = request.data['card_id'] + u = UserCredit(uid=request.data['uid'], card_id=card_id, credit=0.0) + try: + u.save() + state=status.HTTP_201_CREATED + except IntegrityError as e: + u = UserCredit.objects.get(uid=request.data['uid']) + state=status.HTTP_409_CONFLICT + + serializer = UserCreditSerializer(u) + return Response(serializer.data, status=state) + return Response() + def sync_users(): for user in LdapUser.objects.all(): try: - u = UserCredit(uid=user, credit=0.0) + u = UserCredit(uid=user.uid, card_id=user.card_id, credit=0.0) u.save() except IntegrityError: pass + except: + pass diff --git a/www/web/warpzone.db b/www/web/warpzone.db index 81069c749d4e6fcb5e38e98ea3925bf3623b89e0..2b253a2ff47ee5cbffbec87ac395208a4e2984fe 100644 Binary files a/www/web/warpzone.db and b/www/web/warpzone.db differ