Example #1
0
 def find_by_login(cls, login, active=True):
     query = DBSESSION().query(cls)
     query = query.options(load_only('pwd_hash'))
     query = query.filter_by(login=login)
     if active:
         query = query.filter_by(active=True)
     return query.first()
Example #2
0
 def find_by_login(cls, login, active=True):
     query = DBSESSION().query(cls)
     query = query.options(load_only('pwd_hash'))
     query = query.filter_by(login=login)
     if active:
         query = query.filter_by(active=True)
     return query.first()
def deferred_categories_widget(node, kw):
    query = DBSESSION().query(
        IncomeStatementMeasureTypeCategory.label,
        IncomeStatementMeasureTypeCategory.label,
    )
    choices = query.filter_by(active=True).all()
    return deform.widget.CheckboxChoiceWidget(values=choices)
 def get_types(cls, active=True, keys=()):
     query = DBSESSION().query(cls)
     if keys:
         query = query.options(load_only(*keys))
     if active:
         query = query.filter_by(active=True)
     return query
Example #5
0
 def get_types(cls, active=True, keys=()):
     query = DBSESSION().query(cls)
     if keys:
         query = query.options(load_only(*keys))
     if active:
         query = query.filter_by(active=True)
     return query
Example #6
0
    def _query(cls, invoice):
        from autonomie.models.task import Task

        q = DBSESSION().query(func.Max(SequenceNumber.index))
        q = q.filter(Task.type_.in_(('invoice', 'cancelinvoice')))
        q = q.filter_by(sequence=cls.db_key)
        return q
Example #7
0
def deferred_categories_widget(node, kw):
    query = DBSESSION().query(
        IncomeStatementMeasureTypeCategory.label,
        IncomeStatementMeasureTypeCategory.label,
    )
    choices = query.filter_by(active=True).all()
    return deform.widget.CheckboxChoiceWidget(values=choices)
Example #8
0
 def query_for_select(cls):
     """
     Query project types for selection purpose
     """
     query = DBSESSION().query(cls).options(
         load_only('id', 'label', 'private'))
     query = query.filter_by(active=True)
     return query
Example #9
0
    def get_years(cls, grid_class, company_id=None):
        query = DBSESSION().query(distinct(grid_class.year))

        if company_id is not None:
            query = query.filter_by(company_id=company_id)

        result = [a[0] for a in query.all()]
        result.sort()
        return result
Example #10
0
 def query_for_select(cls):
     """
     Query project types for selection purpose
     """
     query = DBSESSION().query(cls).options(
         load_only('id', 'label', 'private')
     )
     query = query.filter_by(active=True)
     return query
Example #11
0
    def get_years(cls, grid_class, company_id=None):
        query = DBSESSION().query(distinct(grid_class.year))

        if company_id is not None:
            query = query.filter_by(company_id=company_id)

        result = [a[0] for a in query.all()]
        result.sort()
        return result
 def check(cls, node):
     """
     Check if all indicators are successfull
     :param obj node: The node for which we check the indicators
     """
     query = DBSESSION().query(SaleFileRequirement.id)
     query = query.filter_by(node_id=node.id)
     query = query.filter(
         SaleFileRequirement.status != SaleFileRequirement.SUCCESS_STATUS)
     return query.count() == 0
Example #13
0
def deferred_label_validator(node, kw):
    """
    Deffered label validator, check whether a type or a category has the same
    label
    """
    context = kw['request'].context

    category_query = DBSESSION().query(IncomeStatementMeasureTypeCategory.label)
    category_query.filter_by(active=True)

    if isinstance(context, IncomeStatementMeasureTypeCategory):
        category_query = category_query.filter(
            IncomeStatementMeasureTypeCategory.id != context.id
        )
    category_labels = [i[0] for i in category_query]

    type_query = DBSESSION().query(IncomeStatementMeasureType.label)
    type_query.filter_by(active=True)

    if isinstance(context, IncomeStatementMeasureType):
        type_query = type_query.filter(
            IncomeStatementMeasureType.id != context.id
        )
    type_labels = [i[0] for i in type_query]

    def label_validator(node, value):
        if ':' in value or '!' in value:
            raise colander.Invalid(
                node,
                u"Erreur de syntax (les caractères ':' et '!' sont interdits"
            )

        if value in category_labels:
            raise colander.Invalid(
                node,
                u"Une catégories porte déjà ce nom"
            )
        if value in type_labels:
            raise colander.Invalid(
                node,
                u"Un type d'indicateurs porte déjà ce nom"
            )
    return label_validator
Example #14
0
    def get_tasks(cls, instance, type_str=None):
        from autonomie.models.task import Task
        query = DBSESSION().query(Task)
        query = query.filter_by(customer_id=instance.id)

        if type_str is not None:
            query = query.filter(Task.type_ == type_str)
        else:
            query = query.filter(
                Task.type_.in_(('invoice', 'cancelinvoice', 'estimation')))
        return query
 def check(cls, node):
     """
     Check if all indicators are successfull
     :param obj node: The node for which we check the indicators
     """
     query = DBSESSION().query(SaleFileRequirement.id)
     query = query.filter_by(node_id=node.id)
     query = query.filter(
         SaleFileRequirement.status != SaleFileRequirement.SUCCESS_STATUS
     )
     return query.count() == 0
Example #16
0
 def get_categories(cls, active=True, keys=()):
     """
     :param bool active: Only load active categories
     :param tuple keys: The keys to load (list of str)
     :returns: IncomeStatementMeasureTypeCategory ordered by order key
     :rtype: list
     """
     query = DBSESSION().query(cls)
     if keys:
         query = query.options(load_only(*keys))
     query = query.filter_by(active=active).order_by(cls.order)
     return query.all()
Example #17
0
    def get_tasks(cls, instance, type_str=None):
        from autonomie.models.task import Task
        query = DBSESSION().query(Task)
        query = query.filter_by(customer_id=instance.id)

        if type_str is not None:
            query = query.filter(Task.type_ == type_str)
        else:
            query = query.filter(
                Task.type_.in_(('invoice', 'cancelinvoice', 'estimation'))
            )
        return query
 def get_categories(cls, active=True, keys=()):
     """
     :param bool active: Only load active categories
     :param tuple keys: The keys to load (list of str)
     :returns: IncomeStatementMeasureTypeCategory ordered by order key
     :rtype: list
     """
     query = DBSESSION().query(cls)
     if keys:
         query = query.options(load_only(*keys))
     query = query.filter_by(active=active).order_by(cls.order)
     return query.all()
Example #19
0
    def get_by_category(cls, category_id, key=None):
        """
        Collect IncomeStatementMeasureType associated to the given category

        :param int category_id: The id to check for
        :param str key: The key to load (if we want to restrict the query
        :rtype: list
        """
        query = DBSESSION().query(cls)
        if key is not None:
            query = query.options(load_only(key))
        query = query.filter_by(category_id=category_id)
        return query.all()
    def get_by_category(cls, category_id, key=None):
        """
        Collect IncomeStatementMeasureType associated to the given category

        :param int category_id: The id to check for
        :param str key: The key to load (if we want to restrict the query
        :rtype: list
        """
        query = DBSESSION().query(cls)
        if key is not None:
            query = query.options(load_only(key))
        query = query.filter_by(category_id=category_id)
        return query.all()
Example #21
0
 def get_next_order(cls):
     """
     :returns: The next available order
     :rtype: int
     """
     query = DBSESSION().query(func.max(cls.order)).filter_by(active=True)
     query = query.filter_by(
         type_=cls.__mapper_args__['polymorphic_identity'])
     query = query.first()
     if query is not None and query[0] is not None:
         result = query[0] + 1
     else:
         result = 0
     return result
Example #22
0
def deferred_label_validator(node, kw):
    """
    Deffered label validator, check whether a type or a category has the same
    label
    """
    context = kw['request'].context

    category_query = DBSESSION().query(
        IncomeStatementMeasureTypeCategory.label)
    category_query.filter_by(active=True)

    if isinstance(context, IncomeStatementMeasureTypeCategory):
        category_query = category_query.filter(
            IncomeStatementMeasureTypeCategory.id != context.id)
    category_labels = [i[0] for i in category_query]

    type_query = DBSESSION().query(IncomeStatementMeasureType.label)
    type_query.filter_by(active=True)

    if isinstance(context, IncomeStatementMeasureType):
        type_query = type_query.filter(
            IncomeStatementMeasureType.id != context.id)
    type_labels = [i[0] for i in type_query]

    def label_validator(node, value):
        if ':' in value or '!' in value:
            raise colander.Invalid(
                node,
                u"Erreur de syntax (les caractères ':' et '!' sont interdits")

        if value in category_labels:
            raise colander.Invalid(node, u"Une catégories porte déjà ce nom")
        if value in type_labels:
            raise colander.Invalid(node,
                                   u"Un type d'indicateurs porte déjà ce nom")

    return label_validator
Example #23
0
 def get_next_order(cls):
     """
     :returns: The next available order
     :rtype: int
     """
     query = DBSESSION().query(func.max(cls.order)).filter_by(active=True)
     query = query.filter_by(
         type_=cls.__mapper_args__['polymorphic_identity']
     )
     query = query.first()
     if query is not None and query[0] is not None:
         result = query[0] + 1
     else:
         result = 0
     return result
Example #24
0
 def query(self):
     remember_navigation_history(self.request, self.context.id)
     query = DBSESSION().query(distinct(Business.id), Business)
     query = query.filter_by(project_id=self.current().id)
     return query
Example #25
0
 def query(self):
     remember_navigation_history(self.request, self.context.id)
     query = DBSESSION().query(distinct(Business.id), Business)
     query = query.filter_by(project_id=self.current().id)
     return query