Exemple #1
0
def _get_company_customers(context):
    """
    Return company customers

    :param obj context: The current Pyramid context
    :returns: A list of Customer instances
    :rtype: list
    """
    company_id = context.get_company_id()
    customers = Customer.label_query()
    customers = customers.filter_by(company_id=company_id).all()

    if hasattr(context, "project_id"):
        # Si le contexte est attaché à un projet, on s'assure que les clients du
        # projet sont présentés en haut de la liste des clients en utilisant une
        # fonction de tri custom

        project_id = context.project_id

        def sort_pid_first(a, b):
            """
            Sort customers moving the customers belonging to the current project
            up in the list
            """
            if project_id in a.get_project_ids():
                return -1
            elif project_id in b.get_project_ids():
                return 1
            else:
                return 0

        customers = sorted(customers, cmp=sort_pid_first)
    return customers
Exemple #2
0
def _get_company_customers(context):
    """
    Return company customers

    :param obj context: The current Pyramid context
    :returns: A list of Customer instances
    :rtype: list
    """
    company_id = context.get_company_id()
    customers = Customer.label_query()
    customers = customers.filter_by(company_id=company_id).all()

    if hasattr(context, "project_id"):
        # Si le contexte est attaché à un projet, on s'assure que les clients du
        # projet sont présentés en haut de la liste des clients en utilisant une
        # fonction de tri custom

        project_id = context.project_id

        def sort_pid_first(a, b):
            """
            Sort customers moving the customers belonging to the current project
            up in the list
            """
            if project_id in a.get_project_ids():
                return -1
            elif project_id in b.get_project_ids():
                return 1
            else:
                return 0

        customers = sorted(customers, cmp=sort_pid_first)
    return customers
Exemple #3
0
def _get_customers_from_request(request):
    """
    Get customers options for new task and task duplicate form

    Find customers regarding the current context

    Project -> Project.customers
    ...

    :returns: A list of customers
    :rtype: list
    """
    customers = []
    context = request.context

    if isinstance(context, Project):
        customers = context.customers

    elif isinstance(context, Task):
        customers = [context.customer]

    elif isinstance(context, Customer):
        customers = [context]

    elif hasattr(context, 'project') and context.project is not None:
        customers = context.project.customers

    else:
        company_id = request.current_company
        customers = Customer.label_query()
        customers.filter_by(company_id=company_id).all()

    return customers
Exemple #4
0
def get_company_customers(kw):
    """
    Retrieve all customers attached to a context's company
    """
    from autonomie.models.customer import Customer
    request = kw['request']
    company_id = request.context.get_company_id()
    customers = Customer.label_query()
    customers = customers.filter_by(company_id=company_id).all()
    return customers
Exemple #5
0
def deferred_fullcustomer_list_widget(node, kw):
    from autonomie.models.project import build_customer_values
    from autonomie.models.customer import Customer
    values = [('', u"Tous les clients")]
    for comp in Company.query().options(load_only("id", "name")):
        customers = Customer.label_query().filter_by(company_id=comp.id)
        values.append(
            deform.widget.OptGroup(
                comp.name, *build_customer_values(customers, default=False)))
    return deform.widget.Select2Widget(values=values,
                                       placeholder=u"Sélectionner un client")
Exemple #6
0
def _get_project_customers(project):
    """
    Return project customers

    :param obj project: The current project
    :returns: A list of Customer instances
    :rtype: list
    """
    query = Customer.label_query()
    customers = query.filter(Customer.projects.any(Project.id == project.id))
    return customers
Exemple #7
0
def _get_project_customers(project):
    """
    Return project customers

    :param obj project: The current project
    :returns: A list of Customer instances
    :rtype: list
    """
    query = Customer.label_query()
    customers = query.filter(Customer.projects.any(Project.id == project.id))
    return customers
Exemple #8
0
    def deferred_customer_widget(node, kw):
        if is_admin:
            # All customers, grouped by Company
            for comp in Company.query().options(load_only("id", "name")):
                customers = Customer.label_query().filter_by(
                    company_id=comp.id, )
                values.append(
                    deform.widget.OptGroup(comp.name,
                                           *build_customer_values(customers)))
        else:
            # Company customers only
            company = kw['request'].context
            for cust in company.customers:
                values.append((cust.id, u"%s (%s)" % (cust.name, cust.code)))

        return deform.widget.Select2Widget(values=values,
                                           **(widget_options or {}))
def get_customers_from_request(request):
    """
    Extract a customers list from the request object

    :param obj request: The pyramid request object
    :returns: A list of customers
    :rtype: list
    """
    if isinstance(request.context, Project):
        company_id = request.context.company.id
    elif isinstance(request.context, Company):
        company_id = request.context.id
    else:
        return []

    customers = Customer.label_query()
    customers = customers.filter_by(company_id=company_id)
    customers = customers.filter_by(archived=False)

    return customers.order_by(Customer.label).all()
Exemple #10
0
def get_customers_from_request(request):
    """
    Extract a customers list from the request object

    :param obj request: The pyramid request object
    :returns: A list of customers
    :rtype: list
    """
    if isinstance(request.context, Project):
        company_id = request.context.company.id
    elif isinstance(request.context, Company):
        company_id = request.context.id
    else:
        return []

    customers = Customer.label_query()
    customers = customers.filter_by(company_id=company_id)
    customers = customers.filter_by(archived=False)

    return customers.order_by(Customer.label).all()