def assign_group_permissions(sender, **kwargs): """" After creation of locale, we have to assign translation and management permissions to groups of translators and managers assigned to locale. """ if kwargs['raw'] or not kwargs['created']: return instance = kwargs['instance'] try: locale_ct = ContentType.objects.get(app_label='base', model='locale') can_translate = Permission.objects.get(content_type=locale_ct, codename='can_translate_locale') can_manage = Permission.objects.get(content_type=locale_ct, codename='can_manage_locale') GroupObjectPermission.objects.get_or_create(object_pk=instance.pk, content_type=locale_ct, group=instance.translators_group, permission=can_translate) GroupObjectPermission.objects.get_or_create(object_pk=instance.pk, content_type=locale_ct, group=instance.managers_group, permission=can_translate) GroupObjectPermission.objects.get_or_create(object_pk=instance.pk, content_type=locale_ct, group=instance.managers_group, permission=can_manage) except ObjectDoesNotExist as e: errors.send_exception(e)
def assign_project_locale_group_permissions(sender, **kwargs): """ Assign permissions group to a given ProjectLocale. """ if kwargs['raw'] or not kwargs['created']: return instance = kwargs['instance'] try: assign_group_permissions(instance, 'translators', ['can_translate_project_locale']) except ObjectDoesNotExist as e: errors.send_exception(e)
def create_locale_permissions_groups(sender, **kwargs): """ Creates translators and managers groups for a given Locale. """ instance = kwargs['instance'] if kwargs['raw'] or instance.managers_group is not None: return try: create_group(instance, 'translators', ['can_translate_locale'], '{} translators'.format(instance.code)) create_group(instance, 'managers', ['can_translate_locale', 'can_manage_locale'], '{} managers'.format(instance.code)) # noqa except ObjectDoesNotExist as e: errors.send_exception(e)
def assign_project_locale_group_permissions(sender, **kwargs): """ Assign permissions group to a given ProjectLocale. """ if kwargs["raw"] or not kwargs["created"]: return instance = kwargs["instance"] try: assign_group_permissions(instance, "translators", ["can_translate_project_locale"]) except ObjectDoesNotExist as e: errors.send_exception(e)
def assign_locale_group_permissions(sender, **kwargs): """ After creation of locale, we have to assign translation and management permissions to groups of translators and managers assigned to locale. """ if kwargs['raw'] or not kwargs['created']: return instance = kwargs['instance'] try: assign_group_permissions(instance, 'translators', ['can_translate_locale']) assign_group_permissions(instance, 'managers', ['can_translate_locale', 'can_manage_locale']) except ObjectDoesNotExist as e: errors.send_exception(e)
def create_project_locale_permissions_groups(sender, **kwargs): """ Creates translators group for a given ProjectLocale. """ instance = kwargs['instance'] if kwargs['raw'] or instance.translators_group is not None: return try: create_group(instance, 'translators', ['can_translate_project_locale'], '{}/{} translators'.format( instance.project.slug, instance.locale.code, )) except ObjectDoesNotExist as e: errors.send_exception(e)
def create_project_locale_permissions_groups(sender, **kwargs): """ Creates translators group for a given ProjectLocale. """ instance = kwargs['instance'] if kwargs['raw'] or instance.translators_group is not None: return try: create_group( instance, 'translators', ['can_translate_project_locale'], '{}/{}'.format(instance.project.slug, instance.locale.code)) except ObjectDoesNotExist as e: errors.send_exception(e)
def assign_locale_group_permissions(sender, **kwargs): """ After creation of locale, we have to assign translation and management permissions to groups of translators and managers assigned to locale. """ if kwargs["raw"] or not kwargs["created"]: return instance = kwargs["instance"] try: assign_group_permissions(instance, "translators", ["can_translate_locale"]) assign_group_permissions( instance, "managers", ["can_translate_locale", "can_manage_locale"] ) except ObjectDoesNotExist as e: errors.send_exception(e)
def create_locale_translators_group(sender, **kwargs): """ Creates respective translators group in django's permission system. Managers should be able to translate and manage locale. """ instance = kwargs['instance'] if kwargs['raw'] or instance.translators_group is not None: return try: locale_ct = ContentType.objects.get(app_label='base', model='locale') locale_group, _ = Group.objects.get_or_create(name='{} translators'.format(instance.code)) can_translate = Permission.objects.get(content_type=locale_ct, codename='can_translate_locale') locale_group.permissions.add(can_translate) instance.translators_group = locale_group except ObjectDoesNotExist as e: errors.send_exception(e)
def create_project_locale_permissions_groups(sender, **kwargs): """ Creates translators group for a given ProjectLocale. """ instance = kwargs["instance"] if kwargs["raw"] or instance.translators_group is not None: return try: create_group( instance, "translators", ["can_translate_project_locale"], "{}/{}".format(instance.project.slug, instance.locale.code), ) except ObjectDoesNotExist as e: errors.send_exception(e)
def create_locale_permissions_groups(sender, **kwargs): """ Creates translators and managers groups for a given Locale. """ instance = kwargs["instance"] if kwargs["raw"] or instance.managers_group is not None: return try: create_group(instance, "translators", ["can_translate_locale"], instance.code) create_group( instance, "managers", ["can_translate_locale", "can_manage_locale"], instance.code, ) except ObjectDoesNotExist as e: errors.send_exception(e)
def on_failure(self, exc, task_id, args, kwargs, einfo): # Celery throws away the traceback instance and creates its own, # but inspect can't process their custom class. _, _, traceback = sys.exc_info() send_exception(exc, exc_info=(einfo.type, exc, traceback))