Esempio n. 1
0
    def test_custom_field_multiple_rows(self):
        custom_field = CustomField(id='str',
                                   label='String',
                                   required=True,
                                   type='str')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_str=self.VALUE_STR_DEFAULT)
        upcf.save()

        with self.assertRaises(IntegrityError):
            upcf = UserProfileCustomField(key_name=custom_field,
                                          user=self.normal_user,
                                          value_str="my other string")
            upcf.save()
Esempio n. 2
0
    def test_edit_profile_not_req_str_change(self):
        custom_field = CustomField(id='str_not_req',
                                   label='String not required',
                                   required=False,
                                   type='str')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_str="my string")
        upcf.save()
        self.client.force_login(self.normal_user)
        post_data = {
            'organisation': self.normal_user.userprofile.organisation,
            'email': self.normal_user.email,
            'username': self.normal_user.username,
            'first_name': self.normal_user.first_name,
            'last_name': self.normal_user.last_name,
            'str_not_req': "my new string"
        }
        count_start = UserProfileCustomField.objects.all().count()
        response = self.client.post(self.url, data=post_data)
        self.assertEqual(response.status_code, 200)
        count_end = UserProfileCustomField.objects.all().count()
        self.assertEqual(count_start, count_end)

        updated_row = UserProfileCustomField.objects.get(key_name=custom_field,
                                                         user=self.normal_user)
        self.assertEqual(updated_row.value_str, "my new string")
Esempio n. 3
0
    def test_edit_profile_req_bool_no_change(self):
        custom_field = CustomField(id='bool_req',
                                   label='Boolean required',
                                   required=True,
                                   type='bool')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_bool=True)
        upcf.save()
        self.client.force_login(self.normal_user)
        post_data = {
            'organisation': self.normal_user.userprofile.organisation,
            'email': self.normal_user.email,
            'username': self.normal_user.username,
            'first_name': self.normal_user.first_name,
            'last_name': self.normal_user.last_name,
            'bool_req': True
        }
        count_start = UserProfileCustomField.objects.all().count()
        response = self.client.post(self.url, data=post_data)
        self.assertEqual(response.status_code, 200)
        count_end = UserProfileCustomField.objects.all().count()
        self.assertEqual(count_start, count_end)

        updated_row = UserProfileCustomField.objects.get(key_name=custom_field,
                                                         user=self.normal_user)
        self.assertEqual(updated_row.value_bool, True)
    def test_edit_profile_req_bool_no_change(self):
        custom_field = CustomField(id='bool_req',
                                   label='Boolean required',
                                   required=True,
                                   type='bool')
        custom_field.save()

        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.user,
                                      value_bool=True)
        upcf.save()
        post_data = self.base_data.copy()
        post_data['bool_req'] = True
        count_start = UserProfileCustomField.objects.all().count()
        response = self.api_client.post(self.url,
                                        format='json',
                                        data=post_data,
                                        authentication=self.get_credentials())
        self.assertHttpCreated(response)
        count_end = UserProfileCustomField.objects.all().count()
        self.assertEqual(count_start, count_end)

        updated_row = UserProfileCustomField.objects.get(key_name=custom_field,
                                                         user=self.user)
        self.assertEqual(updated_row.value_bool, True)
Esempio n. 5
0
 def test_wrong_type_str_in_int(self):
     custom_field = CustomField(id='int',
                                label='Integer',
                                required=True,
                                type='int')
     custom_field.save()
     with self.assertRaises(ValueError):
         UserProfileCustomField(key_name=custom_field,
                                user=self.normal_user,
                                value_int=self.VALUE_STR_DEFAULT).save()
Esempio n. 6
0
 def test_wrong_type_str_in_bool(self):
     custom_field = CustomField(id='bool',
                                label='Boolean',
                                required=True,
                                type='bool')
     custom_field.save()
     with self.assertRaises(ValidationError):
         UserProfileCustomField(key_name=custom_field,
                                user=self.normal_user,
                                value_bool=self.VALUE_STR_DEFAULT).save()
Esempio n. 7
0
    def register_form_process(self, form):
        # Create new user
        username = form.cleaned_data.get("username")
        email = form.cleaned_data.get("email")
        password = form.cleaned_data.get("password")
        first_name = form.cleaned_data.get("first_name")
        last_name = form.cleaned_data.get("last_name")
        user = User.objects.create_user(username, email, password)
        user.first_name = first_name
        user.last_name = last_name
        user.save()

        # create UserProfile record
        UserProfile.objects.create(
            user  = user,
            job_title =form.cleaned_data.get("job_title"),
            organisation =form.cleaned_data.get("organisation")
        )

        # save any custom fields
        custom_fields = CustomField.objects.all()
        for custom_field in custom_fields:
            if custom_field.type == 'int':
                profile_field = UserProfileCustomField(
                    key_name=custom_field,
                    user=user,
                    value_int=form.cleaned_data.get(custom_field.id))
            elif custom_field.type == 'bool':
                profile_field = UserProfileCustomField(
                    key_name=custom_field,
                    user=user,
                    value_bool=form.cleaned_data.get(custom_field.id))
            else:
                profile_field = UserProfileCustomField(
                    key_name=custom_field,
                    user=user,
                    value_str=form.cleaned_data.get(custom_field.id))

            if (form.cleaned_data.get(custom_field.id) is not None
                and form.cleaned_data.get(custom_field.id) != '') \
                    or custom_field.required is True:
                profile_field.save()
Esempio n. 8
0
 def test_wrong_type_int_in_str(self):
     custom_field = CustomField(id='str',
                                label='String',
                                required=True,
                                type='str')
     custom_field.save()
     upcf = UserProfileCustomField(key_name=custom_field,
                                   user=self.normal_user,
                                   value_str=123)
     upcf.save()
     self.assertEqual(123, upcf.get_value())
Esempio n. 9
0
 def test_wrong_type_int_in_bool_1(self):
     custom_field = CustomField(id='bool',
                                label='Boolean',
                                required=True,
                                type='bool')
     custom_field.save()
     upcf = UserProfileCustomField(key_name=custom_field,
                                   user=self.normal_user,
                                   value_bool=1)
     upcf.save()
     self.assertEqual(1, upcf.get_value())
Esempio n. 10
0
    def test_user_custom_field_model_name(self):
        custom_field = CustomField(id='str',
                                   label='String',
                                   required=True,
                                   type='str')
        custom_field.save()

        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_str=self.VALUE_STR_DEFAULT)
        upcf.save()
        self.assertEqual('str: demo', str(upcf))
Esempio n. 11
0
    def process_register_custom_fields(self, bundle):
        custom_fields = CustomField.objects.all()
        for custom_field in custom_fields:
            try:
                value = bundle.data[custom_field.id]
            except KeyError:
                continue

            if custom_field.type == 'int':
                profile_field = UserProfileCustomField(key_name=custom_field,
                                                       user=bundle.obj,
                                                       value_int=value)
            elif custom_field.type == 'bool':
                profile_field = UserProfileCustomField(key_name=custom_field,
                                                       user=bundle.obj,
                                                       value_bool=value)
            else:
                profile_field = UserProfileCustomField(key_name=custom_field,
                                                       user=bundle.obj,
                                                       value_str=value)
            if (value is not None
                    and value != '') \
                    or custom_field.required is True:
                profile_field.save()
Esempio n. 12
0
    def test_wrong_type_bool_in_int(self):
        custom_field = CustomField(id='int',
                                   label='Integer',
                                   required=True,
                                   type='int')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_int=True)
        upcf.save()

        self.assertEqual(True, upcf.get_value())
        upcf.value_int = False
        upcf.save()
        self.assertEqual(False, upcf.get_value())
Esempio n. 13
0
    def test_custom_field_get_value_int(self):
        custom_field = CustomField(id='int',
                                   label='Integer',
                                   required=True,
                                   type='int')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_int=123)
        upcf.save()

        self.assertEqual(upcf.get_value(), 123)
        self.assertNotEqual(upcf.get_value(), "123")
        self.assertNotEqual(upcf.get_value(), True)
        self.assertNotEqual(upcf.get_value(), False)
        self.assertNotEqual(upcf.get_value(), None)
Esempio n. 14
0
    def test_custom_field_get_value_bool(self):
        custom_field = CustomField(id='bool',
                                   label='Boolean',
                                   required=True,
                                   type='bool')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_bool=True)
        upcf.save()

        self.assertEqual(upcf.get_value(), True)
        self.assertNotEqual(upcf.get_value(), "True")
        self.assertNotEqual(upcf.get_value(), 123)
        self.assertNotEqual(upcf.get_value(), False)
        self.assertNotEqual(upcf.get_value(), None)
Esempio n. 15
0
    def test_custom_field_get_value_str(self):
        custom_field = CustomField(id='str',
                                   label='String',
                                   required=True,
                                   type='str')
        custom_field.save()

        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.normal_user,
                                      value_str=self.VALUE_STR_DEFAULT)
        upcf.save()

        self.assertEqual(upcf.get_value(), self.VALUE_STR_DEFAULT)
        self.assertNotEqual(upcf.get_value(), True)
        self.assertNotEqual(upcf.get_value(), False)
        self.assertNotEqual(upcf.get_value(), None)
        self.assertNotEqual(upcf.get_value(), 123)
Esempio n. 16
0
    def handle(self, *args, **options):

        custom_fields = CustomField.objects.all()

        with open(options['filepath'], newline='') as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                # check the user exists in db
                try:
                    user = User.objects.get(username=row.get('username'))
                except User.DoesNotExist:
                    print("user not found: ", row.get('username'))
                    continue

                # update phone no
                user_profile = UserProfile.objects.get(user=user)
                if user_profile.phone_number == "" or user_profile.phone_number is None:
                    user_profile.phone_number = row.get('phone_number')
                    user_profile.save()
                    print("%s: phone_number updated to %s" %
                          (row.get("username"), row.get('phone_number')))

                for cf in custom_fields:
                    try:
                        upcf = UserProfileCustomField.objects.get(
                            user=user, key_name=cf.id)
                    except UserProfileCustomField.DoesNotExist:
                        upcf = UserProfileCustomField(user=user, key_name=cf)
                        print("%s: adding customfield record for %s" %
                              (row.get("username"), cf.id))

                    if cf.type == 'str' and (upcf.value_str is None
                                             or upcf.value_str == ""):
                        upcf.value_str = row.get(cf.id)
                        upcf.save()
                        print("%s: %s updated to %s" %
                              (row.get("username"), cf.id, row.get(cf.id)))
                    if cf.type == 'int' and (upcf.value_int is None
                                             or upcf.value_int == ""):
                        upcf.value_int = row.get(cf.id)
                        upcf.save()
                        print("%s: %s updated to %s" %
                              (row.get("username"), cf.id, row.get(cf.id)))
    def test_edit_profile_not_req_str_change(self):
        custom_field = CustomField(id='str_not_req',
                                   label='String not required',
                                   required=False,
                                   type='str')
        custom_field.save()
        upcf = UserProfileCustomField(key_name=custom_field,
                                      user=self.user,
                                      value_str="my string")
        upcf.save()
        post_data = self.base_data.copy()
        post_data['str_not_req'] = "my new string"
        count_start = UserProfileCustomField.objects.all().count()
        response = self.api_client.post(self.url,
                                        format='json',
                                        data=post_data,
                                        authentication=self.get_credentials())
        self.assertHttpCreated(response)
        count_end = UserProfileCustomField.objects.all().count()
        self.assertEqual(count_start, count_end)

        updated_row = UserProfileCustomField.objects.get(key_name=custom_field,
                                                         user=self.user)
        self.assertEqual(updated_row.value_str, "my new string")
Esempio n. 18
0
 def test_edit_profile_req_bool_change(self):
     custom_field = CustomField(id='bool_req',
                                label='Boolean required',
                                required=True,
                                type='bool')
     custom_field.save()
     upcf = UserProfileCustomField(key_name=custom_field,
                                   user=self.normal_user,
                                   value_bool=True)
     upcf.save()
     self.client.force_login(self.normal_user)
     post_data = {
         'organisation': self.normal_user.userprofile.organisation,
         'email': self.normal_user.email,
         'username': self.normal_user.username,
         'first_name': self.normal_user.first_name,
         'last_name': self.normal_user.last_name,
         'bool_req': False
     }
     count_start = UserProfileCustomField.objects.all().count()
     self.client.post(self.url, data=post_data)
     self.assertRaises(ValidationError)
     count_end = UserProfileCustomField.objects.all().count()
     self.assertEqual(count_start, count_end)