def test_recursive_context_manager(self): with in_database('test', write=True): G(TestModel, name='Arnold') with in_database('default', write=True): pass test_count = TestModel.objects.count() self.assertEqual(test_count, 1)
def post(self, request): serializer = UserTableSerializer(data=request.data) company_name = request.data['company_name'] first_name = request.data['first_name'] email_id = request.data['email_id'] phone_no = request.data['phone_no'] if serializer.is_valid(): try: Company.objects.get(company_name=company_name) with in_database(company_name, write=True): UserTable.objects.create( company_name = company_name, first_name = first_name, email_id = email_id, phone_no = phone_no, role = USER_ROLES[1][0] ) except Company.DoesNotExist: # creating company record on Account database company = Company.objects.create( company_name = company_name, first_name = first_name, email_id = email_id, phone_no = phone_no, role = USER_ROLES[0][0], created_by = "usersignup" ) # creating database dynamically for the newly registered compnay in Company table new_database_config = database_dict(company_name) # automating the process of creating database on mysql end create_database(company_name) time.sleep(5) # updating the new database config to DATABASE in settings settings.DATABASES.update({company_name : new_database_config}) # automating the process of database migrations migrate_new_database(company_name) time.sleep(20) print ("Database migration done !") # now inserting the user records into created database with in_database(company_name, write=True): UserTable.objects.create( company_name = company_name, first_name = first_name, email_id = email_id, phone_no = phone_no, role = USER_ROLES[0][0] ) return Response(serializer.data, status=status.HTTP_201_CREATED)
def add_employee(request): if 'username' in request.session: if request.method == 'POST': form = AddEmployeeForm(request.POST) if form.is_valid(): n = form.cleaned_data['name'] a = form.cleaned_data['age'] e = form.cleaned_data['ed'] r = form.cleaned_data['role'] if r == 'customer': add_db = 'customerdata' else: add_db = 'admindata' with in_database(add_db, write=True): emp = Employee(name=n, age=a, ed=e, role=r) emp.save() messages.info(request, 'Employee added') return redirect('menu') else: messages.info(request, 'Invalid form') return redirect('logout') else: form = AddEmployeeForm() return render(request, 'add_employee.html', { 'title': 'Add Employee', 'form': form }) else: messages.error(request, 'Invalid user') return redirect('logout')
def modify_employee(request): if 'username' in request.session: if request.method == 'POST': form = ModifyEmployeeForm(request.POST) if form.is_valid(): id = int(form.cleaned_data['id']) with in_database(employee_db, write=True): emp = Employee.objects.get(id=id) ed = form.cleaned_data.get('ed') role = form.cleaned_data.get('role') if ed: emp.ed = ed if role: emp.role = role emp.save() messages.info(request, 'Employee modified') return redirect('menu') else: messages.error(request, 'Invalid form') return redirect('menu') else: form = ModifyEmployeeForm() return render(request, 'modify_employee.html', { 'title': 'Modify Employee', 'form': form }) else: messages.error(request, 'Invalid user') return redirect('logout')
def test_readonly_connection_writes_to_default(self): with in_database('test'): G(TestModel, name='Arnold') test_count = TestModel.objects.count() default_count = TestModel.objects.count() self.assertEqual(test_count, 0) self.assertEqual(default_count, 1)
def test_write_connection_writes_to_test(self): with in_database('test', write=True): G(TestModel, name='Arnold') test_count = TestModel.objects.count() default_count = TestModel.objects.count() self.assertEqual(test_count, 1) self.assertEqual(default_count, 0)
def test_write_only_connection_reads_from_default(self): with in_database('test', read=False, write=True): G(TestModel, name='Arnold') test_count = TestModel.objects.count() default_count = TestModel.objects.count() self.assertEqual(test_count, 0) self.assertEqual(default_count, 0)
def test_create_db_object(self): with in_database(self.test_db_config, write=True): G(TestModel, name='Arnold') G(TestModel, name='Sue') count = TestModel.objects.count() expected = 2 self.assertEqual(count, expected)
def test_decorator_matches_context_manager(self): @in_database('test') def test_db_record_count(): return TestModel.objects.count() with in_database('test'): G(TestModel, name='Michael Bluth') context_count = TestModel.objects.count() decorator_count = test_db_record_count() self.assertEqual(context_count, decorator_count)
class DBRoutingMixin(object): """docstring for DBRoutingMixin""" def __init__(self, arg): super(DBRoutingMixin, self).__init__() DB_ROUTING_INSTANCE = self.request.path.split("/") @method_decorator(in_database(DB_ROUTING_INSTANCE)) def dispatch(self, request, *args, **kwargs): return super(DBRoutingMixin, self).dispatch(request, *args, **kwargs)
def display_employees(request): search_param = request.GET['s'] if search_param == 'customer': emp_db = 'customerdata' else: emp_db = 'admindata' if 'username' in request.session: with in_database(emp_db): employees = Employee.objects.all() if employees: return render(request, 'display_employees.html', { 'title': 'Display Employees', 'employees': employees }) else: return render(request, 'no_employees.html', {'title': 'No Employees'}) else: messages.error(request, 'Invalid user') return redirect('logout')
def delete_employee(request): if 'username' in request.session: if request.method == 'POST': form = DeleteEmployeeForm(request.POST) if form.is_valid(): with in_database(employee_db, write=True): id = int(form.cleaned_data['id']) emp = Employee.objects.get(id=id) emp.delete() messages.info(request, 'Employee deleted') return redirect('menu') else: messages.error(request, 'Invalid form') return redirect('menu') else: form = DeleteEmployeeForm() return render(request, 'delete_employee.html', { 'title': 'Delete Employee', 'form': form }) else: messages.error(request, 'Invalid user') return redirect('logout')
def delete(self, request, pk, company_name, format=None): with in_database(company_name, write=True): user = get_object_or_404(UserTable, pk=pk) user.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def test_cleans_up(self): starting_connections = len(connections.databases) with in_database(self.test_db_config, write=True): G(TestModel, name='Sue') ending_connections = len(connections.databases) self.assertEqual(starting_connections, ending_connections)
def test_where_db_objects_come_from(self): with in_database(self.test_db_config, write=True) as x: G(TestModel, name='Sue') database_name = TestModel.objects.get(name='Sue')._state.db expected_database_name = x.unique_db_id self.assertEqual(database_name, expected_database_name)
def test_string_identifier(self): G(TestModel, name='Arnold') with in_database('default'): count = TestModel.objects.count() expected = 1 self.assertEqual(count, expected)
def test_bad_input_value(self): with self.assertRaises(ValueError): with in_database(2): pass