Example #1
0
    def post(self, request, *args, **kwargs):
        if self.invite_web_user_form.is_valid():
            # If user exists and has already requested access, just add them to the project
            # Otherwise, send an invitation
            create_invitation = True
            data = self.invite_web_user_form.cleaned_data
            domain_request = DomainRequest.by_email(self.domain, data["email"])
            if domain_request is not None:
                domain_request.is_approved = True
                domain_request.save()
                user = CouchUser.get_by_username(domain_request.email)
                if user is not None:
                    domain_request.send_approval_email()
                    create_invitation = False
                    user.add_as_web_user(self.domain, role=data["role"],
                                         location_id=data.get("supply_point", None),
                                         program_id=data.get("program", None))
                messages.success(request, "%s added." % data["email"])
            else:
                messages.success(request, "Invitation sent to %s" % data["email"])

            if create_invitation:
                data["invited_by"] = request.couch_user.user_id
                data["invited_on"] = datetime.utcnow()
                data["domain"] = self.domain
                invite = DomainInvitation(**data)
                invite.save()
                invite.send_activation_email()
            return HttpResponseRedirect(reverse(
                ListWebUsersView.urlname,
                args=[self.domain]
            ))
        return self.get(request, *args, **kwargs)
Example #2
0
 def post(self, request, *args, **kwargs):
     if self.invite_web_user_form.is_valid():
         data = self.invite_web_user_form.cleaned_data
         # create invitation record
         data["invited_by"] = request.couch_user.user_id
         data["invited_on"] = datetime.utcnow()
         data["domain"] = self.domain
         invite = DomainInvitation(**data)
         invite.save()
         invite.send_activation_email()
         messages.success(request, "Invitation sent to %s" % invite.email)
         return HttpResponseRedirect(reverse(ListWebUsersView.urlname, args=[self.domain]))
     return self.get(request, *args, **kwargs)
Example #3
0
def reinvite_web_user(request, domain):
    invitation_id = request.POST['invite']
    try:
        invitation = DomainInvitation.get(invitation_id)
        invitation.send_activation_email()
        return json_response({'response': _("Invitation resent"), 'status': 'ok'})
    except ResourceNotFound:
        return json_response({'response': _("Error while attempting resend"), 'status': 'error'})
Example #4
0
def reinvite_web_user(request, domain):
    invitation_id = request.POST['invite']
    try:
        invitation = DomainInvitation.get(invitation_id)
        invitation.send_activation_email()
        return json_response({'response': _("Invitation resent"), 'status': 'ok'})
    except ResourceNotFound:
        return json_response({'response': _("Error while attempting resend"), 'status': 'error'})
Example #5
0
def invite_web_user(request, domain, template="users/invite_web_user.html"):
    role_choices = UserRole.role_choices(domain)
    if request.method == "POST":
        current_users = [user.username for user in WebUser.by_domain(domain)]
        pending_invites = [di.email for di in DomainInvitation.by_domain(domain)]
        form = AdminInvitesUserForm(request.POST,
            excluded_emails= current_users + pending_invites,
            role_choices=role_choices
        )
        if form.is_valid():
            data = form.cleaned_data
            # create invitation record
            data["invited_by"] = request.couch_user.user_id
            data["invited_on"] = datetime.utcnow()
            data["domain"] = domain
            invite = DomainInvitation(**data)
            invite.save()
            invite.send_activation_email()
            messages.success(request, "Invitation sent to %s" % invite.email)
            return HttpResponseRedirect(reverse("web_users", args=[domain]))
    else:
        form = AdminInvitesUserForm(role_choices=role_choices)
    context = _users_context(request, domain)
    context.update(
        registration_form=form
    )
    return render(request, template, context)
Example #6
0
def reinvite_web_user(request, domain):
    invitation_id = request.POST["invite"]
    try:
        invitation = DomainInvitation.get(invitation_id)
        invitation.invited_on = datetime.utcnow()
        invitation.save()
        invitation.send_activation_email()
        return json_response({"response": _("Invitation resent"), "status": "ok"})
    except ResourceNotFound:
        return json_response({"response": _("Error while attempting resend"), "status": "error"})
Example #7
0
def resend_pending_invitations():
    from corehq.apps.users.models import DomainInvitation
    days_to_resend = (15, 29)
    days_to_expire = 30
    domains = Domain.get_all()
    for domain in domains:
        invitations = DomainInvitation.by_domain(domain.name)
        for invitation in invitations:
            days = (datetime.now() - invitation.invited_on).days
            if days in days_to_resend:
                invitation.send_activation_email(days_to_expire - days)
Example #8
0
def resend_pending_invitations():
    from corehq.apps.users.models import DomainInvitation
    days_to_resend = (15, 29)
    days_to_expire = 30
    domains = Domain.get_all()
    for domain in domains:
        invitations = DomainInvitation.by_domain(domain.name)
        for invitation in invitations:
            days = (datetime.now() - invitation.invited_on).days
            if days in days_to_resend:
                invitation.send_activation_email(days_to_expire - days)
Example #9
0
 def invite_web_user_form(self):
     role_choices = UserRole.role_choices(self.domain)
     if self.request.method == 'POST':
         current_users = [user.username for user in WebUser.by_domain(self.domain)]
         pending_invites = [di.email for di in DomainInvitation.by_domain(self.domain)]
         return AdminInvitesUserForm(
             self.request.POST,
             excluded_emails=current_users + pending_invites,
             role_choices=role_choices,
             domain=self.domain
         )
     return AdminInvitesUserForm(role_choices=role_choices, domain=self.domain)
Example #10
0
 def invite_web_user_form(self):
     role_choices = UserRole.role_choices(self.domain)
     if self.request.method == 'POST':
         current_users = [user.username for user in WebUser.by_domain(self.domain)]
         pending_invites = [di.email for di in DomainInvitation.by_domain(self.domain)]
         return AdminInvitesUserForm(
             self.request.POST,
             excluded_emails=current_users + pending_invites,
             role_choices=role_choices,
             domain=self.domain
         )
     return AdminInvitesUserForm(role_choices=role_choices, domain=self.domain)
Example #11
0
def invite_web_user(request, domain, template="users/invite_web_user.html"):
    role_choices = UserRole.role_choices(domain)
    if request.method == "POST":
        current_users = [user.username for user in WebUser.by_domain(domain)]
        pending_invites = [di.email for di in DomainInvitation.by_domain(domain)]
        form = AdminInvitesUserForm(request.POST,
            excluded_emails= current_users + pending_invites,
            role_choices=role_choices
        )
        if form.is_valid():
            data = form.cleaned_data
            # create invitation record
            data["invited_by"] = request.couch_user.user_id
            data["invited_on"] = datetime.utcnow()
            data["domain"] = domain
            invite = DomainInvitation(**data)
            invite.save()
            invite.send_activation_email()
            messages.success(request, "Invitation sent to %s" % invite.email)
            return HttpResponseRedirect(reverse("web_users", args=[domain]))
    else:
        form = AdminInvitesUserForm(role_choices=role_choices)
    context = _users_context(request, domain)
    context.update(
        registration_form=form
    )
    return render(request, template, context)
Example #12
0
 def invite_web_user_form(self):
     role_choices = UserRole.role_choices(self.domain)
     loc = 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 DomainInvitation.by_domain(self.domain)]
         return AdminInvitesUserForm(
             self.request.POST,
             excluded_emails=current_users + pending_invites,
             role_choices=role_choices,
             domain=self.domain
         )
     return AdminInvitesUserForm(role_choices=role_choices, domain=self.domain, location=loc)
Example #13
0
 def post(self, request, *args, **kwargs):
     if self.invite_web_user_form.is_valid():
         data = self.invite_web_user_form.cleaned_data
         # create invitation record
         data["invited_by"] = request.couch_user.user_id
         data["invited_on"] = datetime.utcnow()
         data["domain"] = self.domain
         invite = DomainInvitation(**data)
         invite.save()
         invite.send_activation_email()
         messages.success(request, "Invitation sent to %s" % invite.email)
         return HttpResponseRedirect(reverse(ListWebUsersView.urlname, args=[self.domain]))
     return self.get(request, *args, **kwargs)
Example #14
0
    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 DomainInvitation.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)
Example #15
0
def web_users(request, domain, template="users/web_users.html"):
    context = _users_context(request, domain)
    user_roles = [AdminUserRole(domain=domain)]
    user_roles.extend(sorted(UserRole.by_domain(domain), key=lambda role: role.name if role.name else u'\uFFFF'))

    role_labels = {}
    for r in user_roles:
        key = 'user-role:%s' % r.get_id if r.get_id else r.get_qualified_id()
        role_labels[key] = r.name

    invitations = DomainInvitation.by_domain(domain)
    for invitation in invitations:
        invitation.role_label = role_labels.get(invitation.role, "")

    context.update({
        'user_roles': user_roles,
        'default_role': UserRole.get_default(),
        'report_list': get_possible_reports(domain),
        'invitations': invitations
    })
    return render(request, template, context)
Example #16
0
def web_users(request, domain, template="users/web_users.html"):
    context = _users_context(request, domain)
    user_roles = [AdminUserRole(domain=domain)]
    user_roles.extend(sorted(UserRole.by_domain(domain), key=lambda role: role.name if role.name else u'\uFFFF'))

    role_labels = {}
    for r in user_roles:
        key = 'user-role:%s' % r.get_id if r.get_id else r.get_qualified_id()
        role_labels[key] = r.name

    invitations = DomainInvitation.by_domain(domain)
    for invitation in invitations:
        invitation.role_label = role_labels.get(invitation.role, "")

    context.update({
        'user_roles': user_roles,
        'default_role': UserRole.get_default(),
        'report_list': get_possible_reports(domain),
        'invitations': invitations
    })
    return render(request, template, context)
Example #17
0
 def invite_web_user_form(self):
     role_choices = UserRole.role_choices(self.domain)
     loc = 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 DomainInvitation.by_domain(self.domain)
         ]
         return AdminInvitesUserForm(self.request.POST,
                                     excluded_emails=current_users +
                                     pending_invites,
                                     role_choices=role_choices,
                                     domain=self.domain)
     return AdminInvitesUserForm(role_choices=role_choices,
                                 domain=self.domain,
                                 location=loc)
Example #18
0
def delete_invitation(request, domain):
    invitation_id = request.POST["id"]
    invitation = DomainInvitation.get(invitation_id)
    invitation.delete()
    return json_response({"status": "ok"})
Example #19
0
def delete_invitation(request, domain):
    invitation_id = request.POST['invite']
    invitation = DomainInvitation.get(invitation_id)
    invitation.delete()
    return json_response({'status': 'ok'})
Example #20
0
 def invitations(self):
     invitations = DomainInvitation.by_domain(self.domain)
     for invitation in invitations:
         invitation.role_label = self.role_labels.get(invitation.role, "")
     return invitations
Example #21
0
def delete_invitation(request, domain):
    invitation_id = request.POST['invite']
    invitation = DomainInvitation.get(invitation_id)
    invitation.delete()
    return json_response({'status': 'ok'})
Example #22
0
 def invitations(self):
     invitations = DomainInvitation.by_domain(self.domain)
     for invitation in invitations:
         invitation.role_label = self.role_labels.get(invitation.role, "")
     return invitations