def test_one_car(self): car1 = Car(description='car1', engine='2L', year=2015, make='Honda', owner='Chris', photo=self.img) car1.save() cars = Car.objects.all() self.assertEqual(len(cars), 1)
def get(self, request): result = [] car = request.GET.get("car") car = Car.get_by_id(car) odata = Spares.objects.filter(model=car) nodata = SparesAnalog.objects.filter(model=car) for d in odata: result.append( { "name": d.name.name, "part_number": d.part_number, "cost": d.cost, "count": d.count, "type": "Оригинал", } ) for nd in nodata: result.append( { "name": nd.name.name, "part_number": nd.part_number, "cost": nd.cost, "count": nd.count, "type": "Аналог", } ) return render(request, "spares/index.html", {"result": result})
def post(self, request): car = Car(owner=request.user) form = self.form(data=request.POST, instance=car) if form.is_valid(): form.save() response = HttpResponseRedirect(reverse('cars')) msg_level = messages.SUCCESS msg = _('Congrats! Now we are keeping your.car!\ Add some data about it.') messages.add_message(request, msg_level, msg) else: context = {'form': form} first_contact = request.POST.get('first_contact') if not first_contact: template = "car/car_list.html" else: template = "car/new_car_get_started.html" msg_level = messages.ERROR msg = _('You have some problems on your car info. \ Please, correct these trying to create it again.') messages.add_message(request, msg_level, msg) response = TemplateResponse(request, template, context) return response
def test_handle_with_car_not_found(self, send_message_mock, car_mock): car_mock.side_effect = Car.DoesNotExist() chat_id = 1 plate = 'ABC9876' self.inform_command.handle(chat_id, plate) car_mock.assert_called_with(license_plate=plate) text = 'No car with license plate %s found.' % plate message = {'chat_id': chat_id, 'text': text} send_message_mock.assert_called_with(message)
def AddCars(): if request.method=='POST': name=request.form.get('name') car_type=request.form.get('type') price=request.form.get('price') image_url=request.form.get('image_url') new_car=Car(name=name,car_type=car_type,hire_price=price,image_url=image_url,owner=current_user) db.session.add(new_car) db.session.commit() flash('Added Successfully') return redirect('/cars') return render_template('mycars.html')
def post(self, request, *args, **kwargs): serialize_data = self.get_serializer(data=request.data) if serialize_data.is_valid(): file = serialize_data.validated_data['file'] xl = pd.ExcelFile(file) df = xl.parse(xl.sheet_names[0]) for index, row in df.iterrows(): if isinstance(row['date'], str): date = datetime.strptime(row['date'], '%d/%m/%Y') else: date = row['date'] if date.year < 1900: date = jdatetime.date(day=date.day, month=date.month, year=date.year).togregorian() name = row['name'] price = row['price'] total = row['total'] try: car = Car.objects.get(name=name) except Car.DoesNotExist as e: car = Car(name=name) car.save() car_stock = CarStock(car=car, price=price, total=total, date=date) car_stock.save() data = {} return responses.SuccessResponse(data, status=200).send() else: dev_error = serialize_data.errors message = 'Failed to upload {}'.format( serialize_data.data['file'].name) return responses.ErrorResponse(message=message, dev_error=dev_error, status=400).send()
def get(self, request): result = {} result["spares"] = [] result["original"] = True car = request.GET.get("car") id = request.GET.get("id") if id: cr = Car.get_by_id(car) original_cost = 0 analog_cost = 0 wrk = Work.get_by_id(id=id) for sc in SparesOriginalCount.objects.filter(work__id=id).order_by("name"): original_cost = original_cost + (sc.name.cost * sc.count) if not self.CHECK.get(request.GET.get("original")): continue result["spares"].append( { "id": sc.name.id, "name": sc.name.name.name, "part_number": sc.name.part_number, "cost": sc.name.cost, "count": sc.count, "type": "Оригинал", } ) for notsc in SparesAnalogCount.objects.filter(work__id=id).order_by("name"): analog_cost = analog_cost + (notsc.name.cost * notsc.count) if self.CHECK.get(request.GET.get("original")): continue result["spares"].append( { "id": notsc.name.id, "name": notsc.name.name.name, "part_number": notsc.name.part_number, "cost": notsc.name.cost, "count": notsc.count, "type": "Аналог", } ) cost = original_cost if not self.CHECK.get(request.GET.get("original")): cost = analog_cost result["original"] = False result["spares_cost"] = cost result["work_cost"] = cr.model.brand.clock_rate * wrk.work_ratio result["difference"] = original_cost - analog_cost result["summary"] = cr.model.brand.clock_rate * wrk.work_ratio + cost return render(request, "work/index.html", {"result": result}) return JsonResponse({"success": False, "result": result})
def add_car(request): book_id = request.POST.get('book_id') book_count = int(request.POST.get('book_count')) print('add_car', book_count) print('add_car', book_id) # 字典方式存储book # book_list= [] # book_list.append({"id":book_id}) # request.session['car'] = book_list car = request.session.get('car') txtUsername = request.session.get('txtUsername') if txtUsername: user = TUser.objects.get(user_name=txtUsername) user_car = TCar.objects.filter(id=user.user_id) for user_book in user_car: if int(book_id) == user_book.book_id: try: user_book.goods_number = int( user_book.goods_number) + book_count user_book.save() print(user_book.goods_number) except: print('update error') if car: car.add(book_id, book_count) request.session['car'] = car for res in car.book_list: print(res.id, res.name, res.count, res.price, res.picture) else: car = Car() car.add(book_id, book_count) request.session['car'] = car for res in car.book_list: print(res.id, res.name, res.count, res.price, res.picture) return HttpResponse('添加成功')
def get(self, request): def sortdict(dct): res = OrderedDict() for x in sorted(dct): for k, v in dct.items(): if k == x: res[k] = v return res result = {} car = request.GET.get("car") car = Car.get_by_id(car) for wrk in Work.objects.filter(active=True, cars=car): if result.get(wrk.type_work.name): result[wrk.type_work.name].append({ "id": wrk.id, "name": wrk.name }) else: result[wrk.type_work.name] = [{"id": wrk.id, "name": wrk.name}] return JsonResponse({"success": True, "result": sortdict(result)})
def car(request): txtUsername = request.session.get('txtUsername') # 登录 if txtUsername: car = request.session.get('car') user = TUser.objects.get(user_name=txtUsername) user_car = TCar.objects.filter(id=user.user_id) # 外面有车 if car: if request.session.get('car'): for book in car.book_list: flag = False for user_book in user_car: if int(book.id) == user_book.book_id: try: with transaction.atomic(): if int(user_book.goods_number) > int( book.count): pass else: user_book.goods_number = int( book.count) user_book.save() flag = True except: print('update error') if not flag: try: with transaction.atomic(): TCar.objects.create(book_id=book.id, goods_number=book.count, id=user) except: print('insert1 error') else: for book in car.book_list: try: with transaction.atomic(): TCar.objects.create(book_id=book.id, goods_number=book.count, id=user) except: print('insert2 error') for user_book in user_car: flag = False for book in car.book_list: if int(book.id) == user_book.book_id: book.count = int(user_book.goods_number) flag = True if not flag: car.add(user_book.book_id, user_book.goods_number) request.session['car'] = car sum_price = 0 sum_count = 0 for i in car.book_list: sum_price = sum_price + float(i.price) * int(i.count) sum_count = sum_count + int(i.count) return render( request, 'dangdang/car.html', { 'txtUsername': txtUsername, 'car': car, 'sum_price': sum_price, 'sum_count': sum_count }) else: car = Car() for user_book in user_car: print(user_book.book_id, user_book.goods_number) car.add(user_book.book_id, user_book.goods_number) print(car) request.session['car'] = car sum_price = 0 sum_count = 0 for i in car.book_list: sum_price = sum_price + float(i.price) * int(i.count) sum_count = sum_count + int(i.count) return render( request, 'dangdang/car.html', { 'car': car, 'sum_price': sum_price, 'sum_count': sum_count, 'txtUsername': txtUsername }) elif request.session.get('car'): car = request.session.get('car') sum_price = 0 sum_count = 0 for i in car.book_list: sum_price += i.price * i.count sum_count += i.count return render(request, 'dangdang/car.html', { 'car': car, 'sum_price': sum_price, 'sum_count': sum_count }) # 未登录 外面无车 else: car = request.session.get('car') return render(request, 'dangdang/car.html', {'car': car})
def Wls(video, start_time, location, latitude, longtitude): """""" savePath = video video = 'static/videos/'+video uploaded_time = 0.0 baseline_01 = 0.55 baseline_02 = 1.0 writer = None frame_per_second = 30 maxLost = 3 # maximum number of object losts counted when the object is being tracked car_label_strlist = np.loadtxt("Module/car_label2.csv", delimiter=',', dtype='str') #load vgg16 pre_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3), backend=keras.backend, layers=keras.layers, models=keras.models, utils=keras.utils) pre_model.trainable = True pre_model.summary() # add output layer for VGG16 output (4096 -> 1000 => 4096 -> 1000 -> 100) vgg_model = models.Sequential() vgg_model.add(pre_model) vgg_model.add(layers.Flatten()) vgg_model.add(layers.Dense(4096, activation='relu')) vgg_model.add(layers.Dense(1024, activation='relu')) vgg_model.add(layers.Dense(20, activation='softmax')) # practical vgg_model.summary() vgg_model.compile(loss='categorical_crossentropy', optimizer=optimizers.RMSprop(lr=2e-5), metrics=['acc']) #vgg_model.load_weights("y_s_weights.h5") # 가중치 모델 1 #vgg_model.load_weights("y_up_weights.h5") # 가중치 모델 2 vgg_model.load_weights("Module/CarDatabaseShare/y_seventh_car_weight.hdf5") #가중치 모델 3 # Load Yolo net = cv.dnn.readNet("Module/CarDatabaseShare/yolov3.weights", "Module/CarDatabaseShare/yolov3.cfg") classes = [] with open("Module/CarDatabaseShare/coco.names", "r") as f: classes = [line.strip() for line in f.readlines()] layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] #print(len(classes)) colors = np.random.uniform(0, 255, size=(len(classes), 3)) #print(colors) bbox_colors = np.random.randint(0, 255, size=(len(classes), 3)) #print(bbox_colors) tracker = Tracker(maxLost=maxLost) cap = cv.VideoCapture(video) # Check if camera opened successfully if not cap.isOpened(): print("Error opening video stream or file") sys.exit() vwidth = cap.get(3) # float vheight = cap.get(4) # float frame_count = 0 while True: _, frame = cap.read() if _ is not True: break height, width, channels = frame.shape # Detecting objects blob = cv.dnn.blobFromImage(frame, 0.00392, (320, 320), (0, 0, 0), True, crop=False) net.setInput(blob) outs = net.forward(output_layers) # Showing informations on the screen class_ids = [] confidences = [] boxes = [] detected_boxes = [] detected_label = [] detected_times = [] detected_colors = [] for out in outs: for detection in out: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: # Object detected center_x = int(detection[0] * width) center_y = int(detection[1] * height) w = int(detection[2] * width) h = int(detection[3] * height) # Rectangle coordinates x = int(center_x - w / 2) y = int(center_y - h / 2) boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) indexes = cv.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) # print(indexes) font = cv.FONT_HERSHEY_PLAIN for i in range(len(boxes)): if i in indexes: x, y, w, h = boxes[i] if h > 40 and w > 50 and class_ids[i] == 2 and y > (vheight * baseline_01) and (y + h) < (vheight * baseline_02): cropimg = frame.copy() cropimg = frame[y:y+h, x:x+w] try: colorlabel = process_image(cropimg) cropimg = cv.cvtColor(cropimg, cv.COLOR_BGR2GRAY) cropimg = cv.resize(cropimg, dsize=(224, 224), interpolation=cv.INTER_AREA) cropimg = cv.GaussianBlur(cropimg, (3, 3), 0) cannimg = cv.Canny(cropimg, 25, 50) npimg = np.asarray(cannimg) npimg = np.stack((cannimg,)*3, axis=-1) npimg = np.expand_dims(npimg, axis=0) #print(npimg.shape) car_recog = CarClassifier(npimg, vgg_model, car_label_strlist) detected_boxes.append((x, y, x + w, y + h)) detected_label.append(car_recog) detected_times.append(int(frame_count/frame_per_second) + 1) detected_colors.append(colorlabel) except: continue color = colors[i] cv.rectangle(frame, (x, y), (x + w, y + h), color, 2) #cv.putText(frame, car_recog, (x, y + 30), font, 2, color, 3) #cv.putText(frame, label, (x, y + 20), font, 3, color, 3) elif (class_ids[i] == 3 or class_ids[i] == 5 or class_ids[i] == 7) and y > (vheight * baseline_01) and (y + h) < (vheight * baseline_02): cropimg = frame.copy() cropimg = frame[y:y+h, x:x+w] colorlabel = process_image(cropimg) label = str(classes[class_ids[i]]) color = colors[i] cv.rectangle(frame, (x, y), (x + w, y + h), color, 2) #cv.putText(frame, label, (x, y + 20), font, 2, color, 3) detected_boxes.append((x, y, x + w, y + h)) detected_label.append(label) detected_times.append(int(frame_count/frame_per_second) + 1) detected_colors.append(colorlabel) cv.line(frame, (0,int(vheight*baseline_01)), (int(vwidth-1), int(vheight*baseline_01)), (0,0,0), 2) cv.line(frame, (0, int(vheight * baseline_02)), (int(vwidth - 1), int(vheight * baseline_02)), (0, 0, 0), 2) objects = tracker.update(detected_boxes, detected_label, detected_times, detected_colors) # update tracker based on the newly detected objects for (objectID, centroid) in objects.items(): text = "ID {}".format(objectID) if centroid[1] > (vheight * baseline_01) and centroid[1] < (vheight * baseline_02): cv.putText(frame, text, (centroid[0] - 10, centroid[1] - 10), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) cv.circle(frame, (centroid[0], centroid[1]), 4, (0, 255, 0), -1) # cv.imshow('', frame) key = cv.waitKey(1) if key == 27: break if writer is None: startTime = start_time.replace(" ", "-") startTime = startTime.replace(":", "-") savepath=savePath.split(".")[0] filePath= "static/output/" + savepath + "-" + startTime + ".mp4" print(filePath) fourcc = cv.VideoWriter_fourcc(*"h264") # fourcc = cv.VideoWriter_fourcc(*"mp4v") writer = cv.VideoWriter(filePath, fourcc, 30, (int(vwidth), int(vheight)), True) writer.write(frame) if frame_count % 50 == 0: classified_info_list = tracker.getClassifiedInfo() for obj in classified_info_list: print(obj) frame_count+=1 cctv = Cctv(video_link=filePath, location=location, start_time=start_time, latitude=latitude, longtitude=longtitude) cctv.save() classified_info_list = tracker.getClassifiedInfo() for obj in classified_info_list: print(obj) #car model 이름 나오게하기, appearance_time 에다가 초 더하기, 브랜드 넣으면 좋음 #CCTV video_link 제대로 넣기 // 했고 for obj in classified_info_list: try: model_brand = obj[1][0][0].split("-") model = model_brand[0] brand = model_brand[1] except: model = obj[1][0][0] brand = obj[1][0][0] try: car = Car.objects.get(model=model) # car = Car.objects.get(model='a') except: car = Car(model=model, brand=brand) # car = Car(model='a', brand="") car.save() start_time = datetime.datetime.strptime(str(start_time), '%Y-%m-%d %H:%M:%S') appearance_time = start_time + timedelta(seconds=obj[2]) cctv_log = CctvLog(car_model=car, color=obj[3], appearance_time=appearance_time, cctv_id=cctv) cctv_log.save() writer.release() cap.release() os.remove(video) cv.destroyAllWindows()