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"))
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"))
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
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
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
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
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