def _generate_cdr_part(self, part, model, cdr_info): # Take and increment the correlation number using # the mongoDB atomic access in order to avoid race # problems # Create connection for raw database access connection = MongoClient() db = connection[settings.DATABASES['default']['NAME']] corr_number = db.wstore_rss.find_and_modify( query={'_id': ObjectId(cdr_info['rss'].pk)}, update={'$inc': {'correlation_number': 1}} )['correlation_number'] # Set the description currency = get_curency_code(part['currency']) return { 'provider': cdr_info['provider'], 'service': cdr_info['service_name'], 'defined_model': model, 'correlation': str(corr_number), 'purchase': self._purchase.pk, 'offering': cdr_info['offering'], 'product_class': 'SaaS', 'description': cdr_info['description'], 'cost_currency': currency, 'cost_value': str(part['value']), 'tax_currency': '1', 'tax_value': '0.0', 'source': '1', 'operator': '1', 'country': cdr_info['country_code'], 'time_stamp': cdr_info['time_stamp'], 'customer': cdr_info['customer'], }
def _generate_cdr_part(self, part, model, cdr_info): # Create connection for raw database access db = get_database_connection() # Take and increment the correlation number using # the mongoDB atomic access in order to avoid race # problems currency = self._price_model['general_currency'] if cdr_info['rss'].api_version == 1: # Version 1 uses a global correlation number corr_number = db.wstore_rss.find_and_modify( query={'_id': ObjectId(cdr_info['rss'].pk)}, update={'$inc': { 'correlation_number': 1 }})['correlation_number'] currency = get_curency_code(self._price_model['general_currency']) else: # Version 2 uses a correlation number per provider corr_number = db.wstore_organization.find_and_modify( query={'_id': ObjectId(self._purchase.owner_organization.pk)}, update={'$inc': { 'correlation_number': 1 }})['correlation_number'] return { 'provider': cdr_info['provider'], 'service': cdr_info['service_name'], 'defined_model': model, 'correlation': str(corr_number), 'purchase': self._purchase.ref, 'offering': cdr_info['offering'], 'product_class': cdr_info['product_class'], 'description': cdr_info['description'], 'cost_currency': currency, 'cost_value': str(part['value']), 'tax_currency': currency, 'tax_value': '0.0', 'source': '1', 'operator': '1', 'country': cdr_info['country_code'], 'time_stamp': cdr_info['time_stamp'], 'customer': cdr_info['customer'], 'event': self._purchase.contract.revenue_class }
def _generate_cdr_part(self, part, model, cdr_info): # Create connection for raw database access db = get_database_connection() # Take and increment the correlation number using # the mongoDB atomic access in order to avoid race # problems currency = self._price_model['general_currency'] if cdr_info['rss'].api_version == 1: # Version 1 uses a global correlation number corr_number = db.wstore_rss.find_and_modify( query={'_id': ObjectId(cdr_info['rss'].pk)}, update={'$inc': {'correlation_number': 1}} )['correlation_number'] currency = get_curency_code(self._price_model['general_currency']) else: # Version 2 uses a correlation number per provider corr_number = db.wstore_organization.find_and_modify( query={'_id': ObjectId(self._purchase.owner_organization.pk)}, update={'$inc': {'correlation_number': 1}} )['correlation_number'] return { 'provider': cdr_info['provider'], 'service': cdr_info['service_name'], 'defined_model': model, 'correlation': str(corr_number), 'purchase': self._purchase.ref, 'offering': cdr_info['offering'], 'product_class': cdr_info['product_class'], 'description': cdr_info['description'], 'cost_currency': currency, 'cost_value': str(part['value']), 'tax_currency': currency, 'tax_value': '0.0', 'source': '1', 'operator': '1', 'country': cdr_info['country_code'], 'time_stamp': cdr_info['time_stamp'], 'customer': cdr_info['customer'], 'event': self._purchase.contract.revenue_class }