Beispiel #1
0
def app_version_add(request):
    form = MobileAppVersionsForm(request.data)
    if not form.is_valid():
        return {'status': 'failure', 'msg': 'Pls enter all * fields'}
    app_platform = request.data.get('app_platform')
    app_name = request.data.get('app_name')
    app_version = request.data.get('app_version')
    comment = request.data.get('comment')

    objects = {
        'app_platform': app_platform,
        'app_name': app_name,
        'app_version': app_version,
        'comment': comment
    }
    try:
        MobileAppVersions.objects.create(**objects)
    except IntegrityError:
        return json_response({
            'status': 'failure',
            'msg': 'MobileAppVersions could not be created'
        })

    return json_response({
        'status': 'success',
        'msg': 'MobileAppVersions successfully submitted'
    })
Beispiel #2
0
def do_delete_vendor(request):
    vendor_id = request.data.get('id', None)
    if vendor_id is None:
        return json_400_incorrect_use()
    try:
        vendor = UserVendor.objects.get(id=vendor_id)
    except UserVendor.DoesNotExist:
        return json_400_incorrect_use()

    if not vendor.user == request.user:
        return json_response(
            {
                'status': 'error',
                'msg': 'user does not own the object'
            },
            status=403)

    UserVendor.objects.filter(id=vendor_id).delete()

    vendor_data = list(
        UserVendor.objects.filter(user=request.user).order_by('id').values(
            'id', 'name', 'phone'))
    return json_response({
        'status': 'success',
        'msg': 'vendor added',
        'vendors': vendor_data
    })
Beispiel #3
0
def register(request):
    data = request.data
    device_id = data.get('device_id', None)
    if not device_id:
        return json_response(
            {
                'status': 'error',
                'msg': 'cannot register without device id'
            },
            status=400)

    driver_name = data.get('driver_name', None)
    driver_number = data.get('driver_number', None)
    vehicle_number = data.get('vehicle_number', None)
    vehicle_type = data.get('vehicle_type', None)

    driver_number = None if not driver_number else driver_number.strip()

    created = False
    try:
        driver_app_user = DriverAppUser.objects.get(device_id=device_id)
    except DriverAppUser.DoesNotExist:
        driver_app_user = DriverAppUser(device_id=device_id)
        created = True

    if driver_number and driver_number != driver_app_user.driver_number:
        driver_app_user.number_verified = False
    driver = get_or_none(Driver, phone=driver_number)

    driver_app_user.driver_name = driver_name
    driver_app_user.driver_number = driver_number
    driver_app_user.vehicle_number = vehicle_number
    driver_app_user.vehicle_type = vehicle_type
    driver_app_user.driver = driver
    driver_app_user.save()

    vehicle = set_vehicle_driverapp_user(driver_app_user)
    data = {
        'imei': data.get('device_id', None),
        'device_id': data.get('device_id', None),
        'driver_name': driver_name,
        'driver_number': driver_number,
        'vehicle_number': vehicle_number,
        'vehicle': vehicle.id if isinstance(vehicle, Vehicle) else None,
        'driver': driver.id if isinstance(driver, Driver) else None,
        'vehicle_type': vehicle_type,
        'device_provider': 7
    }
    gps_device_serializer = GPSDeviceSerializer(data=data)
    if gps_device_serializer.is_valid():
        gps_device_serializer.save()
    print(gps_device_serializer.errors)
    data = merge(
        {
            'status': 'success',
            'msg': 'registered' if created else 'registration updated',
            'auth_token': driver_app_user.auth_token,
        }, driver_app_data(driver_app_user))

    return json_response(data)
Beispiel #4
0
def change_password(request):
    current_password = request.data.get('current_password', None)
    new_password = request.data.get('new_password', None)

    if not current_password or not new_password:
        return json_400_incorrect_use()

    if not request.user.check_password(current_password):
        return json_response({
            'status': 'error',
            'msg': 'incorrect password'
        },
                             status=403)

    if len(new_password) < 8:
        return json_response(
            {
                'status': 'error',
                'msg': 'password should be minimum 8 characters long'
            },
            status=400)

    request.user.set_password(new_password)
    request.user.save()
    return json_response({'status': 'success', 'msg': 'password changed'})
Beispiel #5
0
def api_logout(request):
    if request.user and request.user.is_authenticated:
        logout(request)
        return json_response({'status': 'success', 'msg': 'logout successful'})
    else:
        return json_response({
            'status': 'success',
            'msg': 'already logged out'
        })
Beispiel #6
0
def create_notification_device(request):
    # data = json.loads(request.body)
    # token = data['token']
    # device_id = data['device_id']
    token = request.data.get('token')
    device_id = request.data.get('device_id')
    app = request.data.get('app')

    if not token:
        return json_response({
            'status': 'failure',
            'msg': 'Pls enter all * fields'
        })
    if not device_id:
        return json_response({
            'status': 'failure',
            'msg': 'Pls enter all * fields'
        })
    if not app:
        return json_response({
            'status': 'failure',
            'msg': 'Pls enter all * fields'
        })
    # form = MobileDeviceForm(request.data)
    # if not form.is_valid():
    #     return json_response({'status': 'failure', 'msg': 'Pls enter all * fields'})
    try:
        if not MobileDevice.objects.filter(device_id=device_id,
                                           user=request.user).exists():
            print('creating mobile device entry')
            MobileDevice.objects.create(user=request.user,
                                        app=app,
                                        active=True,
                                        token=token,
                                        device_id=device_id,
                                        changed_by=request.user)
        else:
            print('updating mobile device entry')
            MobileDevice.objects.filter(device_id=device_id,
                                        user=request.user).update(
                                            # user=request.user,
                                            token=token,
                                            changed_by=request.user,
                                            updated_on=datetime.datetime.now())
        return json_response({
            'status': 'success',
            'msg': 'Token Successfully saved'
        })

    except IntegrityError:
        return json_response({
            'status': 'failure',
            'msg': 'Token could not be saved'
        })
Beispiel #7
0
def get_all_app_versions(request):
    appversions = MobileAppVersions.objects.all().exclude(deleted=True)
    if not appversions:
        return json_response({
            'status': 'failure',
            'msg': 'No app versions found',
            'data': {}
        })
    return json_response({
        'status': 'success',
        'msg': 'app version data',
        'data': get_appversion_data(appversions)
    })
Beispiel #8
0
def get_all_mobile_devices(request):
    mobiledevices = MobileDevice.objects.all().exclude(deleted=True)
    if not mobiledevices:
        return json_response({
            'status': 'failure',
            'msg': 'No devices found',
            'data': {}
        })
    return json_response({
        'status': 'success',
        'msg': 'mobile device data',
        'data': get_mobiledevice_data(mobiledevices)
    })
Beispiel #9
0
def get_all_requirements(request):
    requirements = Requirement.objects.all().exclude(deleted=True)
    if not requirements:
        return json_response({
            'status': 'failure',
            'msg': 'No requirements found',
            'data': {}
        })
    return json_response({
        'status': 'success',
        'msg': 'requirements data',
        'data': get_requirement_data(requirements)
    })
Beispiel #10
0
def do_booking_vendor_request(request):
    user = request.user
    data = request.data

    transaction_id = data.get('booking_id', None)
    vendor_data = data.get('vendors', None)

    if transaction_id is None or not vendor_data:
        return json_400_incorrect_use()

    try:
        transaction = Transaction.objects.get(id=transaction_id)
    except Transaction.DoesNotExist:
        return json_error_response(
            'no such transaction exits, id=' + transaction_id, 400)

    vendors = []
    for ven in vendor_data:
        try:
            vendors.append(UserVendor.objects.get(user=user, id=ven['id']))
        except UserVendor.DoesNotExist:
            return json_error_response('no such vendor exits, id=' + ven['id'],
                                       400)

    TransactionVendorRequest.objects.bulk_create([
        TransactionVendorRequest(transaction=transaction, user=user, vendor=v)
        for v in vendors
    ])

    send_vendor_request_sms()

    return json_response({
        'status': 'success',
        'msg': 'requests successfully sent to vendors'
    })
Beispiel #11
0
def delete_requirement(request):
    form = RequirementGetForm(request.data)
    if not form.is_valid():
        return json_response({'status': 'failure', 'msg': 'Incorrect values'})
    requirement = get_or_none(Requirement,
                              id=request.data.get('requirement_id'))
    if not requirement or requirement.deleted:
        return json_response({
            'status': 'failure',
            'msg': 'Requirement not found',
            'data': {}
        })
    requirement.deleted = True
    requirement.deleted_on = timezone.now()
    requirement.save(update_fields=['deleted', 'deleted_on'])
    return json_response({'status': 'success', 'msg': 'requirement deleted'})
Beispiel #12
0
def update_pod(request):
    driver = request.driverapp_user

    can_upload_pod, reason, alloc_vehicle = get_can_upload_pod(driver)

    if not can_upload_pod:
        return json_error_response(reason, 400)

    if not driver.vehicle_status == 'unloaded':
        return json_error_response(
            'Switch the status to unloaded before uploading POD', 400)

    data = request.data

    pod = data.get('pod', None)
    pod_thumb = data.get('pod_thumb', None)

    if not pod or not pod_thumb:
        return json_error_response('pod file not sent', 400)

    if alloc_vehicle.pod == pod:
        return json_success_response('nothing to update')

    alloc_vehicle.pod = pod
    alloc_vehicle.pod_thumb = pod_thumb
    alloc_vehicle.pod_date = timezone.now()

    alloc_vehicle.save()

    return json_response({
        'status': 'success',
        'msg': 'pod updated',
        'pod_details': alloc_vehicle.pod_details()
    })
Beispiel #13
0
def team_customer_booking_data(request):
    print(request.data)
    customer = Sme.objects.get(name=request.user)
    # broker = Broker.objects.get(name=User.objects.get(username=request.user.username))
    bookings = ManualBooking.objects.filter(company=customer,
                                            shipment_date__gte=datetime(2017, 12, 1).date()).exclude(
        booking_status__icontains='cancelled').order_by('-shipment_date')
    return json_response({'status': 'success', 'data': supplier_booking_data(bookings=bookings)})
Beispiel #14
0
def get_requirement(request):
    form = RequirementGetForm(request.data)
    if not form.is_valid():
        return json_response({'status': 'failure', 'msg': 'Incorrect values'})
    req = Requirement.objects.filter(
        id=request.data.get('requirement_id')).exclude(deleted=True)
    if not req:
        return json_response({
            'status': 'failure',
            'msg': 'Requirement not found',
            'data': {}
        })
    return json_response({
        'status': 'success',
        'msg': 'requirement data',
        'data': get_requirement_data(req)
    })
Beispiel #15
0
def add_new_requirement(request):
    objects = parse_requirement_fields(request)
    if objects['status'] == 'failure':
        return json_response({'status': 'failure', 'msg': objects['msg']})
    objects.pop('status', None)
    try:
        Requirement.objects.create(**objects)
    except IntegrityError:
        return json_response({
            'status': 'failure',
            'msg': 'Requirement could not be created'
        })

    return json_response({
        'status': 'success',
        'msg': 'Requirement successfully submitted'
    })
Beispiel #16
0
def update_requirement(request):
    if not request.data.get('requirement_id'):
        return json_response({
            'status': 'failure',
            'msg': 'Requirement Id is not passed'
        })
    requirement = get_or_none(Requirement,
                              id=request.data.get('requirement_id'))
    if not requirement or requirement.deleted:
        return json_response({
            'status': 'failure',
            'msg': 'Requirement not found',
            'data': {}
        })
    objects = parse_requirement_fields(request)
    if objects['status'] == 'failure':
        return json_response({'status': 'failure', 'msg': objects['msg']})

    requirement.client = objects['client']
    requirement.aaho_office = objects['aaho_office']
    requirement.from_shipment_date = objects['from_shipment_date']
    requirement.to_shipment_date = objects['to_shipment_date']
    requirement.from_city = objects['from_city']
    requirement.to_city = objects['to_city']
    requirement.tonnage = objects['tonnage']
    requirement.no_of_vehicles = objects['no_of_vehicles']
    requirement.material = objects['material']
    requirement.type_of_vehicle = objects['type_of_vehicle']
    requirement.rate = objects['rate']
    requirement.remark = objects['remark']
    requirement.cancel_reason = objects['cancel_reason']
    requirement.changed_by = User.objects.get(username=request.user.username)

    # print(request.data.get('req_status'))
    if requirement.req_status and request.data.get('req_status') == 'open':
        requirement.req_status = objects['req_status']
        requirement.save(update_fields=[
            'req_status', 'material', 'client', 'aaho_office',
            'from_shipment_date', 'to_shipment_date', 'from_city', 'to_city',
            'tonnage', 'no_of_vehicles', 'material', 'type_of_vehicle', 'rate',
            'remark', 'cancel_reason', 'changed_by'
        ])
    else:
        requirement.req_status = objects['req_status']
        requirement.save()
    return json_response({'status': 'success', 'msg': 'requirement updated'})
Beispiel #17
0
def do_booking_save(request):
    user = request.user
    data = request.data

    pickup_data = data.get('pickups', None)
    drop_data = data.get('drops', None)
    vehicle_data = data.get('vehicles', None)
    contact_person = data.get('contact_person', None)
    contact_number = data.get('contact_number', None)
    shipment_datetime = data.get('shipment_datetime', None)
    material = data.get('material', None)
    rate = data.get('rate', None)

    if not (pickup_data and drop_data and vehicle_data and contact_number
            and contact_person and shipment_datetime):
        return json_error_response('insufficient data to process booking', 400)

    trans = create_new_transaction(user, contact_person, contact_number,
                                   shipment_datetime, material, rate)

    for p in pickup_data:
        create_stop_point('loading', trans, p['address'], p['city']['id'])

    for d in drop_data:
        create_stop_point('unloading', trans, d['address'], d['city']['id'])

    for vehicle in vehicle_data:
        if 'id' in vehicle:
            v_cat = VehicleCategory.objects.get(id=vehicle['id'])
            VehicleRequest.objects.create(transaction=trans,
                                          vehicle_category=v_cat,
                                          vehicle_type=v_cat.vehicle_type,
                                          vehicle_capacity=v_cat.capacity,
                                          quantity=vehicle['count'])
        else:
            VehicleRequest.objects.create(transaction=trans,
                                          vehicle_type=vehicle['name'],
                                          vehicle_capacity=vehicle['capacity'],
                                          quantity=vehicle['count'])

    send_booking_email(user, pickup_data, drop_data, contact_number,
                       shipment_datetime, material)
    send_booking_sms(user, pickup_data, drop_data, contact_number,
                     shipment_datetime)

    city_scores, address_scores = get_ranking_results(request.user.id)
    vendor_data = list(
        UserVendor.objects.filter(user=request.user).values(
            'id', 'name', 'phone'))

    return json_response({
        'status': 'success',
        'msg': 'booked',
        'booking_id': trans.id,
        'city_scores': city_scores,
        'address_scores': address_scores,
        'vendors': vendor_data
    })
Beispiel #18
0
def trip_details(request, booking_id):
    booking = ManualBooking.objects.get(id=booking_id)
    data = {}
    data.update({'status': 'success'})
    data.update(
        {
            'basic_details': {
                'lr_number': '\n'.join(booking.lr_numbers.values_list('lr_number', flat=True)),
                'source_city': booking.from_city,
                'destination_city': booking.to_city,
                'shipment_date': None if not booking.shipment_date else booking.shipment_date.strftime('%d-%b-%Y'),
                'vehicle_number': booking.lorry_number,
                'weight': float(booking.supplier_charged_weight),
                'rate': float(booking.supplier_rate),
                'bill_number': 'OPB-{}'.format(
                    ''.join(booking.outward_payment_bill.values_list('bill_number', flat=True))),
                'pod_docs': [
                    {'url': pod.s3_url, 'thumb_url': pod.s3_thumb_url} for pod in booking.podfile_set.all()
                ]
            }
        }
    )
    data.update(
        {
            'rates': {
                'weight': float(booking.supplier_charged_weight),
                'rate': float(booking.supplier_rate),
                'freight': int(float(booking.supplier_charged_weight) * float(booking.supplier_rate)),
                'loading': booking.loading_charge,
                'unloading': booking.unloading_charge,
                'detention': booking.detention_charge,
                'additional': booking.additional_charges_for_company,
                'commission': booking.commission,
                'lr_charge': booking.lr_cost,
                'deduction_for_advance': booking.deduction_for_advance,
                'deduction_for_balance': booking.deduction_for_balance,
                'other_deduction': booking.other_deduction,
                'total_amount_to_owner': int(booking.total_amount_to_owner),
                'total_out_ward_amount': int(booking.total_out_ward_amount),
            }
        }
    )
    data.update(
        {
            'payments': [
                {
                    'amount': float(payment.actual_amount),
                    'paid_to': payment.paid_to,
                    'remarks': payment.remarks,
                    'payment_mode': payment.get_payment_mode_display(),
                    'account_number': None if not payment.bank_account else payment.bank_account.account_number,
                    'fuel_card': None if not payment.fuel_card else payment.fuel_card.card_number,
                    'date': None if not payment.payment_date else payment.payment_date.strftime('%d-%b-%Y')
                } for payment in booking.outward_booking.all().exclude(is_refund_amount=True)
            ]
        }
    )
    return json_response(data=data)
Beispiel #19
0
def get_pod_details(request):
    driver = request.driverapp_user

    data = merge({
        'status': 'success',
        'msg': 'pod details',
    }, driver_app_data(driver))

    return json_response(data)
Beispiel #20
0
def complete_trip_details(request):
    data = request.data
    return json_response({
        'basic_details':
        get_basic_transaction_data(data.get("trans_id")),
        'vehicle_info':
        get_vehicle_data(data.get('trans_id')),
        'payment_info':
        get_payment_data(data.get('trans_id'))
    })
Beispiel #21
0
def get_filtered_requirements(request):
    # user = request.user
    aaho_office_id = request.GET.get('aaho_office_id', None)
    req_status = request.GET.get('requirement_status', None)
    q_objects = Q()
    if not aaho_office_id:
        return json_response({
            'status': 'failure',
            'msg': 'Aaho Office ID is not passed'
        })

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

    aaho_office = get_or_none(AahoOffice, id=aaho_office_id)
    q_objects |= Q(**{'aaho_office': aaho_office, 'req_status': req_status})

    present = datetime.datetime.now()
    requirements = Requirement.objects.filter(q_objects).exclude(deleted=True)
    requirements_with_todate = requirements.filter(
        to_shipment_date__isnull=False,
        from_shipment_date__lte=(present.date() + timedelta(days=3)),
        to_shipment_date__gte=present.date())
    requirements_without_todate = requirements.filter(
        to_shipment_date__isnull=True,
        from_shipment_date__range=(present.date(),
                                   (present.date() + timedelta(days=3))))
    requirements = requirements_with_todate.union(requirements_without_todate)
    if not requirements:
        return json_response({
            'status': 'failure',
            'msg': 'No requirements found',
            'data': {}
        })
    return json_response({
        'status': 'success',
        'msg': 'requirements data',
        'data': get_requirement_data(requirements)
    })
Beispiel #22
0
def login_status(request):
    if request.user and request.user.is_authenticated:
        if request.user.is_active:
            return json_response({
                'status': 'success',
                'state': 'logged_in',
                'msg': 'user logged in and active'
            })
        else:
            return json_response({
                'status': 'success',
                'state': 'inactive',
                'msg': 'user logged in but inactive'
            })
    else:
        return json_response({
            'status': 'success',
            'state': 'logged_out',
            'msg': 'user logged out'
        })
Beispiel #23
0
def app_data(request):
    cities = City.objects.filter(
        state_id__isnull=False).order_by('name').values(
            'id', 'name', 'state__name')
    cities = [{
        'id': c['id'],
        'name': c['name'],
        'state': c['state__name']
    } for c in cities]
    vehicle_data = list(
        VehicleCategory.objects.order_by('-priority').values(
            'id', 'vehicle_type', 'capacity'))
    vendor_data = list(
        UserVendor.objects.filter(user=request.user).order_by('id').values(
            'id', 'name', 'phone'))

    customer_id = ''
    aaho_office_id = ''
    try:
        sme = Sme.objects.get(name=request.user)
        contact = ContactDetails.objects.filter(status='active',
                                                sme=sme).order_by('type')[0]
        customer_id = sme.id
        aaho_office = sme.aaho_office
        if not aaho_office:
            aaho_office_id = sme.aaho_poc.office.id
        else:
            aaho_office_id = sme.aaho_office.id
        # print(sme)
        # print(customer_id)
        # print(aaho_office_id)
    except Sme.DoesNotExist:
        return json_400_incorrect_use()
    except IndexError:
        contact = ContactDetails.objects.create(sme=sme,
                                                name=request.user.first_name)

    city_scores, address_scores = get_ranking_results(request.user.id)

    data = {
        'cities': cities,
        'vehicles': vehicle_data,
        'vendors': vendor_data,
        'city_scores': city_scores,
        'address_scores': address_scores,
        'user': get_user_data(request.user, contact, sme),
        'customer_id': customer_id,
        'aaho_office_id': aaho_office_id
    }
    return json_response({
        'status': 'success',
        'msg': 'app data',
        'data': data
    })
Beispiel #24
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()
Beispiel #25
0
def app_version_check(request):
    print("Request for app version check")
    form = MobileAppVersionsForm(request.data)
    if not form.is_valid():
        return {'status': 'failure', 'msg': 'Pls enter all * fields'}
    app_platform = request.data.get('app_platform')
    app_name = request.data.get('app_name')
    app_version = request.data.get('app_version')

    mobile_app_version = MobileAppVersions.objects.filter(app_name=app_name, app_platform=app_platform).\
        exclude(deleted=True).order_by('-created_on').first()

    if not mobile_app_version:
        return json_response({
            'status':
            'failure',
            'msg':
            'Mobile app {} version not found'.format(app_name)
        })

    if mobile_app_version.app_version == app_version:
        force_upgrade = False
        recommend_upgrade = False
    else:
        if mobile_app_version.upgrade_type == 'force':
            force_upgrade = True
            recommend_upgrade = False
        else:
            recommend_upgrade = True
            force_upgrade = False

    print("Returning : Request for app version check")
    return json_response({
        'status': 'success',
        'msg': 'App version data',
        'data': {
            'forceUpgrade': force_upgrade,
            'recommendUpgrade': recommend_upgrade,
            'latest_version': mobile_app_version.app_version
        }
    })
Beispiel #26
0
def api_login(request):
    username = request.data.get('username', None)
    password = request.data.get('password', None)
    if not username or not password:
        return json_400_incorrect_use()
    user = authenticate(username=username, password=password)
    if user is None:
        return json_401_wrong_credentials()
    if not user.is_active:
        return json_401_inactive_user()
    login(request, user)
    return json_response({'status': 'success', 'msg': 'login successful'})
Beispiel #27
0
def send_app_update_sms_to_fms_users(request):
    if not request.data.get('app_link'):
        return json_response({'status': 'failure', 'msg': 'Pls pass app link'})
    brokers = Broker.objects.all().exclude(deleted=True)
    mobiles_list = []
    for broker in brokers:
        if broker:
            usr = broker.name
            if any(g.name == 'fms' for g in usr.groups.all()):
                if broker.get_phone() not in mobiles_list:
                    mobiles_list.append(broker.get_phone())
    mobiles = ', '.join(mobiles_list)
    print(mobiles)
    template = "We have added new features to Aaho FMS app. Please click the link to update: {}".format(
        request.data.get('app_link'))
    print(template)
    send_sms(mobiles, template)
    return json_response({
        'status': 'success',
        'msg': 'Sms sent successfully  to FMS users'
    })
Beispiel #28
0
def team_booking_data(request, vehicle_id):
    print(request.data)
    if to_int(vehicle_id) != 9999999 and isinstance(get_or_none(Vehicle, id=vehicle_id), Vehicle):
        vehicle = get_or_none(Vehicle, id=vehicle_id)
        bookings = ManualBooking.objects.filter(
            lorry_number__in=[display_format(compare_format(vehicle.vehicle_number))]).exclude(
            booking_status__icontains='cancelled').order_by('-shipment_date')
    else:
        broker = Broker.objects.get(name=User.objects.get(username=request.user.username))
        bookings = ManualBooking.objects.filter(supplier=broker,
                                                shipment_date__gte=datetime(2017, 12, 1).date()).exclude(
            booking_status__icontains='cancelled').order_by('-shipment_date')
    return json_response({'status': 'success', 'data': supplier_booking_data(bookings=bookings)})
Beispiel #29
0
def edit_vehicle_status(request):
    data = request.data

    vehicle_status = data.get('vehicle_status', None)
    if vehicle_status not in dict(VEHICLE_STATUS_CHOICES):
        return json_response(
            {
                'status': 'error',
                'msg': 'not a valid vehicle_status'
            },
            status=400)

    driver = request.driverapp_user
    driver.vehicle_status = vehicle_status
    driver.save()
    if isinstance(driver, DriverAppUser):
        try:
            gps_device = GPSDevice.objects.get(device_id=driver.device_id,
                                               device_provider_id=7)
            gps_device_serializer = GPSDeviceSerializer(
                partial=True,
                instance=gps_device,
                data={'vehicle_status': vehicle_status})
            if gps_device_serializer.is_valid():
                gps_device_serializer.save()
        except GPSDevice.DoesNotExist:
            pass

    if driver.number_verified:
        Vehicle.objects.filter(driver_app_user=driver).update(
            status=driver.vehicle_status)

    data = merge({
        'status': 'success',
        'msg': 'vehicle_status updated',
    }, driver_app_data(driver))

    return json_response(data)
Beispiel #30
0
def edit_profile(request):
    if not any((f in request.data) for f in [
            'full_name', 'contact_name', 'address', 'phone', 'email',
            'designation'
    ]):
        return json_400_incorrect_use()

    try:
        sme = Sme.objects.get(name=request.user)
        contact = ContactDetails.objects.filter(status='active',
                                                sme=sme).order_by('type')[0]
    except Sme.DoesNotExist:
        return json_400_incorrect_use()
    except IndexError:
        contact = ContactDetails.objects.create(sme=sme)

    if 'full_name' in request.data:
        request.user.first_name = request.data['full_name']
        request.user.save()

    contact_mod = False

    if 'contact_name' in request.data:
        contact.name = request.data['contact_name']
        contact_mod = True

    if 'address' in request.data and request.data['address']:
        save_sme_address(sme, request.data['address'])

    if 'phone' in request.data:
        contact.phone = request.data['phone']
        contact_mod = True

    if 'email' in request.data:
        contact.email = request.data['email']
        contact_mod = True

    if 'designation' in request.data:
        contact.designation = request.data['designation']
        contact_mod = True

    if contact_mod:
        contact.save()

    return json_response({
        'status': 'success',
        'msg': 'profile edited',
        'user': get_user_data(request.user, contact, sme)
    })