Beispiel #1
0
    def post(self, request, *args, **kwargs):
        if not request.person:
            return HttpResponseNotFound()

        self.request.person.add_log_entry(
            "User anonymization requested", kind=LogEntryKind.NOTE, user=request.user)

        with atomic():
            from shuup.tasks.models import TaskType
            from shuup.tasks.utils import create_task
            task_type = TaskType.objects.get_or_create(
                shop=request.shop,
                identifier=GDPR_ANONYMIZE_TASK_TYPE_IDENTIFIER,
                defaults=dict(name=_("GDPR: Anonymize"))
            )[0]
            contact = get_person_contact(request.user)
            create_task(
                request.shop,
                contact,
                task_type,
                _("GDPR: Anonymize contact"),
                _("Customer ID {customer_id} requested to be anonymized.").format(**dict(customer_id=contact.id))
            )

            contact.is_active = False
            contact.save()
            request.user.is_active = False
            request.user.save()
            messages.success(request, _("Anonymization requested."))

        return HttpResponseRedirect(reverse("shuup:index"))
Beispiel #2
0
    def post(self, request, *args, **kwargs):
        if not request.person:
            return HttpResponseNotFound()

        self.request.person.add_log_entry("User anonymization requested",
                                          kind=LogEntryKind.NOTE,
                                          user=request.user)

        with atomic():
            from shuup.tasks.models import TaskType
            from shuup.tasks.utils import create_task
            task_type = TaskType.objects.get_or_create(
                shop=request.shop,
                identifier=GDPR_ANONYMIZE_TASK_TYPE_IDENTIFIER,
                defaults=dict(name=_("GDPR: Anonymize")))[0]
            contact = get_person_contact(request.user)
            create_task(
                request.shop, contact, task_type, _("GDPR: Anonymize contact"),
                _("Customer ID {customer_id} requested to be anonymized.").
                format(**dict(customer_id=contact.id)))

            contact.is_active = False
            contact.save()
            request.user.is_active = False
            request.user.save()
            messages.success(request, _("Anonymization requested."))

        return HttpResponseRedirect(reverse("shuup:index"))
Beispiel #3
0
def test_comment_visibility(admin_user):
    shop = factories.get_default_shop()

    admin_contact = get_person_contact(admin_user)

    staff_user = factories.create_random_user("en", is_staff=True)
    staff_contact = get_person_contact(staff_user)
    shop.staff_members.add(staff_user)

    normal_user = factories.create_random_user("en")
    normal_contact = get_person_contact(normal_user)

    task_type = TaskType.objects.create(name="Request", shop=shop)
    task = create_task(shop, admin_contact, task_type, "my task")

    task.comment(admin_contact, "This is only visibile for super users", TaskCommentVisibility.ADMINS_ONLY)
    task.comment(staff_contact, "This is only visibile for staff only", TaskCommentVisibility.STAFF_ONLY)
    task.comment(normal_contact, "This is visibile for everyone", TaskCommentVisibility.PUBLIC)

    # admin see all comments
    assert task.comments.for_contact(admin_contact).count() == 3
    # staff see all public + staff only
    assert task.comments.for_contact(staff_contact).count() == 2
    # normal contact see all public
    assert task.comments.for_contact(normal_contact).count() == 1
    # anonymous contact see all public
    assert task.comments.for_contact(AnonymousContact()).count() == 1
Beispiel #4
0
def test_comment_visibility(admin_user):
    shop = factories.get_default_shop()

    admin_contact = get_person_contact(admin_user)

    staff_user = factories.create_random_user("en", is_staff=True)
    staff_contact = get_person_contact(staff_user)
    shop.staff_members.add(staff_user)

    normal_user = factories.create_random_user("en")
    normal_contact = get_person_contact(normal_user)

    task_type = TaskType.objects.create(name="Request", shop=shop)
    task = create_task(shop, admin_contact, task_type, "my task")

    task.comment(admin_contact, "This is only visibile for super users", TaskCommentVisibility.ADMINS_ONLY)
    task.comment(staff_contact, "This is only visibile for staff only", TaskCommentVisibility.STAFF_ONLY)
    task.comment(normal_contact, "This is visibile for everyone", TaskCommentVisibility.PUBLIC)

    # admin see all comments
    assert task.comments.for_contact(admin_contact).count() == 3
    # staff see all public + staff only
    assert task.comments.for_contact(staff_contact).count() == 2
    # normal contact see all public
    assert task.comments.for_contact(normal_contact).count() == 1
    # anonymous contact see all public
    assert task.comments.for_contact(AnonymousContact()).count() == 1
Beispiel #5
0
def test_basic_tasks(admin_user):
    shop = factories.get_default_shop()
    contact = factories.create_random_person(shop=shop)
    # task gets created
    text = "derpy hooves"
    task_type = TaskType.objects.create(name="Request", shop=shop)
    task = create_task(shop, contact, task_type, "my task", comment=text)

    assert Task.objects.count() == 1
    assert TaskComment.objects.count() == 1
    assert TaskComment.objects.first().author == contact
    assert contact.task_comments.count() == 1
    assert not task.assigned_to
    assert task.status == TaskStatus.NEW

    # someone handles it
    admin_contact = factories.create_random_person()
    admin_contact.user = admin_user
    admin_contact.save()
    task.assign(admin_contact)
    task.refresh_from_db()

    assert task.assigned_to == admin_contact
    assert task.status == TaskStatus.IN_PROGRESS

    comment_text = "this being handled now"
    task.comment(admin_contact, comment_text)

    task.refresh_from_db()

    assert task.comments.count() == 2
    assert task.comments.last().body == comment_text

    assert TaskComment.objects.count() == 2

    task.set_in_progress()
    task.refresh_from_db()
    assert task.status == TaskStatus.IN_PROGRESS

    task.set_completed(admin_contact)
    task.refresh_from_db()
    assert task.status == TaskStatus.COMPLETED

    assert task.completed_on
    assert task.completed_by == admin_contact
Beispiel #6
0
def test_basic_tasks(admin_user):
    shop = factories.get_default_shop()
    contact = factories.create_random_person(shop=shop)
    # task gets created
    text = "derpy hooves"
    task_type = TaskType.objects.create(name="Request", shop=shop)
    task = create_task(shop, contact, task_type, "my task", comment=text)

    assert Task.objects.count() == 1
    assert TaskComment.objects.count() == 1
    assert TaskComment.objects.first().author == contact
    assert contact.task_comments.count() == 1
    assert not task.assigned_to
    assert task.status == TaskStatus.NEW

    # someone handles it
    admin_contact = factories.create_random_person()
    admin_contact.user = admin_user
    admin_contact.save()
    task.assign(admin_contact)
    task.refresh_from_db()

    assert task.assigned_to == admin_contact
    assert task.status == TaskStatus.IN_PROGRESS

    comment_text = "this being handled now"
    task.comment(admin_contact, comment_text)

    task.refresh_from_db()

    assert task.comments.count() == 2
    assert task.comments.last().body == comment_text

    assert TaskComment.objects.count() == 2

    task.set_in_progress()
    task.refresh_from_db()
    assert task.status == TaskStatus.IN_PROGRESS

    task.set_completed(admin_contact)
    task.refresh_from_db()
    assert task.status == TaskStatus.COMPLETED

    assert task.completed_on
    assert task.completed_by == admin_contact
Beispiel #7
0
def test_task_admin_search_dashboard_block(admin_user, rf):
    activate("en")
    shop = factories.get_default_shop()
    task_type = TaskType.objects.create(shop=shop, name="my task type")
    task = create_task(shop, get_person_contact(admin_user), task_type, "Test task")

    request = apply_request_middleware(rf.get("/"), shop=shop, user=admin_user)
    admin_module = TaskAdminModule()
    results = list(admin_module.get_search_results(request, "test"))
    assert len(results) == 0

    dashboard_blocks = list(admin_module.get_dashboard_blocks(request))
    assert len(dashboard_blocks) == 0

    task.assigned_to = get_person_contact(admin_user)
    task.save()
    results = list(admin_module.get_search_results(request, "test"))
    assert len(results) == 1

    dashboard_blocks = list(admin_module.get_dashboard_blocks(request))
    assert len(dashboard_blocks) == 1