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 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)
Esempio n. 3
0
	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_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_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_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)
Esempio n. 13
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)
Esempio n. 15
0
    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)
Esempio n. 16
0
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)
Esempio n. 17
0
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')
Esempio n. 18
0
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')
Esempio n. 19
0
	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)
Esempio n. 20
0
 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)
Esempio n. 21
0
 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)
Esempio n. 23
0
 def test_bad_input_value(self):
     with self.assertRaises(ValueError):
         with in_database(2):
             pass
 def test_bad_input_value(self):
     with self.assertRaises(ValueError):
         with in_database(2):
             pass
 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_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)
Esempio n. 27
0
 def test_string_identifier(self):
     G(TestModel, name='Arnold')
     with in_database('default'):
         count = TestModel.objects.count()
     expected = 1
     self.assertEqual(count, expected)