def contact_edit(contact_id=None):

    client_id = None

    if contact_id:
        contact = Contact.objects.get(id=contact_id)
        form = FormContact(obj=contact)
        form.client_id.data = contact.client_id.id
    else:
        contact = Contact()
        form = FormContact()

    form.client_id.choices = [(0, 'Selectionnez un client')]
    for choice in Client.objects():
        form.client_id.choices.append((str(choice.id), choice.name))
    form.contact.data = 'contact'

    success = False
    if form.validate_on_submit():

        contact.first_name = form.first_name.data
        contact.last_name = form.last_name.data
        contact.email = form.email.data
        contact.phone1 = form.phone1.data
        contact.phone2 = form.phone2.data

        customer = Client.objects.get(id=form.client_id.data)

        contact.client_id = customer

        contact.save()
        flash('Enregistrement effectue avec success', 'success')
        success = True

    return render_template('client/contact_edit.html', **locals())
def edit(client_id=None):
    menu = 'client'

    prospect = request.args.get('prospect')

    if prospect:
        submenu = 'prospect'
        title_page = 'Propect'
    else:
        submenu = 'client'
        title_page = 'Client'

    context = 'information'

    view_accent = False
    if client_id:

        client = Client.objects.get(id=client_id)
        form = FormClient(obj=client)
        form.id.data = client_id
        form.ref.data = client.ref

        accent_com = Client.objects(myself=True)
        view_accent = True
        if len(accent_com):
            view_accent = False

    else:
        client = Client()
        form = FormClient()
        success = False

    if form.validate_on_submit():

        client.name = form.name.data
        client.ref = form.ref.data
        client.adresse = form.adresse.data
        client.bp = form.bp.data
        client.email = form.email.data
        client.pays = form.pays.data
        client.ville = form.ville.data
        client.phone = form.phone.data
        if prospect:
            client.prospect = True

        time_zones = pytz.timezone('Africa/Douala')
        date_auto_nows = datetime.datetime.now(time_zones).strftime(
            "%Y-%m-%d %H:%M:%S")

        client.date_created = function.datetime_convert(date_auto_nows)
        client.save()

        flash('Enregistrement effectue avec success', 'success')
        success = True

    # if not client_id:
    #     return render_template('client/edit.html', **locals())
    # else:
    return render_template('client/infos.html', **locals())
def unique_email_validator(form, field):
    """ email must be unique"""
    user_manager = Client.objects(email=field.data)
    if len(user_manager):
        if not form.id.data:
            raise wtf.ValidationError('Cette adresse email existant.')
        else:
            use = Client.objects.get(id=form.id.data)
            if use.email != field.data:
                raise wtf.ValidationError('Cette adresse email existant.')
def index(prospect=None):
    menu = 'client'
    if prospect:
        submenu = 'prospect'
        title_page = 'Propect'
    else:
        submenu = 'client'
        title_page = 'Client'

    context = 'charge'

    search = False
    q = request.args.get('q')
    if q:
        search = True
    try:
        page = int(request.args.get('page', 1))
    except ValueError:
        page = 1

    offset = 0
    limit = 10
    if page > 1:
        offset = ((page - 1) * 10)

    if prospect:
        count = Client.objects(prospect=True).count()
        datas = Client.objects(prospect=True).skip(offset).limit(limit)
    else:
        count = Client.objects(prospect=False).count()
        datas = Client.objects(prospect=False).skip(offset).limit(limit)

    pagination = Pagination(css_framework='bootstrap3',
                            page=page,
                            total=count,
                            search=search,
                            record_name='Clients')

    return render_template('client/index.html', **locals())
def unique_reference(form, field):
    if len(field.data) > 3:
        raise wtf.ValidationError(
            'Pas plus de 03 caracteres pour une reference.')
    else:
        client = Client.objects(ref=field.data)
        if len(client):
            if not form.id.data:
                raise wtf.ValidationError('Reference Unique. Il en existe un.')
            else:
                use = Client.objects.get(id=form.id.data)
                if use.ref != field.data:
                    raise wtf.ValidationError(
                        'Reference Unique. Il en existe un.')