예제 #1
0
    def setUp(self):
        """
        Set up the environment for the test cases
        """
        super(GroupResourceTest, self).setUp()
        self.username = '******'
        self.password = '******'
        self.user = User.objects.create_superuser('tester',
                                                  '*****@*****.**', 'test')
        self.user.user_permissions.add(
            Permission.objects.get(codename="add_user"))
        self.api_client.client.login(username='******', password='******')

        #Create a group
        self.group = Group(name="God")
        self.group.save()

        #Create a permission
        self.ct = ContentType(name='test')
        self.ct.save()
        self.permission = Permission(name='Test',
                                     codename='test',
                                     content_type=self.ct)
        self.permission.save()

        self.group.permissions.add(self.permission)
예제 #2
0
 def mutate_and_get_payload(cls, root, info, **kwargs):
     app_labe = kwargs.get('app_label')
     model = kwargs.get('models')
     content_type = ContentType(app_labe=app_labe,
                                model=model)
     content_type.save()
     return CreateContentType(content_type=content_type)
예제 #3
0
 def create_user(self):
     self.user = User.objects.create_user('test', '*****@*****.**', 'test')
     self.ct = ContentType(app_label='supplies')
     self.ct.save()
     self._create_and_add_permission('view_cost', self.user)
     self._create_and_add_permission('change_fabric', self.user)
     self._create_and_add_permission('add_fabric', self.user)
     self._create_and_add_permission('add_quantity', self.user)
     self._create_and_add_permission('subtract_quantity', self.user)
예제 #4
0
    def setUp(self):
        """
        Set up dependent objects
        """
        super(ItemTest, self).setUp()

        self.ct = ContentType(app_label="po")
        self.ct.save()
        self.p = Permission(codename="add_purchaseorder", content_type=self.ct)
        self.p.save()
        self.p2 = Permission(codename="change_purchaseorder",
                             content_type=self.ct)
        self.p2.save()

        #Create the user
        self.username = '******'
        self.password = '******'
        self.user = User.objects.create_user(
            self.username, '*****@*****.**', self.password)
        self.user.save()
        self.user.user_permissions.add(self.p)
        self.user.user_permissions.add(self.p2)
        self.client.login(username=self.username, password=self.password)

        self.supplier = Supplier(**base_supplier)
        self.supplier.save()
        self.address = Address(**base_address)
        self.address.contact = self.supplier
        self.address.save()
        self.contact = SupplierContact(name='test',
                                       email='*****@*****.**',
                                       telephone=1234,
                                       primary=True)
        self.contact.supplier = self.supplier
        self.contact.save()

        self.supply = Fabric.create(**base_fabric)

        #self.supply.units = "m^2"
        self.supply.save()

        self.po = PurchaseOrder()
        self.po.employee = self.user
        self.po.supplier = self.supplier
        self.po.terms = self.supplier.terms
        self.po.vat = 7
        self.po.order_date = datetime.datetime(2014, 3, 2)
        self.po.save()

        self.item = Item(unit_cost=Decimal('13.55'),
                         quantity=Decimal('10'),
                         supply=self.supply)
        self.item.description = self.supply.description
        self.item.purchase_order = self.po
        self.item.save()
예제 #5
0
 def create_user(self):
     self.user = User.objects.create_user('test', '*****@*****.**', 'test')
     self.ct = ContentType(app_label='acknowledgements')
     self.ct.save()
     perm = Permission(content_type=self.ct, codename='change_item')
     perm.save()
     self.user.user_permissions.add(perm)
     perm = Permission(content_type=self.ct, codename='change_fabric')
     perm.save()
     self.user.user_permissions.add(perm)
     self.assertTrue(self.user.has_perm('acknowledgements.change_item'))
     return self.user
예제 #6
0
    def test_put_change_groups(self):
        """
        Tests adding a group to a user
        """
        #Create groups to be added
        group1 = Group(name="Testing")
        group1.save()

        #Create group to be removed
        group2 = Group(name='Bye')
        group2.save()
        self.user.groups.add(group2)

        #Create a permission
        ct = ContentType(name='test')
        ct.save()
        perm = Permission(codename='test', name='test', content_type=ct)
        perm.save()
        group1.permissions.add(perm)
        perm = Permission(codename='removed', name='removed', content_type=ct)
        perm.save()
        group2.permissions.add(perm)

        #Check that user has group to be removed and the permissions of that group
        self.assertEqual(self.user.groups.count(), 1)
        self.assertEqual(self.user.groups.all()[0].name, 'Bye')

        #Test the api and response
        resp = self.client.put('/api/v1/user/1/',
                               format='json',
                               data={
                                   'username': '******',
                                   'email': '*****@*****.**',
                                   'first_name': 'Charlie',
                                   'last_name': 'P',
                                   'groups': [{
                                       'id': 1,
                                       'name': 'Testing'
                                   }]
                               })
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(self.user.groups.count(), 1)
        self.assertEqual(self.user.groups.all()[0].name, 'Testing')

        #Tests the returned data
        user = resp.data
        self.assertEqual(len(user['groups']), 1)
        self.assertIn('id', user['groups'][0])
        self.assertIn('name', user['groups'][0])
    def _create_client(self):
        # create user and login
        username = '******'
        password = '******'
        hash_password = '******'

        cursor = connection.cursor()
        cursor.execute(
            'INSERT INTO auth_user SET password=%s, is_superuser=%s, username=%s,'
            ' email=%s, is_active=%s, is_staff=%s, first_name=%s, last_name=%s',
            [hash_password, 1, username, username, 1, 1, 'test', 'test'])
        cursor.close()

        user = User.objects.get(username=username)

        REGISTRY['user'] = user

        UserProfile.objects.create(user=user)
        user.profile.trading_desk.add(
            TradingDesk.objects.create(trading_desk='trading_desk'))

        group = Group(name='Ad Manager Admin')
        group.save()

        user.groups.add(group)

        content_type = ContentType(name='ad manager',
                                   app_label='dashboard',
                                   model='admanager')
        content_type.save()

        permission = Permission(name='Ad Manager Admin',
                                content_type=content_type,
                                codename='am_admin')
        permission.save()

        group.permissions.add(permission)

        # pylint: disable=no-member
        self.user = user

        client = Client()
        client.login(username=user.username, password=password)
        self.logged_in_client = client
        return user
예제 #8
0
    def setUp(self):
        """
        Set up for the Acknowledgement Test

        Objects created:
        -User
        -Customer
        -Supplier
        -Address
        -product
        -2 fabrics

        After Creating all the needed objects for the Acknowledgement, 
        test that all the objects have been made.
        """
        super(ShippingResourceTest, self).setUp()

        self.ct = ContentType(app_label="shipping")
        self.ct.save()

        #Create the user
        self.username = '******'
        self.password = '******'
        self.user = User.objects.create_user(self.username, '*****@*****.**',
                                             self.password)
        self.user.save()

        p = Permission(content_type=self.ct, codename="change_shipping")
        p.save()
        p2 = Permission(content_type=self.ct, codename="add_shipping")
        p2.save()
        self.user.user_permissions.add(p)
        self.user.user_permissions.add(p2)

        self.user.save()

        self.setup_client()

        #Create supplier, customer and addrss
        self.customer = Customer(**base_customer)
        self.customer.save()
        self.supplier = Supplier(**base_supplier)
        self.supplier.save()
        self.address = Address(address1="Jiggle", contact=self.customer)
        self.address.save()

        #Create project
        self.project = Project.objects.create(codename="Ladawan")

        #Create phase
        self.phase = Phase.objects.create(description="Phase 1/6",
                                          project=self.project)

        #Create a product to add
        self.product = Product.create(self.user, **base_product)
        self.product.save()
        self.fabric = Fabric.create(**base_fabric)
        f_data = base_fabric.copy()
        f_data["pattern"] = "Stripe"
        self.fabric2 = Fabric.create(**f_data)

        #Create acknowledgement
        ack_data = base_ack.copy()
        del ack_data['customer']
        del ack_data['items']
        del ack_data['employee']
        self.ack = Acknowledgement(**ack_data)
        self.ack.customer = self.customer
        self.ack.employee = self.user
        self.ack.save()

        #Create an item
        item_data = {
            'id': 1,
            'quantity': 1,
            'is_custom_size': True,
            'width': 1500,
            "fabric": {
                "id": 1
            }
        }
        self.item = AckItem.create(acknowledgement=self.ack, **item_data)

        #Create an item
        item_data = {
            'id': 1,
            'quantity': 2,
            'is_custom_size': True,
            'width': 1500,
            "fabric": {
                "id": 1
            }
        }
        self.item2 = AckItem.create(acknowledgement=self.ack, **item_data)
예제 #9
0
    def setUp(self):
        """
        Set up for the Estimate Test

        Objects created:
        -User
        -Customer
        -Supplier
        -Address
        -product
        -2 fabrics

        After Creating all the needed objects for the Estimate, 
        test that all the objects have been made.
        """
        super(EstimateResourceTest, self).setUp()

        # Set Base URL
        self.base_url = '{0}'.format('/api/v1/estimate/')

        self.ct = ContentType(app_label="estimates")
        self.ct.save()
        #Create the user
        self.username = '******'
        self.password = '******'
        self.user = User.objects.create_user(self.username, '*****@*****.**',
                                             self.password)
        p = Permission(content_type=self.ct, codename="change_estimate")
        p.save()
        p2 = Permission(content_type=self.ct, codename="add_estimate")
        p2.save()
        self.user.user_permissions.add(p)
        self.user.user_permissions.add(p2)

        self.user.save()

        self.setup_client()

        #Create supplier, customer and addrss
        customer = copy.deepcopy(base_customer)
        del customer['id']
        self.customer = Customer(**customer)
        self.customer.save()
        self.supplier = Supplier(**base_supplier)
        self.supplier.save()
        self.address = Address(address1="Jiggle", contact=self.customer)
        self.address.save()

        #Create a product to add
        self.product = Product.create(self.user, **base_product)
        self.product.save()

        #Create custom product
        self.custom_product = Product()
        self.custom_product.id = 10436
        self.custom_product.save()

        self.fabric = Fabric.create(**base_fabric)
        self.fabric.quantity = 26
        self.fabric.save()

        f_data = base_fabric.copy()
        f_data["pattern"] = "Stripe"
        self.fabric2 = Fabric.create(**f_data)

        #Create custom product
        self.custom_product = Product.create(self.user,
                                             description="Custom Custom",
                                             id=10436,
                                             width=0,
                                             depth=0,
                                             height=0,
                                             price=0,
                                             wholesale_price=0,
                                             retail_price=0)
        self.custom_product.id = 10436
        self.custom_product.save()

        self.image = S3Object(key='test', bucket='test')
        self.image.save()

        #Create acknowledgement
        ack_data = base_ack.copy()
        del ack_data['customer']
        del ack_data['items']
        del ack_data['employee']
        del ack_data['project']
        self.ack = Estimate(**ack_data)
        self.ack.customer = self.customer
        self.ack.employee = self.user
        self.ack.save()

        #Create an item
        item_data = {
            'id': 1,
            'quantity': 1,
            'is_custom_size': True,
            'width': 1500,
            "fabric": {
                "id": 1
            }
        }
        self.item = Item.create(estimate=self.ack, **item_data)
        item_data = {
            'is_custom': True,
            'description': 'F-04 Sofa',
            'quantity': 3
        }
        self.item2 = Item.create(estimate=self.ack, **item_data)

        #Create fake S3Objects to test files attached to acknowledgements
        self.file1 = S3Object(key='test1', bucket='test')
        self.file2 = S3Object(key='test2', bucket='test')
        self.file1.save()
        self.file2.save()
예제 #10
0
 def create_user(self):
     self.user = User.objects.create_user('test', '*****@*****.**', 'test')
     self.ct = ContentType(app_label='projects')
     self.ct.save()
     #self._create_and_add_permission('view_cost', self.user)
     self._create_and_add_permission('change_project', self.user)
예제 #11
0
    def setUp(self):
        """
        Set up dependent objects
        """
        super(PurchaseOrderTest, self).setUp()

        self.ct = ContentType(app_label="po")
        self.ct.save()
        self.p = Permission(codename="add_purchaseorder", content_type=self.ct)
        self.p.save()
        self.p2 = Permission(codename="change_purchaseorder",
                             content_type=self.ct)
        self.p2.save()
        #Create the user
        self.username = '******'
        self.password = '******'
        self.user = User.objects.create_user(
            self.username, '*****@*****.**', self.password)
        self.user.save()
        self.user.user_permissions.add(self.p)
        self.user.user_permissions.add(self.p2)
        self.client.login(username=self.username, password=self.password)
        self.client.force_authenticate(self.user)

        self.supplier = Supplier(**base_supplier)
        self.supplier.save()
        self.address = Address(**base_address)
        self.address.contact = self.supplier
        self.address.save()
        self.contact = SupplierContact(name='test',
                                       email='*****@*****.**',
                                       telephone=1234,
                                       primary=True)
        self.contact.supplier = self.supplier
        self.contact.save()

        # Create Custom Supply
        # not implemented

        # Create Fabric
        self.supply = Fabric.create(**base_fabric)

        #self.supply.units = "m^2"
        self.supply.save()
        self.supply1 = self.supply

        self.product = Product(supply=self.supply,
                               supplier=self.supplier,
                               cost=base_fabric['unit_cost'],
                               purchasing_units='m')
        self.product.save()
        self.supply2 = Fabric.create(**base_fabric2)
        self.supply2.discount = 5
        self.supply2.save()
        self.product2 = Product(supply=self.supply2,
                                supplier=self.supplier,
                                cost=base_fabric['unit_cost'])
        self.product2.save()
        self.supply1.supplier = self.supplier
        self.supply2.supplier = self.supplier

        #Create supply with no target item
        self.supply3 = Supply.objects.create(description='test supply')
        self.supply3.id = 203
        self.supply3.save()

        #Create a project
        self.project = Project()
        self.project.codename = 'MC House'
        self.project.save()

        self.po = PurchaseOrder()
        self.po.employee = self.user
        self.po.supplier = self.supplier
        self.po.terms = self.supplier.terms
        self.po.vat = 7
        self.order_date = datetime.datetime(2017,
                                            1,
                                            15,
                                            15,
                                            30,
                                            0,
                                            0,
                                            tzinfo=timezone('Asia/Bangkok'))
        self.po.order_date = self.order_date
        self.po.receive_date = datetime.datetime.now()
        self.po.save()
        #self.po.create_and_upload_pdf()

        self.item = Item.create(supplier=self.supplier,
                                id=1,
                                **base_purchase_order['items'][0])
        self.item.purchase_order = self.po
        self.item.save()

        self.po.calculate_total()
        self.po.save()