Exemple #1
0
    def rows(self):
        def form_data_link(instance_id):
            return "<a class='ajax_dialog' href='%(url)s'>%(text)s</a>" % {
                "url": absolute_reverse('render_form_data', args=[self.domain, instance_id]),
                "text": _("View Form")
            }

        submissions = [res['_source'] for res in self.es_results.get('hits', {}).get('hits', [])]

        for form in submissions:
            uid = form["form"]["meta"]["userID"]
            username = form["form"]["meta"].get("username")
            try:
                if username not in ['demo_user', 'admin']:
                    full_name = get_cached_property(CouchUser, uid, 'full_name', expiry=7*24*60*60)
                    name = '"%s"' % full_name if full_name else ""
                else:
                    name = ""
            except (ResourceNotFound, IncompatibleDocument):
                name = "<b>[unregistered]</b>"

            init_cells = [
                form_data_link(form["_id"]),
                (username or _('No data for username')) + (" %s" % name if name else ""),
                DateTimeProperty().wrap(safe_index(form, self.time_field.split('.'))).strftime("%Y-%m-%d %H:%M:%S"),
                xmlns_to_name(self.domain, form.get("xmlns"), app_id=form.get("app_id")),
            ]
            def cell(field):
                return form["form"].get(field)
            init_cells.extend([cell(field) for field in self.other_fields])
            yield init_cells
Exemple #2
0
    def test_get_cached_full_name(self):
        testuser = CommCareUser.create('test-domain', 'testuser', 'test-pass')
        FULL_NAME = "Test User"
        testuser.set_full_name(FULL_NAME)
        testuser.save()

        cached_full_name = get_cached_property(CouchUser, testuser.get_id, 'full_name', expiry=7*24*60*60)
        self.assertEqual(FULL_NAME, cached_full_name)
Exemple #3
0
    def test_get_cached_full_name(self):
        testuser = CommCareUser.create('test-domain', 'testuser', 'test-pass')
        FULL_NAME = "Test User"
        testuser.set_full_name(FULL_NAME)
        testuser.save()

        cached_full_name = get_cached_property(CouchUser, testuser.get_id, 'full_name', expiry=7*24*60*60)
        self.assertEqual(FULL_NAME, cached_full_name)
Exemple #4
0
 def username(self):
     uid = self.form["form"]["meta"]["userID"]
     username = self.form["form"]["meta"].get("username")
     try:
         if username not in ['demo_user', 'admin']:
             full_name = get_cached_property(CouchUser, uid, 'full_name', expiry=7*24*60*60)
             name = '"%s"' % full_name if full_name else ""
         else:
             name = ""
     except (ResourceNotFound, IncompatibleDocument):
         name = "<b>[unregistered]</b>"
     return (username or _('No data for username')) + (" %s" % name if name else "")
Exemple #5
0
    def rows(self):
        def form_data_link(instance_id):
            return "<a class='ajax_dialog' target='_new' href='%(url)s'>%(text)s</a>" % {
                "url":
                absolute_reverse('render_form_data',
                                 args=[self.domain, instance_id]),
                "text":
                _("View Form")
            }

        submissions = [
            res['_source']
            for res in self.es_results.get('hits', {}).get('hits', [])
        ]

        for form in submissions:
            uid = form["form"]["meta"]["userID"]
            username = form["form"]["meta"].get("username")
            try:
                if username not in ['demo_user', 'admin']:
                    full_name = get_cached_property(CouchUser,
                                                    uid,
                                                    'full_name',
                                                    expiry=7 * 24 * 60 * 60)
                    name = '"%s"' % full_name if full_name else ""
                else:
                    name = ""
            except (ResourceNotFound, IncompatibleDocument):
                name = "<b>[unregistered]</b>"

            time = iso_string_to_datetime(
                safe_index(form, self.time_field.split('.')))
            if self.by_submission_time:
                user_time = ServerTime(time).user_time(self.timezone)
            else:
                user_time = PhoneTime(time,
                                      self.timezone).user_time(self.timezone)

            init_cells = [
                form_data_link(form["_id"]),
                (username or _('No data for username')) +
                (" %s" % name if name else ""),
                user_time.ui_string(USER_DATETIME_FORMAT_WITH_SEC),
                xmlns_to_name(self.domain,
                              form.get("xmlns"),
                              app_id=form.get("app_id")),
            ]

            def cell(field):
                return form["form"].get(field)

            init_cells.extend([cell(field) for field in self.other_fields])
            yield init_cells
Exemple #6
0
 def username(self):
     uid = self.form["form"]["meta"]["userID"]
     username = self.form["form"]["meta"].get("username")
     try:
         if username not in ['demo_user', 'admin']:
             full_name = get_cached_property(CouchUser, uid, 'full_name', expiry=7*24*60*60)
             name = '"%s"' % full_name if full_name else ""
         else:
             name = ""
     except (ResourceNotFound, IncompatibleDocument):
         name = "<b>[unregistered]</b>"
     return (username or _('No data for username')) + (" %s" % name if name else "")
Exemple #7
0
    def rows(self):
        def form_data_link(instance_id):
            return "<a class='ajax_dialog' href='%(url)s'>%(text)s</a>" % {
                "url": reverse('render_form_data',
                               args=[self.domain, instance_id]),
                "text": _("View Form")
            }

        submissions = [
            res['_source']
            for res in self.es_results.get('hits', {}).get('hits', [])
        ]

        for form in submissions:
            uid = form["form"]["meta"]["userID"]
            username = form["form"]["meta"].get("username")
            try:
                if username not in ['demo_user', 'admin']:
                    full_name = get_cached_property(CouchUser,
                                                    uid,
                                                    'full_name',
                                                    expiry=7 * 24 * 60 * 60)
                    name = '"%s"' % full_name if full_name else ""
                else:
                    name = ""
            except (ResourceNotFound, IncompatibleDocument):
                name = "<b>[unregistered]</b>"

            init_cells = [
                form_data_link(form["_id"]),
                (username or _('No data for username')) +
                (" %s" % name if name else ""),
                DateTimeProperty().wrap(
                    safe_index(form, self.time_field.split('.'))).strftime(
                        "%Y-%m-%d %H:%M:%S"),
                xmlns_to_name(self.domain,
                              form.get("xmlns"),
                              app_id=form.get("app_id")),
            ]

            def cell(field):
                return form["form"].get(field)

            init_cells.extend([cell(field) for field in self.other_fields])
            yield init_cells
Exemple #8
0
 def username(self):
     uid = self.form["form"]["meta"]["userID"]
     username = self.form["form"]["meta"].get("username")
     try:
         if username not in ['demo_user', 'admin']:
             full_name = get_cached_property(CouchUser,
                                             uid,
                                             'full_name',
                                             expiry=ONE_WEEK)
             name = '"%s"' % full_name if full_name else ""
         else:
             name = ""
     except (ResourceNotFound, IncompatibleDocument):
         name = mark_safe('<b>[unregistered]</b>')  # nosec: no user input
     username = username or _('No data for username')
     if name:
         return format_html('{} {}', username, name)
     else:
         return username
Exemple #9
0
    def rows(self):
        def form_data_link(instance_id):
            return "<a class='ajax_dialog' href='%(url)s'>%(text)s</a>" % {
                "url": reverse('render_form_data', args=[self.domain, instance_id]),
                "text": _("View Form")
            }

        submissions = [res['_source'] for res in self.es_results.get('hits', {}).get('hits', [])]

        for form in submissions:
            uid = form["form"]["meta"]["userID"]
            username = form["form"]["meta"].get("username")
            try:
                name = ('"%s"' % get_cached_property(CouchUser, uid, 'full_name', expiry=7*24*60*60)) \
                    if username not in ['demo_user', 'admin'] else ""
            except (ResourceNotFound, IncompatibleDocument):
                name = "<b>[unregistered]</b>"

            yield [
                form_data_link(form["_id"]),
                (username or _('No data for username')) + (" %s" % name if name else ""),
                datetime.strptime(form["form"]["meta"]["timeEnd"], '%Y-%m-%dT%H:%M:%SZ').strftime("%Y-%m-%d %H:%M:%S"),
                xmlns_to_name(self.domain, form.get("xmlns"), app_id=form.get("app_id")),
            ]