示例#1
0
    def dispatch(self, request, *args, **kwargs):
        uuid = kwargs["uuid"]

        # Check if this code is real
        if PasswordResetCode.objects.filter(id=uuid).exists():
            self.password_reset_code = PasswordResetCode.objects.get(id=uuid)
        else:
            set_notification(request, "Invalid password reset code",
                             ALERT_DANGER)

            raise HttpRedirectException(reverse("login"),
                                        "Invalid password reset code")

        # Get the email associated with the EmailInstance associated with this PasswordResetCode
        recipient_email = self.password_reset_code.recipient_email

        # Check if that email address is associated with an Account
        if not Account.objects.filter(user__email=recipient_email).exists():
            set_notification(
                request,
                "No account with email of \"" + recipient_email + "\"",
                ALERT_DANGER)

            raise HttpRedirectException(
                reverse("login"),
                "No account with email of \"" + recipient_email + "\"")

        # Set the view's Account to that account so it can be used in the get_context_data() and post()
        self.account = Account.objects.get(user__email=recipient_email)

        return super(PasswordResetConfirmView,
                     self).dispatch(request, *args, **kwargs)
示例#2
0
    def post(self, request, uuid):
        password = request.POST.get("password", None)

        if self.password_reset_code is None:
            raise PermissionDenied

        if self.account is None:
            raise PermissionDenied

        if not password:
            set_notification(request, "Password is required", ALERT_DANGER)

            raise HttpRedirectException(
                reverse("account_manager.password_reset_confirm",
                        kwargs={"uuid": uuid}), "Password is required")

        self.account.user.set_password(password)
        self.account.user.save()

        self.password_reset_code.delete()

        set_notification(request, "Successfully updated account password",
                         ALERT_SUCCESS)

        return HttpResponseRedirect(reverse("login"))
    def get(self, request, *args, **kwargs):
        staff_member_id = kwargs["staff_member_id"]

        try:
            return super(self.__class__, self).get(request, *args, **kwargs)
        except ObjectDoesNotExist:
            set_notification(
                request, "staff_member_id of " + staff_member_id + " does not exist.", ALERT_DANGER
            )

            raise HttpRedirectException(
                reverse("staff_member_manager.browse"), "staff_member_id of " + staff_member_id + " does not exist."
            )
示例#4
0
    def get(self, request, *args, **kwargs):
        account_id = kwargs["account_id"]

        if account_id == "new":
            return super(EditView, self).get(request, *args, **kwargs)

        try:
            return super(EditView, self).get(request, *args, **kwargs)
        except ObjectDoesNotExist:
            set_notification(request, "account_id of " + account_id + " does not exist.", ALERT_DANGER)

            raise HttpRedirectException(
                reverse("account_manager.browse"), "account_id of " + account_id + " does not exist."
            )
    def get(self, *args, **kwargs):
        items = self.get_queryset()
        error_log = []
        success_log = []

        if items.count() == 0:
            set_notification(self.request,
                             "There were no staff members selected to delete",
                             ALERT_DANGER)

            raise HttpRedirectException(reverse("staff_member_manager.browse"))

        items_deleted_count = 0
        items_protected_count = 0

        for item in items:
            try:
                temp_id = item.id
                item.delete()
                items_deleted_count += 1
                success_log.append("ID " + temp_id + ": Deleted successfully")
            except ProtectedError as error:
                logger.info(str(error))
                error_log.append("ID " + item.id + ": " + (error[0]))
                items_protected_count += 1

        if items_deleted_count == 0:
            set_notification(
                self.request,
                "Failed to delete " + str(items_protected_count) +
                " staff members due to protection <br>" +
                create_notification_log(error_log, 1, ERROR_LOG), ALERT_DANGER)
        else:
            set_notification(
                self.request, "Successfully deleted " +
                str(items_deleted_count) + " staff members <br>" +
                create_notification_log(success_log, 1, SUCCESS_LOG),
                ALERT_SUCCESS)

            if len(error_log) > 0:
                set_notification(
                    self.request,
                    "Failed to delete " + str(items_protected_count) +
                    " staff members due to protection<br>" +
                    create_notification_log(error_log, 2, ERROR_LOG),
                    ALERT_DANGER)

        return HttpResponseRedirect(reverse("staff_member_manager.browse"))
示例#6
0
    def post(self, request, account_id):
        name = request.POST.get("name", None)

        if not name:
            set_notification(request, "Name is required", ALERT_DANGER)

            raise HttpRedirectException(reverse("account_manager.edit", account_id), "Name is required")

        if account_id == "new":
            account = Account.objects.create(name=name)
            account_id = account.id
            set_notification(request, "Created account \"" + account.name + "\"", ALERT_SUCCESS)
        else:
            account = Account.objects.get(id=account_id)
            account.name = name
            account.save()
            set_notification(request, "Successfully updated account", ALERT_SUCCESS)

        return HttpResponseRedirect(reverse("account_manager.edit", kwargs={"account_id": account_id}))
示例#7
0
    def post(self, request, email_id):
        name = request.POST.get("name", None)

        if not name:
            set_notification(request, "Name is required", ALERT_DANGER)

            raise HttpRedirectException(
                reverse("email_manager.edit", email_id), "Name is required")

        if email_id == "new":
            email = Email.objects.create(name=name, created_by_id=1)
            email_id = email.id
            set_notification(request, "Created email \"" + email.name + "\"",
                             ALERT_SUCCESS)
        else:
            email = Email.objects.get(id=email_id)
            email.name = name
            email.save()
            set_notification(request, "Successfully updated email",
                             ALERT_SUCCESS)

        return HttpResponseRedirect(
            reverse("email_manager.edit", kwargs={"email_id": email_id}))
示例#8
0
    def post(self, request, staff_member_id):
        username = request.POST.get("username", None)
        first_name = request.POST.get("first_name", None)
        last_name = request.POST.get("last_name", None)
        email = request.POST.get("email", None)
        is_active = request.POST.get("is_active", True)
        is_staff = request.POST.get("is_staff", True)
        is_superuser = request.POST.get("is_superuser", True)

        if not username:
            set_notification(request, "Username is required", ALERT_DANGER)

            raise HttpRedirectException(
                reverse("staff_member_manager.edit", staff_member_id),
                "Username is required")

        if not email:
            set_notification(request, "Email is required", ALERT_DANGER)

            raise HttpRedirectException(
                reverse("staff_member_manager.edit", staff_member_id),
                "Email is required")

        if staff_member_id == "new":
            user = User.objects.create(username=username,
                                       first_name=first_name,
                                       last_name=last_name,
                                       email=email,
                                       is_active=is_active,
                                       is_staff=is_staff,
                                       is_superuser=is_superuser)
            staff_member = StaffMember.objects.create(
                user=user,
                created_by=request.user.staff_member,
                updated_by=request.user.staff_member)
            staff_member_id = staff_member.id

            set_notification(
                request,
                "Created staff member \"" + staff_member.user.username + "\"",
                ALERT_SUCCESS)

            try:
                create_account_for_staff_member(staff_member)

                set_notification(
                    request, "Created account for \"" +
                    staff_member.user.username + "\"", ALERT_SUCCESS)
            except Exception as error:
                set_notification(
                    request, "Failed to create account for \"" +
                    staff_member.user.username + "\". Error: " + str(error),
                    ALERT_DANGER)
        else:
            staff_member = StaffMember.objects.get(id=staff_member_id)
            staff_member.user.username = username
            staff_member.user.first_name = first_name
            staff_member.user.last_name = last_name
            staff_member.user.email = email
            staff_member.user.is_active = is_active
            staff_member.user.is_staff = is_staff
            staff_member.user.is_superuser = is_superuser
            staff_member.user.save()
            staff_member.updated_by = request.user.staff_member
            staff_member.save()

            set_notification(
                request, "Successfully updated staff member \"" +
                staff_member.user.username + "\"", ALERT_SUCCESS)

        return HttpResponseRedirect(
            reverse("staff_member_manager.details",
                    kwargs={"staff_member_id": staff_member_id}))
示例#9
0
 def test_2(self):
     exc = HttpRedirectException("/")
     result = RedirectionMiddleware.process_exception(self.request, exc)
     self.assertEqual(isinstance(result, HttpResponseRedirect), True)
     self.assertEqual(result.status_code, 302)
     self.assertEqual(result.url, "/")