Esempio n. 1
0
    def test_excel_date_conversion(self):
        """Convert date from 01/01/1900 to 01-01-1900"""
        date_md_form = """
        | survey |
        |        | type     | name  | label |
        |        | today    | today | Today |
        |        | text     | name  | Name  |
        |        | date     | tdate | Date  |
        |        | start    | start |       |
        |        | end      | end   |       |
        |        | dateTime | now   | Now   |
        | choices |
        |         | list name | name   | label  |
        | settings |
        |          | form_title | form_id |
        |          | Dates      | dates   |
        """

        self._create_user_and_login()
        data = {'name': 'data'}
        survey = self.md_to_pyxform_survey(date_md_form, kwargs=data)
        survey['sms_keyword'] = survey['id_string']
        project = get_user_default_project(self.user)
        xform = XForm(created_by=self.user,
                      user=self.user,
                      xml=survey.to_xml(),
                      json=survey.to_json(),
                      project=project)
        xform.save()
        date_csv = open(os.path.join(self.fixtures_dir, 'date.csv'), 'rb')
        date_csv.seek(0)

        csv_reader = ucsv.DictReader(date_csv, encoding='utf-8-sig')
        xl_dates = []
        xl_datetime = []
        # xl dates
        for row in csv_reader:
            xl_dates.append(row.get('tdate'))
            xl_datetime.append(row.get('now'))

        csv_import.submit_csv(self.user.username, xform, date_csv)
        # converted dates
        conv_dates = [
            instance.json.get('tdate') for instance in Instance.objects.filter(
                xform=xform).order_by('date_created')
        ]
        conv_datetime = [
            instance.json.get('now') for instance in Instance.objects.filter(
                xform=xform).order_by('date_created')
        ]

        self.assertEqual(xl_dates, ['3/1/2019', '2/26/2019'])
        self.assertEqual(
            xl_datetime,
            [u'6/12/2020 13:20', u'2019-03-11T16:00:51.147+02:00'])
        self.assertEqual(
            conv_datetime,
            [u'2020-06-12T13:20:00.000000', u'2019-03-11T16:00:51.147+02:00'])
        self.assertEqual(conv_dates, ['2019-03-01', '2019-02-26'])
Esempio n. 2
0
    def test_excel_date_conversion(self):
        """Convert date from 01/01/1900 to 01-01-1900"""
        date_md_form = """
        | survey |
        |        | type     | name  | label |
        |        | today    | today | Today |
        |        | text     | name  | Name  |
        |        | date     | tdate | Date  |
        |        | start    | start |       |
        |        | end      | end   |       |
        |        | dateTime | now   | Now   |
        | choices |
        |         | list name | name   | label  |
        | settings |
        |          | form_title | form_id |
        |          | Dates      | dates   |
        """

        self._create_user_and_login()
        data = {'name': 'data'}
        survey = self.md_to_pyxform_survey(date_md_form, kwargs=data)
        survey['sms_keyword'] = survey['id_string']
        project = get_user_default_project(self.user)
        xform = XForm(created_by=self.user, user=self.user,
                      xml=survey.to_xml(), json=survey.to_json(),
                      project=project)
        xform.save()
        date_csv = open(os.path.join(
            self.fixtures_dir, 'date.csv'), 'rb')
        date_csv.seek(0)

        csv_reader = ucsv.DictReader(date_csv, encoding='utf-8-sig')
        xl_dates = []
        xl_datetime = []
        # xl dates
        for row in csv_reader:
            xl_dates.append(row.get('tdate'))
            xl_datetime.append(row.get('now'))

        csv_import.submit_csv(self.user.username, xform, date_csv)
        # converted dates
        conv_dates = [instance.json.get('tdate')
                      for instance in Instance.objects.filter(
                xform=xform).order_by('date_created')]
        conv_datetime = [instance.json.get('now')
                         for instance in Instance.objects.filter(
                xform=xform).order_by('date_created')]

        self.assertEqual(xl_dates, ['3/1/2019', '2/26/2019'])
        self.assertEqual(
            xl_datetime,
            [u'6/12/2020 13:20', u'2019-03-11T16:00:51.147+02:00'])
        self.assertEqual(
            conv_datetime,
            [u'2020-06-12T13:20:00.000000', u'2019-03-11T16:00:51.147+02:00'])
        self.assertEqual(conv_dates, ['2019-03-01', '2019-02-26'])
Esempio n. 3
0
 def get_registration_xform(self):
     """
     Gets a registration xform. (currently loaded in from fixture)
     Returns it without saving.
     """
     reg_xform = _load_registration_survey_object()
     return XForm(xml=reg_xform.to_xml())
Esempio n. 4
0
 def test_delete_instance_metadata_without_perms(self):
     user = User(username="******")
     instance = Instance()
     instance.xform = XForm()
     # user.has_perms.return_value = False
     request = MagicMock(user=user, method='DELETE')
     obj = MagicMock(content_object=instance)
     self.assertFalse(
         self.permissions.has_object_permission(request, self.view, obj))
Esempio n. 5
0
    def test_get_survey_element(self):
        """
        Test XForm.get_survey_element()
        """
        markdown_xlsform = """
        | survey |
        |        | type                   | name   | label   |
        |        | begin group            | a      | Group A |
        |        | select one fruits      | fruita | Fruit A |
        |        | select one fruity      | fruity | Fruit Y |
        |        | end group              |        |         |
        |        | begin group            | b      | Group B |
        |        | select one fruits      | fruitz | Fruit Z |
        |        | select_multiple fruity | fruitb | Fruit B |
        |        | end group              |        |         |
        | choices |
        |         | list name | name   | label  |
        |         | fruits    | orange | Orange |
        |         | fruits    | mango  | Mango  |
        |         | fruity    | orange | Orange |
        |         | fruity    | mango  | Mango  |
        """
        kwargs = {'name': 'favs', 'title': 'Fruits', 'id_string': 'favs'}
        survey = self.md_to_pyxform_survey(markdown_xlsform, kwargs)
        xform = XForm()
        xform._survey = survey  # pylint: disable=W0212

        # non existent field
        self.assertIsNone(xform.get_survey_element("non_existent"))

        # get fruita element by name
        fruita = xform.get_survey_element('fruita')
        self.assertEqual(fruita.get_abbreviated_xpath(), "a/fruita")

        # get exact choices element from choice abbreviated xpath
        fruita_o = xform.get_survey_element("a/fruita/orange")
        self.assertEqual(fruita_o.get_abbreviated_xpath(), "a/fruita/orange")

        fruity_m = xform.get_survey_element("a/fruity/mango")
        self.assertEqual(fruity_m.get_abbreviated_xpath(), "a/fruity/mango")

        fruitb_o = xform.get_survey_element("b/fruitb/orange")
        self.assertEqual(fruitb_o.get_abbreviated_xpath(), "b/fruitb/orange")

        self.assertEqual(xform.get_child_elements('NoneExistent'), [])
Esempio n. 6
0
 def test_delete_instance_metadata_without_perms(self, has_perms_mock):
     """
     Test that a user cannot delete an instance if they are not allowed
     through the XForm or the Project
     """
     has_perms_mock.return_value = False
     user = User(username="******")
     instance = Instance(user=User(username="******"))
     instance.xform = XForm()
     request = MagicMock(user=user, method='DELETE')
     obj = MagicMock(content_object=instance)
     self.assertFalse(
         self.permissions.has_object_permission(request, self.view, obj))
Esempio n. 7
0
    def test_upload_to_with_project_and_xform_instance(self):
        model_instance = Project(created_by=self.user)
        metadata = MetaData(data_type="media")
        metadata.content_object = model_instance

        filename = "filename"

        self.assertEquals(upload_to(metadata, filename),
                          "{}/{}/{}".format(self.user.username,
                                            'formid-media',
                                            filename))
        model_instance = XForm(user=self.user, created_by=self.user)
        metadata = MetaData(data_type="media")
        metadata.content_object = model_instance

        filename = "filename"

        self.assertEquals(upload_to(metadata, filename),
                          "{}/{}/{}".format(self.user.username,
                                            'formid-media',
                                            filename))
Esempio n. 8
0
 def get_simple_xform(self):
     survey_object = _load_simple_survey_object()
     return XForm(xml=survey_object.to_xml())
     i = self.get_simple_instance(custom_values)
     i.save()
     return i
Esempio n. 9
0
 def test_submit_csv_param_sanity_check(self):
     resp = csv_import.submit_csv(u'userX', XForm(), 123456)
     self.assertIsNotNone(resp.get('error'))