def page_context(self, **kwargs): stock_state_limit = 100 stock_transaction_limit = 10000 stock_state_limit_exceeded = False stock_transaction_limit_exceeded = False query = StockTransaction.objects.filter(report__domain=self.domain) if self.location_id: try: case_id = (SQLLocation.objects .get(domain=self.domain, location_id=self.location_id) .supply_point_id) except SQLLocation.DoesNotExist: messages.error(self.request, 'Your location id did not match a location') else: query = query.filter(case_id=case_id) stock_state_keys = [ (txn.case_id, txn.section_id, txn.product_id) for txn in query .order_by('case_id', 'section_id', 'product_id') .distinct('case_id', 'section_id', 'product_id') [:stock_state_limit] ] if len(stock_state_keys) >= stock_state_limit: stock_state_limit_exceeded = True actions_by_stock_state_key = [] stock_transaction_count = 0 for stock_state_key in stock_state_keys: case_id, section_id, product_id = stock_state_key actions = [ ( action.__class__.__name__, action, self.get_server_date_by_form_id( action.stock_transaction.report.form_id), ) for action in plan_rebuild_stock_state(case_id, section_id, product_id) ] stock_transaction_count += len(actions) if stock_transaction_count > stock_transaction_limit: stock_transaction_limit_exceeded = True break actions_by_stock_state_key.append( ({'case_id': case_id, 'section_id': section_id, 'product_id': product_id}, actions, get_doc_info_by_id(self.domain, case_id)) ) assert len(set(stock_state_keys)) == len(stock_state_keys) return { 'actions_by_stock_state_key': actions_by_stock_state_key, 'stock_state_limit_exceeded': stock_state_limit_exceeded, 'stock_state_limit': stock_state_limit, 'stock_transaction_limit_exceeded': stock_transaction_limit_exceeded, 'stock_transaction_limit': stock_transaction_limit, }
def get_actions_by_stock_state_key(self, case_id, section_id, product_id): actions = [( action.__class__.__name__, action, self.get_server_date_by_form_id( action.stock_transaction.report.form_id), ) for action in plan_rebuild_stock_state( case_id, section_id, product_id)] return ({ 'case_id': case_id, 'section_id': section_id, 'product_id': product_id }, actions, get_doc_info_by_id(self.domain, case_id))
def page_context(self, **kwargs): stock_state_limit = 100 stock_transaction_limit = 10000 stock_state_limit_exceeded = False stock_transaction_limit_exceeded = False stock_state_keys = [ (txn.case_id, txn.section_id, txn.product_id) for txn in StockTransaction.objects.filter(report__domain=self.domain) .order_by('case_id', 'section_id', 'product_id') .distinct('case_id', 'section_id', 'product_id') [:stock_state_limit] ] if len(stock_state_keys) >= stock_state_limit: stock_state_limit_exceeded = True actions_by_stock_state_key = [] stock_transaction_count = 0 for stock_state_key in stock_state_keys: case_id, section_id, product_id = stock_state_key actions = [ ( action.__class__.__name__, action, self.get_server_date_by_form_id( action.stock_transaction.report.form_id), ) for action in plan_rebuild_stock_state(case_id, section_id, product_id) ] stock_transaction_count += len(actions) if stock_transaction_count > stock_transaction_limit: stock_transaction_limit_exceeded = True break actions_by_stock_state_key.append( ({'case_id': case_id, 'section_id': section_id, 'product_id': product_id}, actions, get_doc_info_by_id(self.domain, case_id)) ) assert len(set(stock_state_keys)) == len(stock_state_keys) return { 'actions_by_stock_state_key': actions_by_stock_state_key, 'stock_state_limit_exceeded': stock_state_limit_exceeded, 'stock_state_limit': stock_state_limit, 'stock_transaction_limit_exceeded': stock_transaction_limit_exceeded, 'stock_transaction_limit': stock_transaction_limit, }
def get_actions_by_stock_state_key(self, case_id, section_id, product_id): actions = [ ( action.__class__.__name__, action, self.get_server_date_by_form_id( action.stock_transaction.report.form_id), ) for action in plan_rebuild_stock_state(case_id, section_id, product_id) ] return ( {'case_id': case_id, 'section_id': section_id, 'product_id': product_id}, actions, get_doc_info_by_id(self.domain, case_id) )