def test_get_case_ledger_state(self): for case_id in self.case_ids: state = LedgerAccessors(self.domain).get_case_ledger_state(case_id) for section, products in state.items(): for product, state in products.items(): self.assertEqual( state.stock_on_hand, self.transactions[case_id][section][product])
def test_transactions(expected): state = LedgerAccessors(self.domain).get_current_ledger_state( list(self.case_ids)) for case_id, sections in state.items(): self._validate_case_data(sections, expected[case_id])
def test_get_case_ledger_state(self): for case_id in self.case_ids: state = LedgerAccessors(self.domain).get_case_ledger_state(case_id) for section, products in state.items(): for product, state in products.items(): self.assertEqual(state.stock_on_hand, self.transactions[case_id][section][product])
def test_transactions(expected): state = LedgerAccessors(self.domain).get_current_ledger_state(self.case_ids.keys()) for case_id, sections in state.items(): self._validate_case_data(sections, expected[case_id])
def render_case(case, options): """ Uses options since Django 1.3 doesn't seem to support templatetag kwargs. Change to kwargs when we're on a version of Django that does. """ from corehq.apps.hqwebapp.templatetags.proptable_tags import get_tables_as_rows, get_default_definition wrapped_case = get_wrapped_case(case) timezone = options.get('timezone', pytz.utc) timezone = timezone.localize(datetime.datetime.utcnow()).tzinfo _get_tables_as_rows = partial(get_tables_as_rows, timezone=timezone) display = options.get('display') or wrapped_case.get_display_config() show_transaction_export = options.get('show_transaction_export') or False get_case_url = options['get_case_url'] data = copy.deepcopy(wrapped_case.to_full_dict()) default_properties = _get_tables_as_rows(data, display) dynamic_data = wrapped_case.dynamic_properties() for section in display: for row in section['layout']: for item in row: dynamic_data.pop(item.get("expr"), None) if dynamic_data: dynamic_keys = sorted(dynamic_data.keys()) definition = get_default_definition( dynamic_keys, num_columns=DYNAMIC_CASE_PROPERTIES_COLUMNS) dynamic_properties = _get_tables_as_rows(dynamic_data, definition) else: dynamic_properties = None the_time_is_now = datetime.datetime.utcnow() tz_offset_ms = int(timezone.utcoffset(the_time_is_now).total_seconds()) * 1000 tz_abbrev = timezone.localize(the_time_is_now).tzname() # ledgers def _product_name(product_id): try: return SQLProduct.objects.get(product_id=product_id).name except SQLProduct.DoesNotExist: return (_('Unknown Product ("{}")').format(product_id)) ledger_map = LedgerAccessors(case.domain).get_case_ledger_state(case.case_id, ensure_form_id=True) for section, product_map in ledger_map.items(): product_tuples = sorted( (_product_name(product_id), product_map[product_id]) for product_id in product_map ) ledger_map[section] = product_tuples return render_to_string("case/partials/single_case.html", { "default_properties": default_properties, "default_properties_options": { "style": "table" }, "dynamic_properties": dynamic_properties, "dynamic_properties_options": { "style": "table" }, "case": wrapped_case.case, "case_actions": mark_safe(json.dumps(wrapped_case.actions())), "timezone": timezone, "tz_abbrev": tz_abbrev, "case_hierarchy_options": { "show_view_buttons": True, "get_case_url": get_case_url, "timezone": timezone }, "ledgers": ledger_map, "timezone_offset": tz_offset_ms, "show_transaction_export": show_transaction_export, "xform_api_url": reverse('single_case_forms', args=[case.domain, case.case_id]), })