From 1f6be4dbb68f1484cc0622ab792f240022a29c12 Mon Sep 17 00:00:00 2001 From: khamed Date: Fri, 14 Jun 2024 15:41:02 +0100 Subject: [PATCH] new commit --- base/__init__.py | 0 base/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 139 bytes base/__pycache__/admin.cpython-310.pyc | Bin 0 -> 248 bytes base/__pycache__/apps.cpython-310.pyc | Bin 0 -> 414 bytes base/__pycache__/models.cpython-310.pyc | Bin 0 -> 729 bytes base/__pycache__/urls.cpython-310.pyc | Bin 0 -> 588 bytes base/__pycache__/views.cpython-310.pyc | Bin 0 -> 10788 bytes base/admin.py | 7 + base/apps.py | 6 + base/migrations/0001_initial.py | 23 ++ base/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 0 -> 724 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 150 bytes base/models.py | 15 ++ base/templates/404.html | 17 ++ base/templates/contact.html | 87 +++++++ base/templates/index1.html | 241 +++++++++++++++++ base/templates/index2.html | 242 ++++++++++++++++++ base/templates/login.html | 79 ++++++ base/templates/show.html | 21 ++ base/tests.py | 3 + base/urls.py | 17 ++ base/views.py | 86 +++++++ carssp/__init__.py | 0 carssp/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 141 bytes carssp/__pycache__/settings.cpython-310.pyc | Bin 0 -> 2403 bytes carssp/__pycache__/urls.cpython-310.pyc | Bin 0 -> 500 bytes carssp/__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 542 bytes carssp/asgi.py | 16 ++ carssp/settings.py | 132 ++++++++++ carssp/urls.py | 11 + carssp/wsgi.py | 16 ++ db.sqlite3 | Bin 0 -> 135168 bytes manage.py | 22 ++ static/img/Mail-rafiki.svg | 1 + static/img/Online tech talks-rafiki.svg | 1 + static/img/django.svg | 1 + 37 files changed, 1044 insertions(+) create mode 100644 base/__init__.py create mode 100644 base/__pycache__/__init__.cpython-310.pyc create mode 100644 base/__pycache__/admin.cpython-310.pyc create mode 100644 base/__pycache__/apps.cpython-310.pyc create mode 100644 base/__pycache__/models.cpython-310.pyc create mode 100644 base/__pycache__/urls.cpython-310.pyc create mode 100644 base/__pycache__/views.cpython-310.pyc create mode 100644 base/admin.py create mode 100644 base/apps.py create mode 100644 base/migrations/0001_initial.py create mode 100644 base/migrations/__init__.py create mode 100644 base/migrations/__pycache__/0001_initial.cpython-310.pyc create mode 100644 base/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 base/models.py create mode 100644 base/templates/404.html create mode 100644 base/templates/contact.html create mode 100644 base/templates/index1.html create mode 100644 base/templates/index2.html create mode 100644 base/templates/login.html create mode 100644 base/templates/show.html create mode 100644 base/tests.py create mode 100644 base/urls.py create mode 100644 base/views.py create mode 100644 carssp/__init__.py create mode 100644 carssp/__pycache__/__init__.cpython-310.pyc create mode 100644 carssp/__pycache__/settings.cpython-310.pyc create mode 100644 carssp/__pycache__/urls.cpython-310.pyc create mode 100644 carssp/__pycache__/wsgi.cpython-310.pyc create mode 100644 carssp/asgi.py create mode 100644 carssp/settings.py create mode 100644 carssp/urls.py create mode 100644 carssp/wsgi.py create mode 100644 db.sqlite3 create mode 100644 manage.py create mode 100644 static/img/Mail-rafiki.svg create mode 100644 static/img/Online tech talks-rafiki.svg create mode 100644 static/img/django.svg diff --git a/base/__init__.py b/base/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/base/__pycache__/__init__.cpython-310.pyc b/base/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9af6ffc39f659b2a289dc6fb64e65a71d849f370 GIT binary patch literal 139 zcmd1j<>g`k0`Kz7G!Xq5L?8o3AjbiSi&=m~3PUi1CZpdS5T4DZ68m$JUInl5kc&4FX)EZVP=ekj zui(kqreFu=+xhvvnPv27)CaQpYo2}5`|Xlr^C_8-n+pO2WCd(l!WcXNddNQjxnl1; z@z8&Qu=hhO2$?;dR@I#@vwXdBm1AR+OvufcKtaL~NX-(CUg9ICDZcH`q*0yz?Ho6< zTOf<{a)3(v~xhl~5OQJ5qo(+U3u{RlWoxm zNqUiW16=P5YIlb{{9ewl(|FfB>oTtOMy;Bwbh?Ni)0M1^sZzHvl~rY;YFBeoxf_`i qf&hFLuzhV2ayvNu+;MBqjd$$-MO`$YnhkEcAK$v`7&mYTWBvyj9b)eQ literal 0 HcmV?d00001 diff --git a/base/__pycache__/models.cpython-310.pyc b/base/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1d85ef05a7d29a0d921cfcff580759eac76d4c23 GIT binary patch literal 729 zcmY*X!H&}~5FIB@npEvBNN7KRTO`yya6mjt&7c3QMmZ@bc- zcCY*Zm;DO|T-H))TM#@He-G>#8VXV-A@!7Baml22 z%hI5;{mu?Mn|Jo$1{O>PGQ5t`=mt2XF{T^1=zS?wJvVk6Zpb>t-0`~6buL9)ZzH4Z zTDSHz<%QkY0&Dy$M1|@*#@*4`K?N1-i7-Iq{fGR2sO499bH_^9d0*Kb_Co^F@n=&^ z&uzX@N#No|sg*d-t#TpuLbYmt)F3Grb>3oQU0~OZGKr55m0mcWn+xm0kDuv#kJSiK z=-gT%?&0T?*Uz%~W&5FC%}rgYqJ5gZoXy{6MQ*HZGD?>9ou4$9W`LE^d~Jm4h|xM> z+v7hioAj)bp^JoAGJ-}^=SOgyg);&l2upS>>yXdLqyJjKLfFkvjK5ye=rk SbJ6pj?+Y5OrFo9vg#QNJE35ec literal 0 HcmV?d00001 diff --git a/base/__pycache__/urls.cpython-310.pyc b/base/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a6647692ce73189e4951928409cc75b120477c7 GIT binary patch literal 588 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 TH$SB`C)EyQWHA$vU||3N5|Sd7 literal 0 HcmV?d00001 diff --git a/base/models.py b/base/models.py new file mode 100644 index 0000000..9d35de2 --- /dev/null +++ b/base/models.py @@ -0,0 +1,15 @@ +from django.db import models + + + +class VideoPrs(models.Model) : + file_base = models.FileField(upload_to="video/") + file_pres = models.FileField(upload_to="results/") + file_cvs = models.FileField(upload_to="csvs") + + def delete(self ,*args, **kwargs) : + self.file_base.delete(save=False) + self.file_pres.delete(save=False) + self.file_cvs.delete(save=False) + super().delete(*args, **kwargs) + diff --git a/base/templates/404.html b/base/templates/404.html new file mode 100644 index 0000000..872251b --- /dev/null +++ b/base/templates/404.html @@ -0,0 +1,17 @@ + + + + + + 404 - Page Not Found + + + +
+

404

+

Oops! Page Not Found Or No Data found

+

We can't seem to find the page you're looking for.

+ Go Home +
+ + diff --git a/base/templates/contact.html b/base/templates/contact.html new file mode 100644 index 0000000..7bcb8d7 --- /dev/null +++ b/base/templates/contact.html @@ -0,0 +1,87 @@ +{% load static %} + + + + + + Contact Page + + + + + + + + +
+
+ +
+ +

Contact Us

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+ Contact Us Photo +
+
+
+ + +
+
+ © 2024 Brand. All rights reserved. +
+
+ + + + + diff --git a/base/templates/index1.html b/base/templates/index1.html new file mode 100644 index 0000000..d503782 --- /dev/null +++ b/base/templates/index1.html @@ -0,0 +1,241 @@ +{% load static %} + + + + + + ANPR + + + + + + + + +
+ +
+ {% csrf_token %} +
+ + +
+ + + + +
+ +
+
+
+ +
+ +
+ {% if last_data %} +

Last Data exists and has {{ last_data|length }} items

+ {% else %} +

Last Data is empty

+ {% endif %} + + + + + + + + + + + {% for car in last_data %} + + + + + + {% endfor %} + +
Car idCar SpeedLicense Plate
{{ car.car_id }}{{ car.car_speed }}{{ car.license_plate }}
+
+ + +
+ +
+
+ +
+
+ © 2024 ANPR. All rights reserved. +
+
+ + + + + + + diff --git a/base/templates/index2.html b/base/templates/index2.html new file mode 100644 index 0000000..5a3830e --- /dev/null +++ b/base/templates/index2.html @@ -0,0 +1,242 @@ +{% load static %} + + + + + + ANPR + + + + + + + + +
+ +
+ {% csrf_token %} +
+ + +
+ + + + + +
+ +
+
+
+ +
+ +
+ {% if last_data %} +

Last Data exists and has {{ last_data|length }} items

+ {% else %} +

Last Data is empty

+ {% endif %} + + + + + + + + + + + {% for car in last_data %} + + + + + + {% endfor %} + +
Car idCar SpeedLicense Plate
{{ car.car_id }}{{ car.car_speed }}{{ car.license_plate }}
+
+ + +
+ +
+
+ +
+
+ © 2024 ANPR. All rights reserved. +
+
+ + + + + + + diff --git a/base/templates/login.html b/base/templates/login.html new file mode 100644 index 0000000..d14e9a2 --- /dev/null +++ b/base/templates/login.html @@ -0,0 +1,79 @@ + + + + + + Login Page + + + + + + + + +
+ +
+ +
+ Logo +
+

Login

+
+
+ + +
+
+ + +
+
+ + Forgot Password? +
+
+
+
+ + + + + diff --git a/base/templates/show.html b/base/templates/show.html new file mode 100644 index 0000000..76c69f2 --- /dev/null +++ b/base/templates/show.html @@ -0,0 +1,21 @@ + + + + All Videos + + + + +
+ {% for x in video %} +

{{ x.name }}

+ + + + {% endfor %} +
+ + \ No newline at end of file diff --git a/base/tests.py b/base/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/base/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/base/urls.py b/base/urls.py new file mode 100644 index 0000000..b32d52e --- /dev/null +++ b/base/urls.py @@ -0,0 +1,17 @@ +from django.conf import settings +from django.urls import path +from django.conf.urls.static import static +from . import views + +urlpatterns = [ + path('',views.main , name="home"), + path('Show/' ,views.show), + path('Test/' , views.test , name="test"), + path('NoDataFound/', views.data_found) , + path('Contact/', views.contact , name="contact") + +] +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + + diff --git a/base/views.py b/base/views.py new file mode 100644 index 0000000..98717c1 --- /dev/null +++ b/base/views.py @@ -0,0 +1,86 @@ +from django.http import JsonResponse +from django.shortcuts import render , redirect +import tempfile +from django.core.files.storage import FileSystemStorage +import json +import csv +from .models import * +import os +from ANPR.anpr import upload_anpr + + + +def main(request) : + data_tabel = {} + if request.method == 'POST': + video = request.FILES.get('video') + if video : + + fs = FileSystemStorage() + temp_file_path = fs.save(video.name, video) + temp_file_absolute_path = fs.path(temp_file_path) + + + json_data = upload_anpr(temp_file_absolute_path) + + + additional_data = json_data + + fs.delete(temp_file_path) + last_data = [] + + + cleaned_data = {k: v for k, v in additional_data.items() if v != {}} + + + for car_id, data in cleaned_data.items(): + for _, entry in data.items(): + if "car_speed" in entry and "license_plate" in entry and "text" in entry["license_plate"]: + _j = { + "car_id": car_id, + "car_speed": entry["car_speed"], + "license_plate": entry["license_plate"]["text"] + } + last_data.append(_j) + return render(request , "index1.html" , {'last_data': last_data}) + + else: + return redirect("/NoDataFound") + + return render(request , "index1.html") + + +def test(request) : + additional_data = {0: {}, 1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}, 10: {}, 11: {}, 12: {}, 13: {}, 14: {}, 15: {}, 16: {}, 17: {}, 18: {}, 19: {}, 20: {}, 21: {}, 22: {}, 23: {}, 24: {}, 25: {}, 26: {}, 27: {}, 28: {}, 29: {}, 30: {}, 31: {}, 32: {}, 33: {}, 34: {}, 35: {}, 36: {}, 37: {}, 38: {}, 39: {}, 40: {}, 41: {}, 42: {}, 43: {}, 44: {}, 45: {}, 46: {}, 47: {}, 48: {}, 49: {}, 50: {}, 51: {}, 52: {}, 53: {}, 54: {}, 55: {}, 56: {}, 57: {}, 58: {}, 59: {}, 60: {}, 61: {}, 62: {}, 63: {}, 64: {}, 65: {}, 66: {}, 67: {}, 68: {}, 69: {}, 70: {}, 71: {}, 72: {}, 73: {}, 74: {}, 75: {}, 76: {}, 77: {}, 78: {}, 79: {}, 80: {}, 81: {}, 82: {}, 83: {}, 84: {}, 85: {}, 86: {}, 87: {}, 88: {}, 89: {}, 90: {}, 91: {}, 92: {}, 93: {}, 94: {}, 95: {}, 96: {}, 97: {}, 98: {}, 99: {}, 100: {}, 101: {}, 102: {}, 103: {}, 104: {}, 105: {}, 106: {}, 107: {}, 108: {}, 109: {}, 110: {}, 111: {}, 112: {}, 113: {}, 114: {}, 115: {8.0: + {'car': {'bbox': [574.0766191663662, 533.2293557055823, 810.3656132635728, 740.6848548188782]}, 'car_speed': '371', 'license_plate': {'bbox': [658.87939453125, 651.9542236328125, 725.9976196289062, 680.6212158203125], 'text': 'KM75IIF', 'bbox_score': 0.7160952687263489, 'text_score': 0.1009968165258482}}}, 116: {}, 117: {}, 118: {}, 119: {}, 120: {}, 121: {}, 122: {}, 123: {}, 124: {}, 125: {}, 126: {}, 127: {}, 128: {}, 129: {}, 130: {}, 131: {6.0: {'car': {'bbox': [414.6579834423475, 807.598567389786, 818.2123477094409, 1077.913421344336]}, 'car_speed': '124', 'license_plate': {'bbox': [561.256591796875, 1021.9818115234375, 656.5054931640625, 1049.6728515625], 'text': 'GX15OGJ', 'bbox_score': 0.7656121850013733, 'text_score': 0.3115616143300656}}}, 132: {}, 133: {}, 134: {}, 135: {}, 136: {}, 137: {}, 138: {}, 139: {}, 140: {}, 141: {}, 142: {8.0: {'car': {'bbox': [540.0972427490121, 568.236424294567, 796.4776774776774, 790.3864570966674]}, 'car_speed': '388', 'license_plate': {'bbox': [630.3065795898438, 707.55615234375, 700.7562255859375, 730.519775390625], 'text': 'KK05ZTX', 'bbox_score': 0.7055836319923401, 'text_score': 0.27947113099152276}}}, 143: {}, 144: {}, 145: {}, 146: {}, 147: {}, 148: {}, 149: {}, 150: {}, 151: {}, 152: {}, 153: {}, 154: {}, 155: {1.0: {'car': {'bbox': [1022.4227369957053, 645.4223486400052, 1333.8316929510238, 904.331175294399]}, 'car_speed': '149', 'license_plate': {'bbox': [1149.4775390625, 820.7896728515625, 1235.6898193359375, 846.6148681640625], 'text': 'AP05JEO', 'bbox_score': 0.34178102016448975, 'text_score': 0.6791577696123613}}}, 156: {}, 157: {}, 158: {}, 159: {8.0: {'car': {'bbox': [517.3391352551346, 595.4822835350626, 785.0087822272717, 829.4350736774425]}, 'car_speed': '360', 'license_plate': {'bbox': [608.2694702148438, 742.4888305664062, 693.7804565429688, 771.7714233398438], 'text': 'KH05ZZK', 'bbox_score': 0.3559908866882324, 'text_score': 0.1962672654243778}}}, 160: {}, 161: {}, 162: {8.0: {'car': {'bbox': [515.2204111616476, 600.5612456021961, 783.9723416522223, 836.7346757083492]}, 'car_speed': '284', 'license_plate': {'bbox': [606.58154296875, 749.713623046875, 689.9468994140625, 777.46875], 'text': 'WH05ZTK', 'bbox_score': 0.7651057243347168, 'text_score': 0.1687049309998234}}}, 163: {8.0: {'car': {'bbox': [513.0748948810103, 602.7170759116108, 784.0363985326685, 839.245026251791]}, 'car_speed': '231', 'license_plate': {'bbox': [607.9934692382812, 755.1846923828125, 689.35693359375, 778.3792114257812], 'text': 'KH05ZTX', 'bbox_score': 0.7437507510185242, 'text_score': 0.31365934886799307}}}, 164: {}, 165: {8.0: {'car': {'bbox': [509.57242740044614, 607.2224321666051, 783.0432536178633, 844.036280963342]}, 'car_speed': '200', 'license_plate': {'bbox': [602.9496459960938, 762.71044921875, 685.8387451171875, 783.2574462890625], 'text': 'KH05ZIK', 'bbox_score': 0.5974886417388916, 'text_score': 0.3057695226162196}}}, 166: {}, 167: {1.0: {'car': {'bbox': [1030.2343244433607, 674.285985598114, 1342.2659940135984, 944.2055968874434]}, 'car_speed': '195', 'license_plate': {'bbox': [1155.1722412109375, 854.9243774414062, 1231.8516845703125, 873.2858276367188], 'text': 'AP05JEC', 'bbox_score': 0.35580572485923767, 'text_score': 0.22506595341657015}}}, 168: {}, 169: {}, 170: {}, 171: {}, 172: {}, 173: {}, 174: {}, 175: {}, 176: {}, 177: {}, 178: {8.0: {'car': {'bbox': [498.6124221778325, 639.3796355032939, 778.5756822963299, 877.5854999949606]}, 'car_speed': '213', 'license_plate': {'bbox': [592.8748168945312, 789.468017578125, 677.7035522460938, 820.053955078125], 'text': 'TN05ZZX', 'bbox_score': 0.6320916414260864, 'text_score': 0.08495434526403957}}}, 179: {8.0: {'car': {'bbox': [496.3376919025684, 640.4879690306901, 776.0811934468679, 880.1171974730195]}, 'car_speed': '189', 'license_plate': {'bbox': [599.9631958007812, 797.2252807617188, 675.4798583984375, 822.2169799804688], 'text': 'ZH05ZZX', 'bbox_score': 0.6273050308227539, 'text_score': 0.017908931766015664}}}, 180: {8.0: {'car': {'bbox': [494.31611953256515, 641.4107267368335, 774.0781123534807, 883.2117644202266]}, 'car_speed': '171', 'license_plate': {'bbox': [590.7825927734375, 798.5839233398438, 674.51708984375, 826.0259399414062], 'text': 'RH05ZZK', 'bbox_score': 0.7850386500358582, 'text_score': 0.4503141113248251}}}, 181: {8.0: {'car': {'bbox': [493.34996990216837, 643.5908420626396, 773.3164910316866, 886.0582049545429]}, 'car_speed': '156', 'license_plate': {'bbox': [587.7005004882812, 795.5914916992188, 675.8494873046875, 827.0607299804688], 'text': 'KH05ZZR', 'bbox_score': 0.7898342609405518, 'text_score': 0.33554136655126127}}}, 182: {8.0: {'car': {'bbox': [492.1275052686322, 647.3477545177623, 772.2603937110703, 890.689907557673]}, 'car_speed': '143', 'license_plate': {'bbox': [594.4081420898438, 802.1588745117188, 673.9229736328125, 829.7023315429688], 'text': 'RH05ZZK', 'bbox_score': 0.7905105948448181, 'text_score': 0.15607434631749853}}}, 183: {}, 184: {}, 185: {8.0: {'car': {'bbox': [487.7477461527725, 653.915889523006, 767.8000573417852, 900.3685810789066]}, 'car_speed': '137', 'license_plate': {'bbox': [586.2530517578125, 811.4443359375, 673.9052734375, 838.1455078125], 'text': 'RH05ZZK', 'bbox_score': 0.4057205021381378, 'text_score': 0.15681906183454866}}}, 186: {8.0: {'car': {'bbox': [487.5359662945519, 656.8746038624993, 768.160444095593, 904.4800185212302]}, 'car_speed': '129', 'license_plate': {'bbox': [585.2886352539062, 814.7637329101562, 671.63671875, 843.7123413085938], 'text': 'MN05ZZK', 'bbox_score': 0.5691152215003967, 'text_score': 0.2381469065832256}}}, 187: {1.0: {'car': {'bbox': [1045.9278427973259, 729.4747917440495, 1383.035366708953, 1014.1852440462912]}, 'car_speed': '283', 'license_plate': {'bbox': [1176.3604736328125, 920.2267456054688, 1255.3338623046875, 944.1557006835938], 'text': 'AP05JEC', 'bbox_score': 0.3897472620010376, 'text_score': 0.8384824674150748}}}, 188: {8.0: {'car': {'bbox': [483.4766371006691, 660.6387822391126, 766.3232771853383, 911.1604212378512]}, 'car_speed': '123', 'license_plate': {'bbox': [583.5418701171875, 821.5631713867188, 670.88427734375, 849.3031005859375], 'text': 'RN05ZZX', 'bbox_score': 0.8165420293807983, 'text_score': 0.21980880502405017}}, 1.0: {'car': {'bbox': [1047.3848285810077, 733.1422274611905, 1386.5510494655305, 1018.6021676368555]}, 'car_speed': '220', 'license_plate': {'bbox': [1173.3875732421875, 926.7095947265625, 1256.4156494140625, 948.2969970703125], 'text': 'AP05JEC', 'bbox_score': 0.4945102632045746, 'text_score': 0.6663288081240191}}}, 189: {8.0: {'car': {'bbox': [480.249475358617, 664.3676797105778, 766.5036502556495, 915.373368042462]}, 'car_speed': '117', 'license_plate': {'bbox': [579.3924560546875, 822.6492919921875, 668.2540283203125, 851.4510498046875], 'text': 'RH05ZZK', 'bbox_score': 0.7936335802078247, 'text_score': 0.7981645450780812}}, 1.0: {'car': {'bbox': [1046.6681077284907, 736.9468084306994, 1386.8406652803124, 1022.6528418288298]}, 'car_speed': '181', 'license_plate': {'bbox': [1169.76318359375, 928.7467041015625, 1271.614501953125, 955.4692993164062], 'text': 'AP05JEO', 'bbox_score': 0.7661332488059998, 'text_score': 0.2820369925676699}}}, 190: {}, 191: {1.0: {'car': {'bbox': [1044.1846181585174, 743.1503434014243, 1386.8275190325116, 1030.7934425396188]}, 'car_speed': '159', 'license_plate': {'bbox': [1170.6402587890625, 937.130859375, 1272.1949462890625, 965.81689453125], 'text': 'AP05JEO', 'bbox_score': 0.34036797285079956, 'text_score': 0.6136308277446125}}}, 192: {}, 193: {}, 194: {}, 195: {}, 196: {}, 197: {}, 198: {1.0: {'car': {'bbox': [1047.6515682957356, 765.251747376896, 1401.903796547018, 1057.8229996813584]}, 'car_speed': '161', 'license_plate': {'bbox': [1181.6104736328125, 964.0909423828125, 1285.2257080078125, 992.21337890625], 'text': 'AP05JEO', 'bbox_score': 0.5772363543510437, 'text_score': 0.2734537226243061}}}, 199: {1.0: {'car': {'bbox': [1049.2493626790379, 768.2001593895903, 1406.639670835676, 1061.3928603999134]}, 'car_speed': '145', 'license_plate': {'bbox': [1177.6556396484375, 969.3513793945312, 1286.4642333984375, 994.6726684570312], 'text': 'AP05JEO', 'bbox_score': 0.36987724900245667, 'text_score': 0.5292007117821277}}}, 200: {}, 201: {}, 202: {}, 203: {}, 204: {1.0: {'car': {'bbox': [1051.6217300210587, 782.2864441872314, 1418.4156372271464, 1075.5040111561834]}, 'car_speed': '141', 'license_plate': {'bbox': [1184.7952880859375, 990.0324096679688, 1297.32275390625, 1019.0203857421875], 'text': 'AP05JEQ', 'bbox_score': 0.6294832825660706, 'text_score': 0.40179873300550706}}}, 205: {}, 206: {1.0: {'car': {'bbox': [1050.6760364469035, 788.3872108424988, 1421.7257749732146, 1077.819246493215]}, 'car_speed': '130', 'license_plate': {'bbox': [1185.75146484375, 998.6322021484375, 1287.0179443359375, 1024.732177734375], 'text': 'AP05JEO', 'bbox_score': 0.5754414796829224, 'text_score': 0.17079251100550147}}}, 207: {1.0: {'car': {'bbox': [1050.6294844998365, 792.012954787921, 1424.6697749963173, 1078.3336839820927]}, 'car_speed': '119', 'license_plate': {'bbox': [1189.7786865234375, 1001.9678344726562, 1302.8475341796875, 1034.8077392578125], 'text': 'AP05JEO', 'bbox_score': 0.5427210330963135, 'text_score': 0.25672875440289444}}}, 208: {}, 209: {}, 210: {}, 211: {}, 212: {}, 213: {}, 214: {}, 215: {}, 216: {}, 217: {}, 218: {}, 219: {}, 220: {}, 221: {}, 222: {}, 223: {}, 224: {}, 225: {}, 226: {}, 227: {}, 228: {}, 229: {}, 230: {}, 231: {}, 232: {}, 233: {}, 234: {}, 235: {}, 236: {}, 237: {}, 238: {}, 239: {}, 240: {}, 241: {}, 242: {}, 243: {}, 244: {}, 245: {}, 246: {}, 247: {}, 248: {}, 249: {}, 250: {}, 251: {}, 252: {}, 253: {}, 254: {}, 255: {}, 256: {}, 257: {}, 258: {}, 259: {}, 260: {}, 261: {}, 262: {}, 263: {}, 264: {}, 265: {}, 266: {}, 267: {}, 268: {}, 269: {}, 270: {}, 271: {}, 272: {}, 273: {}, 274: {}, 275: {}, 276: {}, 277: {}, 278: {}, 279: {}, 280: {}, 281: {}, 282: {14.0: {'car': {'bbox': [430.7031529146813, 776.3696369251816, 764.6515967203011, 1071.07758553248]}, 'car_speed': '120', 'license_plate': {'bbox': [558.161865234375, 977.7589111328125, 648.4338989257812, 1007.1537475585938], 'text': 'FJ14ZHY', 'bbox_score': 0.7726970911026001, 'text_score': 0.6854983803304893}}}, 283: {}, 284: {}, 285: {}, 286: {}, 287: {}, 288: {14.0: {'car': {'bbox': [421.7842705368697, 791.8765701360235, 761.5550124556195, 1077.7049483313244]}, 'car_speed': '907', 'license_plate': {'bbox': [542.7487182617188, 1000.552734375, 640.46630859375, 1032.8583984375], 'text': 'FJ14ZHY', 'bbox_score': 0.7146000266075134, 'text_score': 0.6647482119849303}}}, 289: {}, 290: {14.0: {'car': {'bbox': [423.6057072320627, 798.2762497249638, 762.742332113548, 1077.016646700486]}, 'car_speed': '798', 'license_plate': {'bbox': [537.635986328125, 1006.7369384765625, 637.7538452148438, 1042.465576171875], 'text': 'FJ14ZHY', 'bbox_score': 0.7243423461914062, 'text_score': 0.5857446595624058}}}, 291: {}} + + last_data = [] + + + cleaned_data = {k: v for k, v in additional_data.items() if v != {}} + + for car_id, data in cleaned_data.items(): + for _, entry in data.items(): + if "car_speed" in entry and "license_plate" in entry and "text" in entry["license_plate"]: + _j = { + "car_id": car_id, + "car_speed": entry["car_speed"], + "license_plate": entry["license_plate"]["text"] + } + last_data.append(_j) + + + return render(request , "index2.html" , {'last_data': last_data}) + + + +def show(request) : + return render(request ,"show.html") + + +def data_found(request) : + return render(request , "404.html") + + +def contact(request) : + return render(request , "contact.html") \ No newline at end of file diff --git a/carssp/__init__.py b/carssp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/carssp/__pycache__/__init__.cpython-310.pyc b/carssp/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9fadf7330b9b36541cb493c16ca916099129d65e GIT binary patch literal 141 zcmd1j<>g`k0?o3_G!Xq5L?8o3AjbiSi&=m~3PUi1CZpd^OGfreJ^oiISR1>NZV-A`LB3ju8Dpq~ewcN>JLhvf*hc(Anq<_=KE%Lc4j57P{?!e`SmAq z@JoT?eotPeKN)y=3=jPc2E-X0;*ntUj$jBphXp+MBmY)>$BpJk^F{{E8CfJ6xdCS^ z3^+9Zo;UI^XJB4LSz`%-28k%q<=^v!M~iR70dEx0lCg{mXc=eFg)I)Pyb%a*TtFAm zD%e~^Yw36?9oGpz5RDad*|>-{j8*Wq2G1pkYSUgf*3lK?GF~5Tyxjz@tM3G0zk;@m zt0%Hg-U-GQx@LTWHZ`vJsdb0vxO`<~xdTt4I1Gt9pwfXCNPR1y)R+9g8{vK^=kt5m z#eo%KB=wG@n<#~BTgV}_$m>&i?Bh6szUP#%TLQvT==r2iOULn+#`NJ3O9zo{OE#gQ z+9%x@b&PA9Te?E=5>GjF5c;RHr0#S_|lk0?t5++ke-|- zHC~&QM&NO4Mwmdb8-_uFfJtIGBEN9F&PYi(-gwdt&1d zglv3h1z1jZOTr^rOSTP*#)&TeVwQ3eggk}U#bPT>~Ey(UM2P27y@g65^dW z55md1D6ov$+^aQJCN`CZ8Z1J0$4_SBPOHYZC_VH7WWo(XQ0h+ZQXD8@(y~#AHR2H4 zN}A!>*uo3qN9Sc~5SKWSQ^)Qg9G>F8JuiOTB<)Fzrv#7BOVErQ9FYE5hI#C6N0iNV z^>Q=LmEfj_b}1Q|@gmNa9E^xniZhe>+QcIy+3^szsk}=D&}UwiU>g;$v8-vr%$dllU^V|(pke`2;3P1|pED&{k#UIS$dDzi{mntNSkPc_S} ziVB3ahH4ruD5hK&0tybt*&b0N?&NG zm70J>iqtJ=+LML+|LxW_#1Wc94ECcu5}v)UT3$(+!T<1CV09`XQK6SBpEXVOJ9 zWc3?lv)yoj@vE5*J+kM(J+ zcxNSZJJ@6*Srxq0_fiOb)!r~6%i?k_I*BM}l7JO${dKfVr_zDuugsn!UFb;rFm&fn zJF7f8-~Q6KL#|3SH?EyAAs}2)RJ3x2%DM z_r3GO$>>2ZL^+ZoCybQeXv4YR^}!3JkRemxg6h!7eiZ;mq379K^A})I?&=b&ju^QY>Q7@t0^np5dLv zSU{<8S%9|joylb!{`J!!gKpqH=3tZhE?JY|J{_GL4tnRw==k!oKj@8;v-6{?pU3y_ zo6koEtd%-9-Hz)diC2&$j-qiN8XZyUCslF=@D8LyaDlOSkp4neI2gePU{qHraZ!P2bUw{s-UB Br=9=+ literal 0 HcmV?d00001 diff --git a/carssp/asgi.py b/carssp/asgi.py new file mode 100644 index 0000000..37d231e --- /dev/null +++ b/carssp/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for carssp project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'carssp.settings') + +application = get_asgi_application() diff --git a/carssp/settings.py b/carssp/settings.py new file mode 100644 index 0000000..2a9431a --- /dev/null +++ b/carssp/settings.py @@ -0,0 +1,132 @@ +""" +Django settings for carssp project. + +Generated by 'django-admin startproject' using Django 5.0.6. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.0/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-1v8eoj_h*qygne$$6nok2pne)jx!d!r9h^3du3u_!p-0e3bols' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'base' , +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'carssp.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'carssp.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.0/howto/static-files/ + + +import os + + +STATIC_URL = '/static/' +STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] + +MEDIA_URL = '/media/' +MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') + +# Default primary key field type +# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/carssp/urls.py b/carssp/urls.py new file mode 100644 index 0000000..6bfb2f9 --- /dev/null +++ b/carssp/urls.py @@ -0,0 +1,11 @@ +from django.conf import settings +from django.contrib import admin +from django.urls import path , include +from django.conf.urls.static import static +urlpatterns = [ + path('admin/', admin.site.urls), + path('' ,include("base.urls") ) +] + +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/carssp/wsgi.py b/carssp/wsgi.py new file mode 100644 index 0000000..9c2829c --- /dev/null +++ b/carssp/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for carssp project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'carssp.settings') + +application = get_wsgi_application() diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..15f434a90a51544afb0bc5fe41fa0a9faec5ff85 GIT binary patch literal 135168 zcmeI5ZEPFKdB?dTr4=oaD_hp>-PwvL+B%z&WszLIh`wHPw9T_+>&2GjvlaBPU6Lzl zCB8@`C0iGu1$DlpNZJogkpL~wrYKOLMf;&GS_DO!qDWg5eM{0JDbOY<(gH==07;4h z$$dxzbY{5ZzHlYcihDSp{Ql=B-en8<6N%> z0xp+pjQkrV|C*nd$%?1BLH_4V>-(*axi06pZfY$2klKjC4}HUZKj?d@?~lD-<-hO! zjh-)buX=vb{q3$Fb&+DN!zlU4_;fyq?a;*dvnuw?_~nhbJsHu0ztdgAx?vV`MLH? z!NA2J6Q<>ZmjXd1kLU@8>Q_$k;%bVkD@F|(sheu0s8y?4xm1;nby|t3ST3GRMOCJ( z&G?jF3$y$-qkTM@#J6RkRj}wF;>QPg@eLw=_8{>MPegY%5)J3FD=BB)Cp*&J=Ik)Z z%?w2Cy3i}u-6?MGTt{*(m6gM}ycCUR!$!|(BQ&so|7o)|y5s@HbX+&mr7UhpWzYLb z(~Mi1#$=K!muhOMCf9a1RobPZE3srkjb&NW7B{o9oK}kKvP^WwD+K&7t?9( z@yj(OTWB1o?C56;Lqyd$x7bsBdL@?9S7$Qj^NHP%VkIY%fJPd0RjmZ(=9dC<_hx1S zcNV5+(+kUi+nMD+`rgv~^c-X~n|FgnXJv%;!hO6rF~L0^w4r53mU%N>uD_VsV zv%h6i$blAWQPB!UNy)fT63I`6)|8c%c9A4S$vLIYbBK+YO8)Ia-v7f zjBqY?I;?IL$nBa;8j9GH`y0BZ-{3@At9^TOy}X!8agUQm`!@QLadb5fjJCaAhn8MQ@<~Kh81rfgWBQ9p&m9HlU0-s~Nu^xFf-`_Q9$4{v49{9`VNL zf!(4(ywNY%dM~+)rvF@f=ev1ve4KmhXN~$86j`N=%^ruE8L3a9dT~?rNORh62@Y=1 z{JK(FEn6<$x}?J|POa;+ab^mew1nz6J-k?!xcW!f!RAnutZZ(|1tqH%(2A)y<2N#O-af7I(<$u*+j@ zc?XN9(E1TGaw6DJ@7yY_IyonY?sWCguD#6ash=;a>ejYe%Bi+Zx21lz#EbM8yhL(_ z>dPE2PEK-rikV$eTdgQH`Y@(*F?MuW{07_7k3@}dF|Iq&xb?zgJzv;UN!Ehac6A}= zfuTVkSq}D%xP-qFJ}u;hQU5>rf8Kx9_aooud=GuG{%`evrvLT+lYL+6d%N!rF~bK0 zKmY_l00ck)1V8`;-p>Rk2fJNEW9h6?Rm0(MMAk}LO;ZZda5Od%PE16ifk^5~Ou8Z^ zE>9)HQYs~#>UIr}rK@UVoMyjF;VZG&m3a7aLW(C+(#?~kl>2G=+)WCJ%1WU|Myyy! z)(Be3MdguPP)n<|HFNPTPmy>`ntFABc)HQ_6p^<#S#)W$Qhu~+8sVurd59+x(OBx5 zKs?MgJ%n{FjZgx8$~Z(uT$&1}k~jRs$vxdkIAyL7i}iKjD3+Q^PDNky5l4$nM^k1; z&9L7gf?^3NITg9xPyD>m^pn*6>?j3|@F`bFa4w&h)k>vYk&C41lvULcQ7oEBO-0gu z#MyMySwgOmr%SD(He(QU1f?pImXA77CVeCpk6%4OT-#m}PD_s^j zYRlBEql>^A_4t7FtKJ7F!gp-L#IG!Yf>|l(b&vM4oh;hcf5JWDWt%jbLzE3R5?hfK(e0KvhdCMiV3&KM zS5IJZ3mUT+;@p!>Yh$Lu;0fZG7j|93cZI(d{zdq_uq*t!@QHVe1Ihsb5C8!X009sH z0T2KI5C8!X0D<>8fs>x0VUEr#+R^fAd9zaGPkV;XaLtKB`u{y=J!9uM^Na}7dbiIr zG{nLPG(zCfLC?@A+iV34N?j*C;;@&61ey~f==}e)eShi_zApTM@N+^| zxFYoX|JDD8{!jZW{yG0;|0&;p`@ZP=J>T2DCEvOJAM}5v|9ATz_y2VN%l!j=|3Nb1 z0|Fob0w4eaAOHd&00JQJE)f_z+wI~mMED&|eJD2{B(5o?0Np_rC*H)fgxgdZoG#IGZ|4``sVm)Vlk2IW~xk2 zR4rxtz5tzsPTv9HA}@FA@@(e1L`w$p4hYSl>$GLiwVE@8$on6peY&Y&n>7_}Ha$yT z@Zd%+c$jkf*w>OwHv;744N`NDF14AiYh)JW%?xUxYinBQqUh#}*cpBbO8+;^6CS%(G|38bO~(xEP1to)Y45g zv<#>SwsDcXw!n=`T}*}XblZ|*?7GAg%gJPyuE$8Awz?=|=Oyy~0kzhZ841){muKvJ ziM(S#dTkfgXzZn?RH(7%Jb8h@dm+NaHlMm%Qpt`0dokf6c}KuI9@mAM?R1%jC3!c1 zSn49pmb%22WstlS;2oQ!0?lSrUdx7#|DW~!olE#08U6oD5(D^E;ccNP+!t;LF=12~ z5IFz${NM2Zz5lcRU-Q51FZqAUf5RX3kNEq2Kk$8%WW)yqKmY_l00ck)1V8`;KmY_l z;9Vy$=;1DK)>zQlArCjs*#kdk8hiCe$Y$*3#Zw+`jI)GuUSPW{!JFq#d$8|6&#jebVJ642;t?9!dEh{Oq2vJtNEGJW;{ zMX%`LCb{-t1mD=NJ2WB(J&dX?z|eilrMMM zvm5!9s9arBqVdG}WR!dj`x+oZP)XbNiEcYY+ed5C8!X009sH0T2KI5C8!X z0D<>7fnK-R_#OZ{{_h%ikE?||5C8!X009sH0T2KI5C8!X009sHfgg(ioB!|snv49! z2LwO>1V8`;KmY_l00ck)1V8`;o<#zCPCc6RboESlXcu1V3= z^@@_)Er!FT%j&I1udin^^AEN3-33*?7G1kq%-p`aEv@8c*QQ^)y0xk-hPM*4`DA`> zyLP>%PRMdizPk2cd2?lcDmAgVJ-v1J)}x6V%MW7lnXQ>rdOac)7pnOWZnnHTbA|1x=KTL?A`of4CJ>PlQnE4s|Lf%Y|6Ozy9}oZm5C8!X z009sH0T2KI5C8!X0D)(Wz&ZD<_psmx=KnuqjS9IS00JNY0w4eaAOHd&00JNY0w8b% z0(kyE0yJa+0T2KI5C8!X009sH0T2KI5CDN^i~ybVe^z+ICH$}Oj_^OicZ6>V|0aA* z_^R+F;je{17d|h1R``A4cZA;*J|q0H@Jqrk2p<#b!bgN{p)6=Zj%36K1V8`;KmY_l z00ck)1V8`;KmY`eJArOD$MI*`@(f$P$d)hAWzX|$DYE5rY&k@i-KW`dkS$NKICy>IecL00JNY0w4eaAOHd&00JOzj0xcR z{}?wusty7m00JNY0w4eaAOHd&00JOzYzW}_|JXD&DhdK100JNY0w4eaAOHd&00JOz zj0xcR{}?wusty7m00JNY0w4eaAOHd&00JOzYzW}_|JXD&DhdK100JNY0w4eaAOHd& z00JOzj0yPo@4HTTKIIb5`~T7V)t)c-9`=8{=XCdd&!_s{Y5wW@QP({8N!OQMuh>BK zeYfXraejiUN3>F2eWYyH*5vJ~T9H>Pn0{L{jx&Nlc+kw54KFJe&*XI+i zRAu_xj88dWZZq1)qe*;Q77E^?gNPp=;KetH_}PQRH#`yD*+?{;%dVuHb)W1=cbl`r zBsVhlJOwNzFP=kiiCo(&s4r;X6S{{5%TwsFwV);yq?j_XFcl*J9H z?0G+FnsH0hm`rlzQcW$@HdIw%gU!BP~Urfk# zB%qO_VO6aJ=H{0IbN6Ou0(TasXVVMIf!mqoK>FU&{PY}gG@F@QB1c;D>eHTUA@f>h zAv1R^vuG-c>ZjMLz;&9sz=TZCO)pKSXJ(f5otf+Ai$VvE8IaCAhx%UPzA283a34Kq zMb=_mXxAu_?NU+rtJ`wcKx)*@_Jb-sRU75^+S;pJz{2rbFnK_b*rEeYtm4} zp4@WLHT|9|(pv4?o9pGpREm3?G}^cAdc(}y_Ie#!zRl=J-Js#c@z`oRN|xi>O&Rz`^2_x^)8I?B~IY(Nc&{C?n$1k2h7r`r2-NaB0M8>0tyiw5yV zzhLXVq#j;+55HF*806n;ckajOW^C_4KQE@!+~b#x4#ln_Y+>}zYU`kGJPesqd=4GX z(Z!KEAoJAO(L_x{Ng!|9B{(}2r*T=XdG3@M9eM0h6 z*CRYtm5t8J>Z47qqRK3=uf%hSXd)q5O#*tg^_dUWM92J%5mc)o1!O9V44x(?c`+2? z_AZzsRk|!|UfU3lHIX`QR%S!pH8{mgB+Wx&glf~C)LID!YU-n!d632|(_xU~<#3NU zAKEXPZ51a+tlNE&%TGE&(px_{&a;4ik%2P8_{Lguq}x1DXdah%vOzFwfG!d@b8L)I zg``VQ9?>6p>w^>gfkSyt;}WKb?UU8ws6%;V0G0HRCmqIfqD0)V(ZU0G5)<1fT{Is1 z{~o3zg*uHdTB<;%U<9AS6b!%h+`)RRF)r{_reKWn;_f)NCm6G04k#d3&a1RJOhOZQ7k(cRZPdG)mJ$Ftj%o;OW4?W6n6_jiPN7yLGwdgWoVd z(uK)B)202$Gmlg1r#N#az0|{}4YcZP47l5_fYzhOGF%X<-yGq^vc%OtV!pJQg~(() zK`tm+wICNs+ZW_yBAb`;QkFHmgL02!<2x80?AdY&Gz+3+TAG5S)tM}EIh_6gFG>=( zmoi@t%{d)33|pJt!Qx2GZ|K{%RT`?DlSB1^Ve^QsE=$Q5wGy2=(V8onizi}gR!P_m z&g#{&-f`@o-vYa3MyuW&8VuDhp5;ZE%(c90?kO$X_M|$L{T9s*%{W2P`A<*lg)NLzyM1PDWF?!8uS9b#L2cvkFIs!={)V=BolVcCtC^!9 z+Sv?!wEu+aQ_t~Yj#Os(u*xux#&bsX+D9PL}@&jU((l8Tb!&EkpFeDE|c-X&+t zxUJ&sp`vO`|4k+1@l-q(GkQ|P;<^1=Xg>#by$w6spV%7fN*Mp|ET91^5C8!X009sH z0T2KI5C8!X009tqmI>hb|5Zu;XA@V3x6a0iSQZW<75*b5C8!X z009sH0T2KI5C8!X009sHfu}%VfcLnDhUxFrHGdXwu*c&XKBNDNT2=r5Ot;51c256g zj@s^~S~acrdx(!A`ZEFaCk=dVvL(_j_U-Y|Cw!A2nPWW009sH0T2KI5C8!X009sHfsP6M EAEchw00000 literal 0 HcmV?d00001 diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..e6b07ae --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'carssp.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/static/img/Mail-rafiki.svg b/static/img/Mail-rafiki.svg new file mode 100644 index 0000000..a3cbb6d --- /dev/null +++ b/static/img/Mail-rafiki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/Online tech talks-rafiki.svg b/static/img/Online tech talks-rafiki.svg new file mode 100644 index 0000000..7c6e645 --- /dev/null +++ b/static/img/Online tech talks-rafiki.svg @@ -0,0 +1 @@ + diff --git a/static/img/django.svg b/static/img/django.svg new file mode 100644 index 0000000..05b253f --- /dev/null +++ b/static/img/django.svg @@ -0,0 +1 @@ + \ No newline at end of file