Exemplo n.º 1
0
def create_update_address(line1,
                          line2=None,
                          line3=None,
                          city=None,
                          pin=None,
                          address_id=None,
                          latitude=None,
                          longitude=None,
                          landmark=None):
    if address_id:
        address = get_or_none(Address, id=int_or_none(address_id))
        Address.objects.filter(id=int_or_none(address_id)).update(
            line1=line1,
            line2=line2,
            line3=line3,
            city=city,
            pin=pin,
            latitude=latitude,
            longitude=longitude,
            landmark=landmark)
    else:
        address = Address.objects.create(line1=line1,
                                         line2=line2,
                                         line3=line3,
                                         city=city,
                                         pin=pin,
                                         latitude=latitude,
                                         longitude=longitude,
                                         landmark=landmark)
    return address
Exemplo n.º 2
0
def update_supplier(request):
    supplier = get_or_none(Broker,
                           id=int_or_none(request.POST.get('supplier_id')))
    phone_status, msg = verify_profile_phone(
        username=supplier.name.username,
        phone=request.POST.get('contact_person_number'),
        alt_phone=request.POST.get('alternate_number'))
    if phone_status:
        return json_error_response(msg=msg, status=409)
    email_status, msg = verify_profile_email(username=supplier.name.username,
                                             email=request.POST.get('email'),
                                             alt_email=None)
    if email_status:
        return json_error_response(msg=msg, status=409)

    if request.POST.get('pan') and Broker.objects.exclude(
            name=supplier.name).filter(pan=request.POST.get('pan')).exists():
        return json_error_response("PAN Already exists", status=409)

    profile = Profile.objects.get(user=supplier.name)
    profile.name = request.POST.get('supplier_name')
    profile.contact_person_name = request.POST.get('contact_person_name')
    profile.phone = request.POST.get('phone')
    profile.alternate_phone = request.POST.get('alt_phone')
    profile.email = request.POST.get('email')
    profile.comment = request.POST.get('remarks')
    profile.save()
    create_update_profile(
        user=supplier.name,
        name=request.POST.get('supplier_name'),
        contact_person=request.POST.get('contact_person_name'),
        contact_person_phone=request.POST.get('contact_person_number'),
        phone=request.POST.get('contact_person_number'),
        alternate_phone=request.POST.get('alternate_number'),
        email=request.POST.get('email'),
        remarks=request.POST.get('remarks'))
    supplier.pan = request.POST.get('pan')
    supplier.route = request.POST.get('route')
    supplier.city = get_or_none(City,
                                id=int_or_none(
                                    request.POST.get('supplier_city')))
    supplier.aaho_office = get_or_none(AahoOffice,
                                       id=request.POST.get('aaho_office'))
    supplier.destination_state.clear()
    dest_states = request.POST.getlist('destination_states[]')
    if dest_states:
        if 'select_all' in dest_states:
            dest_states = State.objects.values_list('id', flat=True)
        for dest_state in dest_states:
            supplier.destination_state.add(dest_state)
    supplier.save()
    return json_success_response("success")
Exemplo n.º 3
0
def register_owner(request):
    username = "".join(re.split("[^a-zA-Z]*",
                                request.POST.get('owner_name')))[:12]
    owner_name = request.POST.get('owner_name')
    pan = request.POST.get('pan')
    if User.objects.filter(username__iexact=username).exists():
        username = random.randrange(999999999999, 99999999999999)
    # if owner_name in Owner.objects.values_list('name__profile__name', flat=True):
    #     return json_error_response(msg='Owner {} already exists'.format(request.POST.get('owner_name')), status=409)
    # if request.POST.get('pan') in Owner.objects.values_list('pan', flat=True):
    #     return json_error_response(msg='Pan {} already exists for {}'.format(owner_name, ''.join(
    #         Owner.objects.filter(pan=pan).values_list('name__profile__name', flat=True))), status=409)
    #
    # if Vehicle.objects.filter(id__in=request.POST.getlist('vehicle_id[]')).exclude(owner=None):
    #     print (Vehicle.objects.filter(id__in=request.POST.getlist('vehicle_id[]')).exclude(owner=None))
    user = User.objects.create_user(username=str(username).lower(),
                                    password='******')
    Profile.objects.create(
        user=user,
        name=request.POST.get('owner_name'),
        phone=request.POST.get('owner_phone', None),
        contact_person_name=request.POST.get('contact_person_name'),
        contact_person_phone=request.POST.get('contact_person_phone'),
        alternate_phone=request.POST.get('alternate_number'),
        email=request.POST.get('email'),
        comment=request.POST.get('remarks'))
    owner = Owner.objects.create(
        name=user,
        address=Address.objects.create(
            line1=request.POST.get('owner_address'),
            city=get_or_none(City, id=int_or_none(request.POST.get('city'))),
            pin=request.POST.get('pin', None)),
        route_temp=request.POST.get('route'),
        pan=request.POST.get('pan'))
    Broker.objects.create(name=user,
                          address=Address.objects.create(
                              line1=request.POST.get('owner_address'),
                              city=get_or_none(City,
                                               id=int_or_none(
                                                   request.POST.get('city'))),
                              pin=request.POST.get('pin', None)),
                          route=request.POST.get('route'),
                          pan=request.POST.get('pan'))
    try:
        for vehicle in Vehicle.objects.filter(
                id__in=request.POST.getlist('vehicle_id[]')):
            vehicle.owner = owner
            vehicle.save()
    except ValueError:
        pass
    return json_success_response(msg="success")
Exemplo n.º 4
0
def register_vehicle(request):
    if Vehicle.objects.filter(vehicle_number=compare_format(
            request.POST.get('vehicle_number'))).exists():
        return json_error_response(msg="Vehicle Already Exists", status=409)
    owner = get_or_none(Owner,
                        id=int_or_none(request.POST.get('owner_id', None)))
    vehicle = Vehicle.objects.create(
        owner=owner,
        vehicle_number=compare_format(request.POST.get('vehicle_number')),
        rc_number=request.POST.get('rc_number'),
        permit=request.POST.get('permit_number'),
        permit_validity=django_date_format(
            request.POST.get('permit_validity')),
        permit_type=request.POST.get('permit_type'),
        vehicle_type=get_or_none(VehicleCategory,
                                 id=int_or_none(
                                     request.POST.get('vehicle_category'))),
        vehicle_capacity=to_int(request.POST.get('exact_vehicle_capacity')),
        body_type=request.POST.get('vehicle_body_type'),
        vehicle_model=request.POST.get('vehicle_model'),
        chassis_number=request.POST.get('chassis_number'),
        engine_number=request.POST.get('engine_number'),
        insurer=request.POST.get('insurer'),
        insurance_number=request.POST.get('insurance_number'),
        insurance_validity=django_date_format(
            request.POST.get('insurance_validity')),
        registration_year=None if not request.POST.get('registration_year')
        else django_date_format('01-Jan-' +
                                request.POST.get('registration_year').strip()),
        registration_validity=django_date_format(
            request.POST.get('registration_validity')),
        fitness_certificate_number=request.POST.get(
            'fitness_certificate_number'),
        fitness_certificate_issued_on=django_date_format(
            request.POST.get('fitness_certificate_issued_on')),
        fitness_certificate_validity_date=django_date_format(
            request.POST.get('fitness_certificate_validity')),
        puc_certificate_number=request.POST.get('puc_certificate_number'),
        puc_certificate_issued_on=django_date_format(
            request.POST.get('puc_certificate_issued_on')),
        puc_certificate_validity_date=django_date_format(
            request.POST.get('puc_certificate_validity')),
        gps_enabled=False if request.POST.get('gps_enable') == 'no' else True,
        changed_by=request.user)
    if owner:
        create_broker_owner(owner=owner)
        broker = Broker.objects.get(name=owner.name)
        update_broker_vehicle(broker=broker, vehicle=vehicle)
    return json_success_response(msg="Success")
Exemplo n.º 5
0
def register_customer(request):
    if request.POST.get('email_id') and Profile.objects.filter(
            email__iexact=request.POST.get('email_id')).exists():
        return json_error_response('Email ID Already Exists', status=409)
    elif Profile.objects.filter(
            name__iexact=request.POST.get('company_name')).exists():
        return json_error_response('Company Already Registered', status=409)
    # elif Profile.objects.filter(phone__iexact=request.POST.get('contact_person_number')).exists():
    #     return json_error_response('Phone Already Exists', status=409)
    elif Sme.objects.filter(
            company_code__iexact=request.POST.get('company_code')).exists():
        return json_error_response('Company Code Already Exists', status=409)
    else:
        username = "".join(
            re.split("[^a-zA-Z]*", request.POST.get('company_name')))[:12]
        if User.objects.filter(username__iexact=username).exists():
            username = random.randrange(999999999999, 99999999999999)
        user = User.objects.create_user(username=str(username).lower(),
                                        password='******')
        create_update_profile(
            user=user,
            name=request.POST.get('company_name'),
            contact_person=request.POST.get('contact_person_name'),
            contact_person_phone=request.POST.get('contact_person_number'),
            phone=request.POST.get('contact_person_number'),
            alternate_phone=request.POST.get('alternate_number'),
            email=request.POST.get('email_id'),
            remarks=request.POST.get('remarks'))
        Sme.objects.create(
            name=user,
            company_code=request.POST.get('company_code'),
            aaho_office=get_or_none(AahoOffice,
                                    id=request.POST.get('aaho_office')),
            gstin=request.POST.get('gstin', None),
            aaho_poc=get_or_none(Employee,
                                 id=int_or_none(request.POST.get('aaho_poc'))),
            credit_period=request.POST.get('credit_period', None),
            address=create_update_address(
                line1=request.POST.get('company_address'),
                city=get_or_none(City,
                                 id=int_or_none(request.POST.get('city'))),
                pin=request.POST.get('pin')),
            is_gst_applicable='no'
            if request.POST.get('is_gst_applicable') == 'n' else 'yes',
            customer_address=request.POST.get('company_address'),
            city=get_or_none(City, id=int_or_none(request.POST.get('city'))),
            pin=request.POST.get('pin'),
            created_by=request.user)
        return json_success_response('SME Successfully Registered')
Exemplo n.º 6
0
def verify_documents(request):
    accept_choice = request.GET.get('accept_choice')
    s3_upload = get_or_none(S3Upload,
                            id=int_or_none(request.GET.get('s3_upload_id')))
    if accept_choice == 'accept' and isinstance(s3_upload, S3Upload):
        S3Upload.objects.filter(
            id=int_or_none(request.GET.get('s3_upload_id'))).update(
                verified=True, is_valid=True)
    elif accept_choice == 'reject' and isinstance(s3_upload, S3Upload):
        S3Upload.objects.filter(
            id=int_or_none(request.GET.get('s3_upload_id'))).update(
                verified=True, is_valid=False)
    else:
        pass
    return HttpResponseRedirect('/team/unverified-documents/')
Exemplo n.º 7
0
 def get_type_of_vehicle(self, obj):
     type_of_vehicle = get_or_none(VehicleCategory, id=int_or_none(obj.type_of_vehicle_id))
     if not type_of_vehicle:
         vehicle_name = ''
     else:
         vehicle_name = type_of_vehicle.name()
     return vehicle_name
Exemplo n.º 8
0
def track_individual_veh(request):
    device_id = request.GET.get('gps_log_id')
    if not device_id:
        return HttpResponseRedirect('/team/track-vehicles/')
    dtype, did = device_id.split('-', 1)
    did = int_or_none(did)
    if dtype == 'tempogo':
        gps_data = TempoGoGPSDevice.objects.get(id=did)
    elif dtype == 'mahindra':
        gps_data = MahindraGPSDevice.objects.get(id=did)
    elif dtype == 'gpsdevice':
        gps_data = GPSDevice.objects.get(id=did)
    elif dtype == 'tracknovate':
        gps_data = TracknovateGPSDevice.objects.get(id=did)
    elif dtype == 'waytracker':
        gps_data = WaytrackerGPSDevice.objects.get(id=did)
    elif dtype == 'secugps':
        gps_data = SecuGPSDevice.objects.get(id=did)

    else:
        raise Http404

    data = get_gps_data()
    df = pd.DataFrame(data,
                      columns=[
                          'latitude', 'longitude', 'vehicle_number',
                          'vehicle_type', 'driver_name', 'driver_number',
                          'datetime', 'vehicle_status', 'device_id', 'id'
                      ])
    data_json = df.reset_index().to_json(orient='records')
    data_json = json.loads(data_json)
    return render(request, 'team/track/track_individual_vehicle.html', {
        'gps': gps_data,
        'data_json': data_json
    })
Exemplo n.º 9
0
def upload_driver_docs(request):
    token = get_or_none(Token, key=request.POST.get('Authorization'))
    if not isinstance(token, Token):
        return HttpResponseRedirect('/login/')
    try:
        driver_id = int_or_none(request.POST.get('driver', None))
        document_category = request.POST.get('document_category', None)

        if not driver_id:
            return json_error_response('driver_id id not provided', status=400)
        if not document_category:
            return json_error_response('document category id not provided', status=400)

        driver = get_or_none(Driver, id=driver_id)

        if not driver:
            return json_error_response('Driver with id=%s not found' % driver, status=404)

        if not request.FILES:
            return json_error_response('no file to upload', status=400)

        upload_file = request.FILES.get('file')
        driver_files = create_driver_file(driver, document_category, upload_file, token.user)

        return upload_json_response(request, data={'files': [serialize(driver_files)]})
    except UnreadablePostError:
        return HttpResponseRedirect('/upload/upload-driver-document-page/')
Exemplo n.º 10
0
def track_vehicle_data(device_id):
    if not device_id:
        return HttpResponseRedirect('/team/track-vehicles/')
    dtype, did = device_id.split('-', 1)
    did = int_or_none(did)
    if dtype == 'tempogo':
        gps = TempoGoGPSDevice.objects.get(id=did)
    elif dtype == 'mahindra':
        gps = MahindraGPSDevice.objects.get(id=did)
    elif dtype == 'gpsdevice':
        gps = GPSDevice.objects.get(id=did)
    elif dtype == 'tracknovate':
        gps = TracknovateGPSDevice.objects.get(id=did)
    elif dtype == 'waytracker':
        gps = WaytrackerGPSDevice.objects.get(id=did)
    elif dtype == 'secugps':
        gps = SecuGPSDevice.objects.get(id=did)
    else:
        raise Http404
    gps_data = {
        'latitude': gps.latitude,
        'longitude': gps.longitude,
        'vehicle_number': gps.vehicle_number,
        'vehicle_type': gps.vehicle_type,
        'driver_name': gps.driver_name,
        'driver_number': gps.driver_number,
        'location_time': gps.location_time,
        'vehicle_status': gps.vehicle_status,
    }
    return {'gps': gps_data, 'data_json': track_vehicles_data()['data_json']}
Exemplo n.º 11
0
def update_vehicle_page(request):
    vehicle = Vehicle.objects.get(
        id=int_or_none(request.GET.get('vehicle_id', None)))
    owners = [{
        'id': owner.id,
        'name': owner.get_name(),
        'phone': owner.get_phone()
    } for owner in Owner.objects.all()]
    vehicle_categories = [{
        'id': vehicle_category.id,
        'vehicle_type': vehicle_category.vehicle_type,
        'capacity': vehicle_category.capacity
    } for vehicle_category in VehicleCategory.objects.all()]
    body_type_choices = (
        ('open', 'Open'),
        ('closed', 'Closed'),
        ('semi', 'Semi'),
        ('half', 'Half'),
        ('containerized', 'Containerized'),
    )
    gps_enable_choices = (('yes', 'Yes'), ('no', 'No'))
    return render(request=request,
                  template_name='team/registrations/update-vehicle.html',
                  context={
                      'vehicle': vehicle,
                      'owners': owners,
                      'vehicle_categories': vehicle_categories,
                      'body_type_choices': body_type_choices,
                      'gps_enable_choices': gps_enable_choices
                  })
Exemplo n.º 12
0
def update_driver_details(request):
    if Driver.objects.filter(
            phone=request.POST.get('driver_phone_number')).exclude(
                id=int_or_none(request.POST.get('driver_id'))).exists():
        return json_error_response("Phone Already Exists", status=409)
    driver = get_or_none(Driver, id=int_or_none(request.POST.get('driver_id')))
    if driver:
        driver.name = request.POST.get('driver_name')
        driver.phone = request.POST.get('driver_phone_number')
        driver.alt_phone = request.POST.get('driver_alt_phone_number1')
        driver.alt_phone2 = request.POST.get('driver_alt_phone_number2')
        driver.driving_licence_number = request.POST.get('dl_number')
        driver.driving_licence_validity = django_date_format(
            request.POST.get('dl_validity'))
        driver.route = request.POST.get('route')
        driver.save()
    return json_success_response("Updated success")
Exemplo n.º 13
0
def update_vehicle(request):
    vehicle = Vehicle.objects.get(
        id=int_or_none(request.POST.get('vehicle_id')))
    vehicle.owner = get_or_none(Owner,
                                id=int_or_none(
                                    request.POST.get('owner_id', None)))
    vehicle.vehicle_number = compare_format(request.POST.get('vehicle_number'))
    vehicle.rc_number = request.POST.get('rc_number')
    vehicle.permit = request.POST.get('permit_number')
    vehicle.permit_validity = django_date_format(
        request.POST.get('permit_validity'))
    vehicle.permit_type = request.POST.get('permit_type')
    vehicle.vehicle_type = get_or_none(
        VehicleCategory, id=int_or_none(request.POST.get('vehicle_category')))
    vehicle.vehicle_capacity = to_int(
        request.POST.get('exact_vehicle_capacity'))
    vehicle.body_type = request.POST.get('vehicle_body_type')
    vehicle.vehicle_model = request.POST.get('vehicle_model')
    vehicle.chassis_number = request.POST.get('chassis_number')
    vehicle.engine_number = request.POST.get('engine_number')
    vehicle.insurer = request.POST.get('insurer')
    vehicle.insurance_number = request.POST.get('insurance_number')
    vehicle.insurance_validity = django_date_format(
        request.POST.get('insurance_validity'))
    vehicle.registration_year = None if not request.POST.get(
        'registration_year') else django_date_format(
            '01-Jan-' + request.POST.get('registration_year').strip())
    vehicle.registration_validity = django_date_format(
        request.POST.get('registration_validity'))
    vehicle.fitness_certificate_number = request.POST.get(
        'fitness_certificate_number')
    vehicle.fitness_certificate_issued_on = django_date_format(
        request.POST.get('fitness_certificate_issued_on'))
    vehicle.fitness_certificate_validity_date = django_date_format(
        request.POST.get('fitness_certificate_validity'))
    vehicle.puc_certificate_number = request.POST.get('puc_certificate_number')
    vehicle.puc_certificate_issued_on = django_date_format(
        request.POST.get('puc_certificate_issued_on'))
    vehicle.puc_certificate_validity_date = django_date_format(
        request.POST.get('puc_certificate_validity'))
    vehicle.gps_enabled = False if request.POST.get(
        'gps_enable') == 'no' else True
    vehicle.changed_by = request.user
    vehicle.save()
    return json_success_response("success")
Exemplo n.º 14
0
def update_customer_page(request):
    customer = get_or_none(Sme, id=int_or_none(request.GET.get('customer_id')))
    employees = Employee.objects.exclude(status='inactive')
    return render(request=request,
                  template_name='team/registrations/customer-update.html',
                  context={
                      'customer': customer,
                      'employees': employees
                  })
Exemplo n.º 15
0
def vehicle_trip_data(request):
    data = request.data
    vehicle_id = int_or_none(data.get('vehicleId', None))
    if vehicle_id:
        vehicle = get_or_none(Vehicle, id=vehicle_id)
        if not vehicle:
            return json_error_response(
                'Vehicle with id=%s does not exist' % vehicle_id, 404)
        else:
            broker_vehicle_ids = BrokerVehicle.objects.filter(
                vehicle=vehicle).values_list('vehicle_id', flat=True)
            allocated_vehicles_data = VehicleAllocated.objects.filter(
                vehicle_number_id__in=broker_vehicle_ids).values(
                    'transaction_id', 'total_out_ward_amount',
                    'total_amount_to_owner', 'transaction__shipment_datetime',
                    'source_city', 'destination_city', 'transaction_id',
                    'material', 'transaction__total_vehicle_requested',
                    'transaction__transaction_status',
                    'transaction__transaction_id',
                    'vehicle_number__vehicle_number', 'lr_number')
            transaction_data = [{
                'id':
                v['transaction_id'],
                'transaction_id':
                v['transaction__transaction_id'],
                'status':
                v['transaction__transaction_status'],
                'source_city':
                v['source_city'],
                'destination_city':
                v['destination_city'],
                'paid':
                str(int(v['total_out_ward_amount'])),
                'amount':
                str(int(v['total_amount_to_owner'])),
                'balance':
                str(
                    int(v['total_amount_to_owner'] -
                        v['total_out_ward_amount'])),
                'total_vehicle_requested':
                v['transaction__total_vehicle_requested'],
                'vehicle_number':
                display_format(v['vehicle_number__vehicle_number']),
                'lr_number':
                v['lr_number'],
                'shipment_date':
                v['transaction__shipment_datetime'].strftime('%d-%b-%Y')
            } for v in allocated_vehicles_data]
            return json_response({
                'status': 'success',
                'data': transaction_data
            })
    else:
        vehicle = Vehicle()
Exemplo n.º 16
0
def update_customer(request):
    sme = get_or_none(Sme, id=int_or_none(request.POST.get('customer_id')))
    # phone_status, msg = verify_profile_phone(username=sme.name.username,
    #                                          phone=request.POST.get('contact_person_number'),
    #                                          alt_phone=request.POST.get('alternate_number'))
    # if phone_status:
    #     return json_error_response(msg=msg, status=409)

    create_update_profile(
        user=sme.name,
        name=request.POST.get('company_name'),
        contact_person=request.POST.get('contact_person_name'),
        contact_person_phone=request.POST.get('contact_person_number'),
        phone=request.POST.get('contact_person_number'),
        alternate_phone=request.POST.get('alternate_number'),
        email=request.POST.get('email_id'),
        remarks=request.POST.get('remarks'))

    create_update_address(address_id=sme.address_id,
                          line1=request.POST.get('company_address'),
                          city=get_or_none(City,
                                           id=int_or_none(
                                               request.POST.get('city'))),
                          pin=request.POST.get('pin'))
    sme.customer_address = request.POST.get('company_address')
    sme.aaho_office = get_or_none(AahoOffice,
                                  id=request.POST.get('aaho_office'))
    sme.city = get_or_none(City, id=int_or_none(request.POST.get('city')))
    sme.pin = request.POST.get('pin')
    sme.gstin = sme.gstin if not request.POST.get(
        'gstin') else request.POST.get('gstin')
    sme.is_gst_applicable = request.POST.get('is_gst_applicable')
    sme.aaho_poc = get_or_none(Employee,
                               id=int_or_none(request.POST.get('aaho_poc')))
    sme.credit_period = request.POST.get('credit_period', None)
    sme.save()
    return json_success_response(msg="success")
Exemplo n.º 17
0
def register_supplier(request):
    if request.POST.get('email_id') and Profile.objects.filter(
            email__iexact=request.POST.get('email_id')).exists():
        return json_error_response('Email ID Already Exists', status=409)
    elif Profile.objects.filter(
            name__iexact=request.POST.get('supplier_name')).exists():
        return json_error_response('Supplier Already Registered', status=409)
    elif Profile.objects.filter(
            phone=request.POST.get('contact_person_number')).exists():
        return json_error_response('Phone Already Exists', status=409)
    elif request.POST.get('pan') and TaxationID.objects.filter(
            pan__iexact=request.POST.get('pan')).exists():
        return json_error_response('PAN Already Exists', status=409)
    else:
        username = "".join(
            re.split("[^a-zA-Z]*", request.POST.get('supplier_name')))[:12]
        if User.objects.filter(username__iexact=username).exists():
            username = random.randrange(999999999999, 99999999999999)
        user = User.objects.create_user(username=str(username).lower(),
                                        password='******')
        create_update_profile(
            user=user,
            name=request.POST.get('supplier_name'),
            contact_person=request.POST.get('contact_person_name'),
            contact_person_phone=request.POST.get('contact_person_number'),
            phone=request.POST.get('contact_person_number'),
            alternate_phone=request.POST.get('alternate_number'),
            email=request.POST.get('email_id'),
            remarks=request.POST.get('remarks'))
        instance = Broker.objects.create(
            name=user,
            city=get_or_none(City,
                             id=int_or_none(
                                 request.POST.get('supplier_city'))),
            route=request.POST.get('route'),
            taxation_details=None if not request.POST.get('pan') else
            TaxationID.objects.create(pan=request.POST.get('pan')),
            aaho_office=get_or_none(AahoOffice,
                                    id=request.POST.get('aaho_office')))
        dest_states = request.POST.getlist('destination_states[]')
        if dest_states:
            if 'select_all' in dest_states:
                dest_states = State.objects.values_list('id', flat=True)
            for dest_state in dest_states:
                instance.destination_state.add(dest_state)
        return json_success_response('Supplier Successfully Registered')
Exemplo n.º 18
0
def update_owner_page(request):
    owner = get_or_none(Owner, id=int_or_none(request.GET.get('owner_id')))
    vehicles = [{
        'id': vehicle.id,
        'vehicle_number': display_format(vehicle.vehicle_number)
    } for vehicle in Vehicle.objects.filter(owner=None)]
    owner_vehicles = [{
        'id': vehicle.id,
        'vehicle_number': display_format(vehicle.vehicle_number)
    } for vehicle in Vehicle.objects.filter(owner=owner)]

    return render(
        request=request,
        template_name='team/registrations/owner-update.html',
        context={
            'owner': owner,
            'vehicles': vehicles,
            'owner_vehicles': owner_vehicles,
        },
    )
Exemplo n.º 19
0
def upload_cheque_docs(request):
    token = get_or_none(Token, key=request.POST.get('Authorization'))
    if not isinstance(token, Token):
        return HttpResponseRedirect('/login/')
    try:
        customer_name = request.POST.get('customer_name', None)
        amount = int_or_none(request.POST.get('amount', None))
        cheque_number = request.POST.get('cheque_number', None)
        remarks = request.POST.get('remarks', None)
        cheque_date = request.POST.get('cheque_date', None)

        if not customer_name:
            return json_error_response('customer_name id not provided', status=400)

        if not amount:
            return json_error_response('amount id not provided', status=400)

        if not cheque_date:
            return json_error_response('Cheque Date not provided', status=400)

        if not (cheque_number and len(cheque_number) == 6):
            return json_error_response('cheque_number id not provided', status=400)

        if ChequeFile.objects.filter(cheque_number__iexact=cheque_number,
                                     cheque_date=django_date_format(cheque_date)):
            return json_error_response('Cheque Number is not unique', status=400)

        if not request.FILES:
            return json_error_response('no file to upload', status=400)

        upload_file = request.FILES.get('file')
        cheque_files = create_cheque_file(customer_name=customer_name, amount=amount, cheque_number=cheque_number,
                                          remarks=remarks, upload_file=upload_file, user=token.user,
                                          cheque_date=django_date_format(cheque_date))

        return upload_json_response(request, data={'files': [serialize(cheque_files)]})
    except UnreadablePostError:
        return HttpResponseRedirect('/upload/upload-cheque-document-page/')
Exemplo n.º 20
0
def upload_weighing_slip_docs(request):
    token = get_or_none(Token, key=request.POST.get('Authorization'))
    if not isinstance(token, Token):
        return HttpResponseRedirect('/login/')
    try:
        mb_id = int_or_none(request.POST.get('mb_id', None))

        if not mb_id:
            return json_error_response('mb_id id not provided', status=400)

        booking = get_or_none(ManualBooking, id=mb_id)

        if not isinstance(booking, ManualBooking):
            return json_error_response('Manual Booking with id=%s not found' % mb_id, status=404)

        if not request.FILES:
            return json_error_response('no file to upload', status=400)

        upload_file = request.FILES.get('file')
        weighing_slip_files = create_weighing_slip_file(booking, upload_file, token.user)

        return upload_json_response(request, data={'files': [serialize(weighing_slip_files)]})
    except UnreadablePostError:
        return HttpResponseRedirect('/upload/upload-vehicle-document-page/')
Exemplo n.º 21
0
def update_booking_field(data):
    booking = get_or_none(ManualBooking, id=data['booking_id'])
    booking.customer_to_be_billed_to = get_or_none(Sme, id=int_or_none(data['to_be_billed_to']))
    booking.save()
Exemplo n.º 22
0
 def get_aaho_office(self, obj):
     aaho_office = get_or_none(AahoOffice, id=int_or_none(obj.aaho_office_id))
     if not aaho_office:
         raise serializers.ValidationError("AahoOffice Does Not Exist")
     return aaho_office.branch_name
Exemplo n.º 23
0
 def get_to_city(self, obj):
     city = get_or_none(City, id=int_or_none(obj.to_city_id))
     if not city:
         raise serializers.ValidationError("To City Does Not Exist")
     return city.name
Exemplo n.º 24
0
 def get_to_state(self, obj):
     city = get_or_none(City, id=int_or_none(obj.to_city_id))
     if not city:
         raise serializers.ValidationError("To City Does Not Exist")
     else:
         return city.state.name if city and city.state else ''
Exemplo n.º 25
0
def parse_requirement_fields(load):
    user = load.user
    data = load.data
    form = RequirementForm(data)
    if not form.is_valid():
        return {'status': 'failure', 'msg': 'Pls enter all * fields'}
    from_shipment_date = data.get('from_shipment_date', None)
    to_shipment_date = data.get('to_shipment_date', None)
    # print(to_shipment_date)
    try:
        present = datetime.datetime.now()
        from_dt = datetime.datetime.strptime(from_shipment_date, '%Y-%m-%d')
        if from_dt.date() < present.date():
            return {
                'status': 'failure',
                'msg': 'From Date should be greater than or equal to Today'
            }
        if to_shipment_date:
            to_date = datetime.datetime.strptime(to_shipment_date, '%Y-%m-%d')
            if to_date < from_dt:
                return {
                    'status': 'failure',
                    'msg': 'To Date should be greater than From Date'
                }
            if to_date.date() < present.date():
                return {
                    'status': 'failure',
                    'msg': 'To Date should be greater than or equal to Today'
                }
        else:
            to_shipment_date = None
    except ValueError:
        return {
            'status': 'failure',
            'msg': 'Incorrect date format, should be YYYY-MM-DD'
        }

    tonnage = data.get('tonnage', None)
    no_of_vehicles = data.get('no_of_vehicles', None)
    material = data.get('material', None)
    rate = data.get('rate', None)

    if not tonnage and not no_of_vehicles:
        return {
            'status': 'failure',
            'msg': 'Enter Either Tonnage or No of Vehicles'
        }

    if data.get('from_city_id', None) == data.get('to_city_id', None):
        return {
            'status': 'failure',
            'msg': 'From City and To City should be different'
        }

    client = get_or_none(Sme, id=int_or_none(data.get('client_id')))
    if not isinstance(client, Sme):
        return {'status': 'failure', 'msg': 'Incorrect client '}
    from_city = get_or_none(City, id=data.get('from_city_id', None))
    if not isinstance(from_city, City):
        return {'status': 'failure', 'msg': 'Incorrect from city '}
    to_city = get_or_none(City, id=data.get('to_city_id', None))
    if not isinstance(to_city, City):
        return {'status': 'failure', 'msg': 'Incorrect to city '}
    type_of_vehicle = get_or_none(VehicleCategory,
                                  id=int_or_none(data.get('vehicle_type_id')))
    aaho_office = get_or_none(AahoOffice, id=data.get('aaho_office_id', None))
    if not isinstance(aaho_office, AahoOffice):
        return {'status': 'failure', 'msg': 'Incorrect Aaho Office'}
    created_by = User.objects.get(username=user.username)
    if tonnage and not no_of_vehicles:
        no_of_vehicles = None
    if no_of_vehicles and not tonnage:
        tonnage = None
    if not rate:
        rate = None
    if not type_of_vehicle:
        type_of_vehicle = None
    else:
        if not isinstance(type_of_vehicle, VehicleCategory):
            return {'status': 'failure', 'msg': 'Incorrect vehicle type'}

    req_status = data.get('req_status', None)
    if req_status not in [x[0] for x in REQ_STATUS]:
        return {'status': 'failure', 'msg': 'Requirement status is wrong'}

    remark = data.get('remark', None)
    if not remark:
        remark = None

    cancel_reason = data.get('cancel_reason', None)
    if not cancel_reason:
        cancel_reason = None

    objects = {
        'status': 'success',
        'client': client,
        'from_shipment_date': from_shipment_date,
        'to_shipment_date': to_shipment_date,
        'from_city': from_city,
        'to_city': to_city,
        'aaho_office': aaho_office,
        'tonnage': tonnage,
        'no_of_vehicles': no_of_vehicles,
        'material': material,
        'type_of_vehicle': type_of_vehicle,
        'rate': rate,
        'created_by': created_by,
        'req_status': req_status,
        'remark': remark,
        'cancel_reason': cancel_reason
    }
    return objects
Exemplo n.º 26
0
 def test_int_or_none_success(self):
     self.assertEqual(int_or_none("000"), 0)
     self.assertEqual(int_or_none("21"), 21)
Exemplo n.º 27
0
def update_owner(request):
    if request.POST.get('owner_name') in Owner.objects.exclude(
            name__profile__name=request.POST.get('owner_name')).values_list(
                'name__profile__name', flat=True):
        return json_error_response(msg='Owner {} already exists'.format(
            request.POST.get('owner_name')),
                                   status=409)
    owner = get_or_none(Owner, id=int_or_none(request.POST.get('owner_id')))
    if owner:
        profile = Profile.objects.get(user=owner.name)
        profile.name = request.POST.get('owner_name')
        profile.phone = request.POST.get('owner_phone')
        profile.alternate_phone = request.POST.get('alternate_number')
        profile.contact_person_name = request.POST.get('contact_person_name')
        profile.contact_person_phone = request.POST.get('contact_person_phone')
        profile.comment = request.POST.get('remarks')
        profile.save()
        if not owner.address:
            owner.address = Address.objects.create(
                line1=request.POST.get('owner_address'),
                city=get_or_none(City,
                                 id=int_or_none(request.POST.get('city'))),
                pin=request.POST.get('pin'))
        else:
            address = Address.objects.get(id=owner.address.id)
            address.line1 = request.POST.get('owner_address')
            address.city = get_or_none(City, id=request.POST.get('city'))
            address.pin = request.POST.get('pin')
            address.save()
        owner.temp_address = request.POST.get('owner_address')
        owner.route_temp = request.POST.get('route')
        owner.pan = request.POST.get('pan')
        owner.save()
    broker = get_or_none(Broker, name=owner.name)
    if broker:
        if broker.address:
            broker.address = Address.objects.create(
                line1=request.POST.get('owner_address'),
                city=get_or_none(City,
                                 id=int_or_none(request.POST.get('city'))),
                pin=request.POST.get('pin'))
        else:
            address = get_or_none(
                Address, id=None if not broker.address else broker.address.id)
            if address:
                address.line1 = request.POST.get('owner_address')
                address.city = get_or_none(City,
                                           id=int_or_none(
                                               request.POST.get('city')))
                address.pin = request.POST.get('pin')
                address.save()
        broker.pan = request.POST.get('pan')
        broker.route = request.POST.get('route')
        broker.city = get_or_none(City,
                                  id=int_or_none(request.POST.get(
                                      'city', None)))
        broker.save()
    else:
        Broker.objects.create(
            name=None if not owner.name else owner.name,
            address=owner.address,
            pan=owner.pan,
            city=get_or_none(City,
                             id=int_or_none(request.POST.get('city', None))),
            route=request.POST.get('route'))

    for vehicle in Vehicle.objects.filter(
            id__in=request.POST.getlist('vehicle_id[]')):
        vehicle.owner = owner
        vehicle.save()
        broker = Broker.objects.get(name=owner.name)
        try:
            BrokerVehicle.objects.create(broker=broker, vehicle=vehicle)
        except IntegrityError:
            pass
    return json_success_response(msg="success")
Exemplo n.º 28
0
def update_driver_page(request):
    driver = get_or_none(Driver, id=int_or_none(request.GET.get('driver_id')))
    return render(request=request,
                  template_name='team/registrations/driver-update.html',
                  context={'driver': driver})
Exemplo n.º 29
0
 def test_int_or_none_failure(self):
     self.assertFalse(int_or_none("0.00"))
     self.assertFalse(int_or_none(""))
     self.assertFalse(int_or_none("12.3a"))
Exemplo n.º 30
0
def update_supplier_page(request):
    supplier = get_or_none(Broker,
                           id=int_or_none(request.GET.get('supplier_id')))
    return render(request=request,
                  template_name='team/registrations/update-supplier.html',
                  context={'supplier': supplier})