예제 #1
0
def _is_web_user(owner_id):
    from corehq.apps.users.models import WebUser
    try:
        document = WebUser.get_db().get(owner_id)
    except ResourceNotFound:
        document = {'doc_type': 'unknown'}
    return document.get('doc_type', None) == 'WebUser'
예제 #2
0
def _is_web_user(owner_id):
    from corehq.apps.users.models import WebUser
    try:
        document = WebUser.get_db().get(owner_id)
    except ResourceNotFound:
        document = {'doc_type': 'unknown'}
    return document.get('doc_type', None) == 'WebUser'
예제 #3
0
def _is_web_user(owner_id):
    from corehq.apps.users.models import WebUser

    try:
        document = WebUser.get_db().get(owner_id)
    except ResourceNotFound:
        document = {"doc_type": "unknown"}
    return document.get("doc_type", None) == "WebUser"
예제 #4
0
    def rendered_content(self):
        from corehq.apps.users.views.mobile.users import EditCommCareUserView
        users = get_users_by_location_id(self.config['domain'],
                                         self.config['location_id'])
        in_charges = FacilityInCharge.objects.filter(
            location=self.location
        ).values_list('user_id', flat=True)
        if self.location.parent.location_type.name == 'district':
            children = self.location.parent.get_descendants()
            availaible_in_charges = list(chain.from_iterable([
                filter(
                    lambda u: 'In Charge' in u.user_data.get('role', []),
                    get_users_by_location_id(self.config['domain'], child.location_id)
                )
                for child in children
            ]))
        else:
            availaible_in_charges = filter(
                lambda u: 'In Charge' in u.user_data.get('role', []),
                get_users_by_location_id(self.domain, self.location_id)
            )
        user_to_dict = lambda sms_user: {
            'id': sms_user.get_id,
            'full_name': sms_user.full_name,
            'phone_numbers': sms_user.phone_numbers,
            'in_charge': sms_user.get_id in in_charges,
            'location_name': sms_user.location.sql_location.name,
            'url': reverse(EditCommCareUserView.urlname, args=[self.config['domain'], sms_user.get_id])
        }

        web_users_from_extension = list(iter_docs(
            WebUser.get_db(),
            EWSExtension.objects.filter(domain=self.domain,
                                        location_id=self.location_id).values_list('user_id', flat=True)
        ))

        WebUserInfo = collections.namedtuple('WebUserInfo', 'id first_name last_name email')

        web_users = {
            WebUserInfo(
                id=web_user['_id'],
                first_name=web_user['first_name'],
                last_name=web_user['last_name'],
                email=web_user['email']
            )
            for web_user in (UserES().web_users().domain(self.config['domain']).term(
                "domain_memberships.location_id", self.location_id
            ).run().hits + web_users_from_extension)
        }

        return render_to_string('ewsghana/partials/users_tables.html', {
            'users': [user_to_dict(user) for user in users],
            'domain': self.domain,
            'location_id': self.location_id,
            'web_users': web_users,
            'district_in_charges': [user_to_dict(user) for user in availaible_in_charges]
        })
예제 #5
0
 def setUpClass(cls):
     super(TestUserLoad, cls).setUpClass()
     delete_all_docs_by_doc_type(WebUser.get_db(),
                                 ['CommCareUser', 'WebUser'])
     cls.user = CommCareUser.create(
         'test_domain',
         'commcare-user',
         '***',
         date_joined=datetime.utcnow(),
         email='*****@*****.**',
         is_active=True,
         is_staff=True,
         is_superuser=False,
     )
예제 #6
0
    def rendered_content(self):
        from corehq.apps.users.views.mobile.users import EditCommCareUserView
        users = get_users_by_location_id(self.config['domain'],
                                         self.config['location_id'])
        in_charges = FacilityInCharge.objects.filter(
            location=self.location).values_list('user_id', flat=True)
        if self.location.parent.location_type.name == 'district':
            children = self.location.parent.get_descendants()
            availaible_in_charges = list(
                chain.from_iterable([
                    filter(
                        lambda u: 'In Charge' in u.user_data.get('role', []),
                        get_users_by_location_id(self.config['domain'],
                                                 child.location_id))
                    for child in children
                ]))
        else:
            availaible_in_charges = filter(
                lambda u: 'In Charge' in u.user_data.get('role', []),
                get_users_by_location_id(self.domain, self.location_id))
        user_to_dict = lambda sms_user: {
            'id':
            sms_user.get_id,
            'full_name':
            sms_user.full_name,
            'phone_numbers':
            sms_user.phone_numbers,
            'in_charge':
            sms_user.get_id in in_charges,
            'location_name':
            sms_user.location.sql_location.name,
            'url':
            reverse(EditCommCareUserView.urlname,
                    args=[self.config['domain'], sms_user.get_id])
        }

        web_users_from_extension = list(
            iter_docs(
                WebUser.get_db(),
                EWSExtension.objects.filter(
                    domain=self.domain,
                    location_id=self.location_id).values_list('user_id',
                                                              flat=True)))

        WebUserInfo = collections.namedtuple('WebUserInfo',
                                             'id first_name last_name email')

        web_users = {
            WebUserInfo(id=web_user['_id'],
                        first_name=web_user['first_name'],
                        last_name=web_user['last_name'],
                        email=web_user['email'])
            for web_user in (UserES().web_users().domain(
                self.config['domain']).term("domain_memberships.location_id",
                                            self.location_id).run().hits +
                             web_users_from_extension)
        }

        return render_to_string(
            'ewsghana/partials/users_tables.html', {
                'users': [user_to_dict(user) for user in users],
                'domain':
                self.domain,
                'location_id':
                self.location_id,
                'web_users':
                web_users,
                'district_in_charges':
                [user_to_dict(user) for user in availaible_in_charges]
            })
예제 #7
0
def get_all_web_users_by_domain(domain):
    """Returns all WebUsers by domain"""
    from corehq.apps.users.models import WebUser
    ids = get_all_user_ids_by_domain(domain, include_mobile_users=False)
    return map(WebUser.wrap, iter_docs(WebUser.get_db(), ids))
예제 #8
0
 def setUpClass(cls):
     delete_all_docs_by_doc_type(WebUser.get_db(), ['CommCareUser', 'WebUser'])
     super(TestUserStagingTable, cls).setUpClass()
예제 #9
0
def fix_users(apps, schema_editor):
    user_ids = with_progress_bar(_get_admins_with_roles())
    iter_update(WebUser.get_db(), _remove_role, user_ids, verbose=True)
예제 #10
0
 def setUpClass(cls):
     delete_all_docs_by_doc_type(WebUser.get_db(), ['CommCareUser', 'WebUser'])
     super(TestUserStagingTable, cls).setUpClass()