def getInvoiceManageDetail(self,
                            condition=None,
                            page_no=1,
                            page_size=5,
                            edge_size=0,
                            session=None):
     '''发票管理列表详情'''
     if not session:
         session = sa.get_session()
     query = session.query(Invoice)
     if condition:
         for (attr, attrValue) in [(key, value)
                                   for (key, value) in condition.items()]:
             if attr == 'account_id':
                 query = query.filter(Invoice.account_id == attrValue)
             if attr == 'type':
                 query = query.filter(Invoice.type == attrValue)
             if attr == 'status':
                 query = query.filter(Invoice.status == attrValue)
             if attr == 'titlelike':
                 query = query.filter(
                     Invoice.title.like('%' + attrValue.replace('_', '\_') +
                                        '%'))
     pagination = Pagination(query)
     result = pagination.paginate(page_no, page_size, edge_size)
     if result:
         for invoice in result:
             invoice.address
     return result
 def getInvoiceByPage(self,
                      condition=None,
                      page_no=1,
                      page_size=15,
                      edge_size=0,
                      session=None):
     ''' 分页查询'''
     if not session:
         session = sa.get_session()
     query = session.query(Invoice)
     if condition:
         for (attr, attrValue) in [(key, value)
                                   for (key, value) in condition.items()]:
             if attr == 'account_id':
                 query = query.filter(Invoice.account_id == attrValue)
             if attr == 'type':
                 query = query.filter(Invoice.type == attrValue)
             if attr == 'status':
                 query = query.filter(Invoice.status == attrValue)
     pagination = Pagination(query)
     result = pagination.paginate(page_no, page_size, edge_size)
     if result:
         for invoice in result:
             invoice.address
     return result
 def list(self,
          account_id,
          started_at=None,
          ended_at=None,
          page_no=1,
          page_size=15,
          edge_size=0,
          isBillItems=False,
          session=None,
          bill_type=None):
     """账单列表"""
     if not session:
         session = sa.get_session()
     query = session.query(Bill)
     if account_id:
         query = query.filter(Bill.account_id == account_id)
     if started_at:
         if isinstance(started_at, str):
             started_at = datetime.datetime.strptime(
                 started_at, '%Y-%m-%d %H:%M:%S')
         query = query.filter(Bill.started_at >= started_at)
     if ended_at:
         if isinstance(ended_at, str):
             ended_at = datetime.datetime.strptime(ended_at,
                                                   '%Y-%m-%d %H:%M:%S')
         query = query.filter(Bill.ended_at <= ended_at)
     if bill_type:
         query = query.filter(Bill.type == bill_type)
     pagination = Pagination(query)
     rows = pagination.paginate(page_no, page_size, edge_size)
     if isBillItems and rows:
         for row in rows:
             row.bill_items
     return rows
Exemple #4
0
 def getAccountByPage(self,
                      query=None,
                      page_no=1,
                      page_size=15,
                      edge_size=0,
                      session=None):
     ''' 分页查询'''
     if not session:
         session = sa.get_session()
     if query is None:
         query = self.getQuery(session)
     pagination = Pagination(query)
     return pagination.paginate(page_no, page_size, edge_size)
Exemple #5
0
 def list(self, info):
     '''
     info
     列表
     :return:
     '''
     try:
         query = self.session.query(self.model_class)
         query = self._list_query(query, info)
         if "page" in info:
             records = Pagination(query).paginate(**info["page"])
             total = records.total
         else:
             records = query.all()
             total = len(records)
         return [self.getDictFromObj_nr(item) for item in records], total
     except Exception as e:
         LOG.error(str(e))
         raise e
Exemple #6
0
 def list_by_me(self, info):
     '''
     所有被我处理的工单
     '''
     try:
         current_user = info["user"]
         query = self.session.query(self.model_class).filter(
             self.model_class.records.any(
                 WorkOrderRecord.record_by == current_user))
         query = self._list_query(query, info)
         if "page" in info:
             records = Pagination(query).paginate(**info["page"])
             total = records.total
         else:
             records = query.all()
             total = len(records)
         return [
             self.getDictFromObj_rp(item, {"type": "name"})
             for item in records
         ], total
     except Exception as e:
         LOG.error(str(e))
         raise e
Exemple #7
0
    def getAmountTotal(self,
                       account_id,
                       started_at,
                       ended_at,
                       region_id=None,
                       resource_type=None,
                       page_no=1,
                       page_size=15,
                       edge_size=0,
                       session=None):
        '''取得消费明细汇总'''
        if not session:
            session = sa.get_session()
        query = session.query(Consumption.account_id.label("account_id"), Consumption.resource_id.label("resource_id"),Consumption.sum.label('sum'), Consumption.resource_name.label("resource_name"), Consumption.region_id.label("region_id")\
                              , Consumption.resource_type.label("resource_type"), Consumption.parent_id.label("parent_id"), func.sum(Consumption.amount).label("amount_total"), func.max(Consumption.ended_at).label("ended_at"), func.min(Consumption.started_at).label("started_at"))
        if account_id:
            query = query.filter(Consumption.account_id == account_id)
        if region_id:
            query = query.filter(Consumption.region_id == region_id)
        if resource_type:
            if resource_type not in ('instance', 'cdn'):
                query = query.filter(
                    Consumption.resource_type == resource_type)
            else:
                if resource_type == 'instance':
                    query = query.filter(
                        or_(Consumption.resource_type == resource_type,
                            Consumption.resource_type == 'cpu',
                            Consumption.resource_type == 'memory'))
                if resource_type == 'cdn':
                    query = query.filter(
                        or_(Consumption.resource_type == 'cdnflow',
                            Consumption.resource_type == 'cdnbandwidth'))
        if started_at is not None:
            query = query.filter(Consumption.started_at >= started_at)
        if ended_at is not None:
            query = query.filter(Consumption.ended_at <= ended_at)
        query_instance = query
        query = query.filter(not_(Consumption.resource_type == 'cpu')).filter(
            not_(Consumption.resource_type == 'memory'))

        #        rows = query.group_by(Consumption.account_id, Consumption.resource_id).order_by(Consumption.region_id).all()
        query = query.group_by(Consumption.account_id,
                               Consumption.resource_id).order_by(
                                   Consumption.region_id)
        pagination = Pagination(query)
        result = pagination.paginate(page_no, page_size, edge_size)
        pageResult = PageResult(result.total, page_no, page_size, edge_size)
        for row in result:
            pageResult.append({'account_id':row.account_id, 'resource_id':row.resource_id, 'resource_name':row.resource_name if row.resource_name else row.sum\
                           , 'region_id':row.region_id, 'resource_type':row.resource_type, 'parent_id':row.parent_id\
                           , 'amount_total':row.amount_total, 'started_at':row.started_at, 'ended_at':row.ended_at})
            if row.resource_type == 'instance':
                query_cpu_memory = query_instance
                query_cpu_memory = query_cpu_memory.filter(
                    Consumption.parent_id == row.resource_id)
                query_cpu_memory = query_cpu_memory.group_by(
                    Consumption.account_id,
                    Consumption.resource_id).order_by(Consumption.region_id)
                cpu_memory_rows = query_cpu_memory.all()
                for cpu_memory_row in cpu_memory_rows:
                    pageResult.append({'account_id':cpu_memory_row.account_id, 'resource_id':cpu_memory_row.resource_id, 'resource_name':cpu_memory_row.resource_name\
                           , 'region_id':cpu_memory_row.region_id, 'resource_type':cpu_memory_row.resource_type, 'parent_id':cpu_memory_row.parent_id\
                           , 'amount_total':cpu_memory_row.amount_total, 'started_at':cpu_memory_row.started_at, 'ended_at':cpu_memory_row.ended_at})

        session.close()
        return pageResult