コード例 #1
0
 def invite_web_user_form(self):
     role_choices = _get_editable_role_choices(self.domain,
                                               self.request.couch_user,
                                               allow_admin_role=True)
     loc = None
     domain_request = DomainRequest.objects.get(
         id=self.request_id) if self.request_id else None
     initial = {
         'email': domain_request.email if domain_request else None,
     }
     if 'location_id' in self.request.GET:
         from corehq.apps.locations.models import SQLLocation
         loc = SQLLocation.objects.get(
             location_id=self.request.GET.get('location_id'))
     if self.request.method == 'POST':
         current_users = [
             user.username for user in WebUser.by_domain(self.domain)
         ]
         pending_invites = [
             di.email for di in Invitation.by_domain(self.domain)
         ]
         return AdminInvitesUserForm(self.request.POST,
                                     excluded_emails=current_users +
                                     pending_invites,
                                     role_choices=role_choices,
                                     domain=self.domain)
     return AdminInvitesUserForm(initial=initial,
                                 role_choices=role_choices,
                                 domain=self.domain,
                                 location=loc)
コード例 #2
0
def parse_web_users(domain, task=None, total_count=None):
    user_dicts = []
    max_location_length = 0
    location_cache = LocationIdToSiteCodeCache(domain)
    for n, user in enumerate(get_all_user_rows(domain, include_web_users=True, include_mobile_users=False,
                                               include_inactive=False, include_docs=True)):
        user_dict = make_web_user_dict(user, location_cache, domain)
        user_dicts.append(user_dict)
        max_location_length = max(max_location_length, len(user_dict["location_code"]))
        if task:
            DownloadBase.set_progress(task, n, total_count)
    for m, invite in enumerate(Invitation.by_domain(domain)):
        user_dict = make_invited_web_user_dict(invite, location_cache)
        user_dicts.append(user_dict)
        if task:
            DownloadBase.set_progress(task, n + m, total_count)

    user_headers = [
        'username', 'first_name', 'last_name', 'email', 'role', 'last_access_date (read only)',
        'last_login (read only)', 'status', 'remove'
    ]
    if domain_has_privilege(domain, privileges.LOCATIONS):
        user_headers.extend(json_to_headers(
            {'location_code': list(range(1, max_location_length + 1))}
        ))
    return user_headers, get_user_rows(user_dicts, user_headers)
コード例 #3
0
    def rows_for_domain(self, domain_obj):

        rows = []
        for user in get_all_user_rows(domain_obj.name,
                                      include_web_users=True,
                                      include_mobile_users=False,
                                      include_inactive=False,
                                      include_docs=True):
            user = CouchUser.wrap_correctly(user['doc'])
            domain_membership = user.get_domain_membership(domain_obj.name)
            last_accessed_domain = None
            if domain_membership:
                last_accessed_domain = domain_membership.last_accessed
            rows.append([
                user.username, user.full_name,
                user.role_label(domain_obj.name),
                self.format_date(user.last_login), last_accessed_domain,
                _('Active User')
            ] + self.domain_properties(domain_obj))
        for invite in Invitation.by_domain(domain_obj.name):
            rows.append([
                invite.email, 'N/A',
                invite.get_role_name(), 'N/A', 'N/A',
                _('Invited')
            ] + self.domain_properties(domain_obj))
        return rows
コード例 #4
0
def resend_pending_invitations():
    from corehq.apps.users.models import Invitation
    days_to_resend = (15, 29)
    days_to_expire = 30
    domains = Domain.get_all()
    for domain in domains:
        invitations = Invitation.by_domain(domain.name)
        for invitation in invitations:
            days = (datetime.utcnow() - invitation.invited_on).days
            if days in days_to_resend:
                invitation.send_activation_email(days_to_expire - days)
コード例 #5
0
ファイル: tasks.py プロジェクト: bazuzi/commcare-hq
def resend_pending_invitations():
    from corehq.apps.users.models import Invitation
    days_to_resend = (15, 29)
    days_to_expire = 30
    domains = Domain.get_all()
    for domain in domains:
        invitations = Invitation.by_domain(domain.name)
        for invitation in invitations:
            days = (datetime.utcnow() - invitation.invited_on).days
            if days in days_to_resend:
                invitation.send_activation_email(days_to_expire - days)
コード例 #6
0
ファイル: __init__.py プロジェクト: nemanja1040/commcare-hq
 def invitations(self):
     return [
         {
             "uuid": str(invitation.uuid),
             "email": invitation.email,
             "email_marked_as_bounced": bool(invitation.email_marked_as_bounced),
             "invited_on": invitation.invited_on,
             "role_label": self.role_labels.get(invitation.role, ""),
         }
         for invitation in Invitation.by_domain(self.domain)
     ]
コード例 #7
0
def parse_web_users(domain, task=None, total_count=None):
    user_dicts = []
    for n, user in enumerate(get_all_user_rows(domain, include_web_users=True, include_mobile_users=False,
                                               include_inactive=False, include_docs=True)):
        user_dict = make_web_user_dict(user, domain)
        user_dicts.append(user_dict)
        if task:
            DownloadBase.set_progress(task, n, total_count)
    for m, invite in enumerate(Invitation.by_domain(domain)):
        user_dict = make_invited_web_user_dict(invite)
        user_dicts.append(user_dict)
        if task:
            DownloadBase.set_progress(task, n + m, total_count)

    user_headers = [
        'username', 'first_name', 'last_name', 'email', 'role', 'last_access_date (read only)',
        'last_login (read only)', 'status', 'remove'
    ]
    return user_headers, get_user_rows(user_dicts, user_headers)
コード例 #8
0
ファイル: __init__.py プロジェクト: philipkaare/commcare-hq
    def invite_web_user_form(self):
        role_choices = UserRole.role_choices(self.domain)
        loc = None
        domain_request = DomainRequest.objects.get(id=self.request_id) if self.request_id else None
        initial = {"email": domain_request.email if domain_request else None}
        if "location_id" in self.request.GET:
            from corehq.apps.locations.models import SQLLocation

            loc = SQLLocation.objects.get(location_id=self.request.GET.get("location_id"))
        if self.request.method == "POST":
            current_users = [user.username for user in WebUser.by_domain(self.domain)]
            pending_invites = [di.email for di in Invitation.by_domain(self.domain)]
            return AdminInvitesUserForm(
                self.request.POST,
                excluded_emails=current_users + pending_invites,
                role_choices=role_choices,
                domain=self.domain,
            )
        return AdminInvitesUserForm(initial=initial, role_choices=role_choices, domain=self.domain, location=loc)
コード例 #9
0
ファイル: __init__.py プロジェクト: kkrampa/commcare-hq
 def invite_web_user_form(self):
     role_choices = _get_editable_role_choices(self.domain, self.request.couch_user, allow_admin_role=True)
     loc = None
     domain_request = DomainRequest.objects.get(id=self.request_id) if self.request_id else None
     initial = {
         'email': domain_request.email if domain_request else None,
     }
     if 'location_id' in self.request.GET:
         from corehq.apps.locations.models import SQLLocation
         loc = SQLLocation.objects.get(location_id=self.request.GET.get('location_id'))
     if self.request.method == 'POST':
         current_users = [user.username for user in WebUser.by_domain(self.domain)]
         pending_invites = [di.email for di in Invitation.by_domain(self.domain)]
         return AdminInvitesUserForm(
             self.request.POST,
             excluded_emails=current_users + pending_invites,
             role_choices=role_choices,
             domain=self.domain
         )
     return AdminInvitesUserForm(initial=initial, role_choices=role_choices, domain=self.domain, location=loc)
コード例 #10
0
def _get_invitations_by_filters(domain, user_filters, count_only=False):
    """
    Similar to _get_users_by_filters, but applites to invitations.

    Applies "search_string" filter to the invitations' emails. This does not
    support ES search syntax, it's just a case-insensitive substring search.
    Ignores any other filters.
    """
    filters = {}
    search_string = user_filters.get("search_string", None)
    if search_string:
        filters["email__icontains"] = search_string
    role_id = user_filters.get("role_id", None)
    if role_id:
        role = UserRole.objects.by_couch_id(role_id)
        filters["role"] = role.get_qualified_id()

    invitations = Invitation.by_domain(domain, **filters)
    if count_only:
        return invitations.count()
    return invitations
コード例 #11
0
    def rows_for_domain(self, domain_obj):
        def _get_role_name(role):
            if role:
                if role == 'admin':
                    return role
                else:
                    role_id = role[len('user-role:'):]
                    try:
                        return UserRole.get(role_id).name
                    except ResourceNotFound:
                        return _('Unknown Role')
            else:
                return 'N/A'

        rows = []
        for user in get_all_user_rows(domain_obj.name,
                                      include_web_users=True,
                                      include_mobile_users=False,
                                      include_inactive=False,
                                      include_docs=True):
            user = CouchUser.wrap_correctly(user['doc'])
            domain_membership = user.get_domain_membership(domain_obj.name)
            last_accessed_domain = None
            if domain_membership:
                last_accessed_domain = domain_membership.last_accessed
            rows.append([
                user.username, user.full_name,
                user.role_label(domain_obj.name),
                self.format_date(user.last_login), last_accessed_domain,
                _('Active User')
            ] + self.domain_properties(domain_obj))
        for invite in Invitation.by_domain(domain_obj.name):
            rows.append([
                invite.email, 'N/A',
                _get_role_name(invite.role), 'N/A', 'N/A',
                _('Invited')
            ] + self.domain_properties(domain_obj))
        return rows
コード例 #12
0
 def invitations(self):
     invitations = Invitation.by_domain(self.domain)
     for invitation in invitations:
         invitation.role_label = self.role_labels.get(invitation.role, "")
     return invitations
コード例 #13
0
 def invitations(self):
     invitations = Invitation.by_domain(self.domain)
     for invitation in invitations:
         invitation.role_label = self.role_labels.get(invitation.role, "")
     return invitations
コード例 #14
0
 def test_by_domain(self):
     self.assertEqual(len(Invitation.by_domain('domain_1')), 1)
     self.assertEqual(len(Invitation.by_domain('domain_2')), 1)
     self.assertEqual(len(Invitation.by_domain('domain_3')), 0)
コード例 #15
0
ファイル: test_models.py プロジェクト: ansarbek/commcare-hq
 def test_by_domain(self):
     self.assertEqual(len(Invitation.by_domain('domain_1')), 1)
     self.assertEqual(len(Invitation.by_domain('domain_2')), 1)
     self.assertEqual(len(Invitation.by_domain('domain_3')), 0)
コード例 #16
0
ファイル: test_models.py プロジェクト: soitun/commcare-hq
 def test_by_domain(self):
     self.assertEqual(len(Invitation.by_domain('domain_1')), 1)
     self.assertEqual(
         len(Invitation.by_domain('domain_1', is_accepted=True)), 2)
     self.assertEqual(len(Invitation.by_domain('domain_2')), 1)
     self.assertEqual(len(Invitation.by_domain('domain_3')), 0)