def current_subscription(request): user = request.user uc = UserController(user) user_subscriptions = uc.get_user_subscriptions() current_active_subscription_name = user_subscriptions['active_subscription'] current_active_subscription = settings.SUBSCRIPTIONS_SETTINGS['subscriptions'][current_active_subscription_name] return render_to_response( 'thecommunity/account_page/_old/account_page_user_account_management_current_subscription.html', { 'subscription':current_active_subscription } )
def change_subscription(request): Logger.Info("%s - change_subscription - started" % __name__) user = request.user if request.method == 'GET': if not 'subscription_id' in request.GET: uc = UserController(user) user_subscriptions = uc.get_user_subscriptions() current_active_subscription_name = user_subscriptions['active_subscription'] available_subscriptions = [settings.SUBSCRIPTIONS_SETTINGS['subscriptions'][sub] for sub in settings.SUBSCRIPTIONS_SETTINGS['subscriptions'].keys() if sub != current_active_subscription_name] Logger.Info('%s - change_subscription - finished' % __name__) return render_to_response( 'thecommunity/account_page/_old/account_page_user_account_management_list_available_subscriptions.html', { 'subscriptions':available_subscriptions } ) else: subscription_id = request.GET['subscription_id'] subscription = [sub for sub in settings.SUBSCRIPTIONS_SETTINGS['subscriptions'].values() if sub['id'] == subscription_id][0] uc = UserController(user) subscription_migration_direction = uc.subscription_migration_direction(subscription['id']) template_name = 'thedashboard/change_subscriptions/%s' % subscription['templates'][subscription_migration_direction] Logger.Info('%s - change_subscription - finished' % __name__) return render_to_response( template_name, { 'subscription':subscription, 'show_credit_card_form':uc.need_to_ask_for_credit_card_details() }, context_instance=RequestContext(request) ) else: if 'credit_card_number' in request.POST: credit_card_number = request.POST['credit_card_number'] if credit_card_number != '0' and credit_card_number != '1': #TODO: this is just for the tests Logger.Info('%s - change_subscription - finished' % __name__) return JSONResponse({'errors':['Enter credit card number "1" to pass and "0" to fail']}) first_name = request.POST['first_name'].strip() last_name = request.POST['last_name'].strip() if not first_name or not last_name: Logger.Info('%s - change_subscription - finished' % __name__) return JSONResponse({'errors':['You must provide your first and last name']}) user.first_name = first_name user.last_name = last_name user.save() credit_card_data = { 'number':credit_card_number, 'expiry_month':request.POST['credit_card_expiry_month'], 'expiry_year':int(request.POST['credit_card_expiry_year']) } else: credit_card_data = None new_subscription_id = request.POST['subscription_id'] uc = UserController(user) subscription_changed = uc.change_user_subscription( new_subscription_id, credit_card_data ) if not subscription_changed: Logger.Info('%s - change_subscription - finished' % __name__) return JSONResponse({'errors':['There was an error process your card details, please try again later']}) maximum_number_of_dashboards = settings.SUBSCRIPTIONS_SETTINGS['subscriptions'][new_subscription_id]['config']['number_of_saved_dashboards'] dc = DashboardsController(user) dc.delete_dashboards_to_match_subscription(maximum_number_of_dashboards) Logger.Info('%s - change_subscription - finished' % __name__) return JSONResponse()