def listActiveReports(cls, start_date=None, end_date=None, accounts=None, components=None): from models.account import Account from models.project import Project, Component from models.report import Report query = Report.query\ .filter(~Report.status.in_(Report._r(Report.STATUS_DELETED)))\ .join(Report.account)\ .filter(~Account.status.in_(Account._r(Account.STATUS_DELETED)))\ .join(Report.component, aliased=True)\ .filter(~Component.status.in_(Component._r(Component.STATUS_DELETED)))\ .join(Report.project, aliased=True)\ .filter(~Project.status.in_(Project._r(Project.STATUS_DELETED))) if start_date: query = query.filter(Report.due_date>=start_date) if end_date: query = query.filter(Report.due_date<=end_date) if accounts: query = query.filter(Report.account_id.in_(accounts)) if components: query = query.filter(Report.component_id.in_(components)) query = query.order_by(Account.first_name, Account.last_name, Account.alias, Report.due_date, Report.created) return query.all()
def listActiveProjects(cls): from models.project import Project, Label return Project.query\ .join(Project.labels)\ .filter(~Project.status.in_(Project._r(Project.STATUS_DELETED)))\ .order_by(Label.title, Project.alias)\ .all()
def listAllActiveComponents(cls): from models.project import Project, Component, Label return Component.query\ .join(Component.project)\ .join(Project.labels)\ .join(Project.members, aliased=True)\ .filter(~Component.status.in_(Component._r(Component.STATUS_DELETED)))\ .filter(~Project.status.in_(Project._r(Project.STATUS_DELETED)))\ .order_by(Label.title, Project.alias, Component.alias)\ .all()
def listProjectsForActiveMember(cls, account): from models.project import Project, Membership account = cls.__parseAccountArgument(account) return Project.query\ .filter(~Project.status.in_(Project._r(Project.STATUS_DELETED)))\ .join(Project.members, aliased=True)\ .filter(Membership.account==account, ~Membership.status.in_(Membership._r(Membership.STATUS_DELETED)))\ .order_by(Project.alias)\ .all() + cls.listGeneralProjects()
def listComponentsForActiveMember(cls, project, account): from models.project import Project, Component, Membership project = cls.__parseProjectArgument(project) account = cls.__parseAccountArgument(account) return Component.query\ .filter(Component.project_id==project.id, ~Component.status.in_(Component._r(Component.STATUS_DELETED)))\ .join(Component.project)\ .filter(~Project.status.in_(Project._r(Project.STATUS_DELETED)))\ .join(Project.members, aliased=True)\ .filter(Membership.account==account, ~Membership.status.in_(Membership._r(Membership.STATUS_DELETED)))\ .order_by(Project.alias, Component.alias)\ .all()