def handle_form(self, form, request, target): if form.instance.pk: if form.instance.parent_id != form.cleaned_data['new_parent'].pk: form.instance.move_to( form.cleaned_data['new_parent'], position='last-child') form.instance.save() if form.instance.parent_id != form.cleaned_data['new_parent'].pk: Category.objects.clear_cache() else: form.instance.insert_at(form.cleaned_data['new_parent'], position='last-child', save=True, ) Category.objects.clear_cache() if form.cleaned_data.get('copy_permissions'): form.instance.category_role_set.all().delete() copy_from = form.cleaned_data['copy_permissions'] copied_acls = [] for acl in copy_from.category_role_set.all(): copied_acls.append(RoleCategoryACL( role_id=acl.role_id, category=form.instance, category_role_id=acl.category_role_id, )) if copied_acls: RoleCategoryACL.objects.bulk_create(copied_acls) acl_version.invalidate() messages.success(request, self.message_submit % {'name': target.name})
def handle_form(self, form, request, target): if form.instance.pk: if form.instance.parent_id != form.cleaned_data['new_parent'].pk: form.instance.move_to(form.cleaned_data['new_parent'], position='last-child') form.instance.save() if form.instance.parent_id != form.cleaned_data['new_parent'].pk: Forum.objects.clear_cache() else: form.instance.insert_at(form.cleaned_data['new_parent'], position='last-child', save=True) Forum.objects.clear_cache() if form.cleaned_data.get('copy_permissions'): form.instance.forum_role_set.all().delete() copy_from = form.cleaned_data['copy_permissions'] copied_acls = [] for acl in copy_from.forum_role_set.all(): copied_acls.append( RoleForumACL(role_id=acl.role_id, forum=form.instance, forum_role_id=acl.forum_role_id)) if copied_acls: RoleForumACL.objects.bulk_create(copied_acls) acl_version.invalidate() messages.success(request, self.message_submit % {'name': target.name})
def handle(self, *args, **options): items_to_create = options['categories'] min_level = options['minlevel'] categories = Category.objects.all_categories(True) copy_acl_from = list(Category.objects.all_categories())[0] categories = categories.filter(level__gte=min_level) fake = Factory.create() message = 'Creating %s fake categories...\n' self.stdout.write(message % items_to_create) message = '\n\nSuccessfully created %s fake categories in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, items_to_create) while created_count < items_to_create: parent = random.choice(categories) new_category = Category() if random.randint(1, 100) > 75: new_category.set_name(fake.catch_phrase().title()) else: new_category.set_name(fake.street_name()) if random.randint(1, 100) > 50: if random.randint(1, 100) > 80: new_category.description = '\r\n'.join(fake.paragraphs()) else: new_category.description = fake.paragraph() new_category.insert_at(parent, position='last-child', save=True, ) copied_acls = [] for acl in copy_acl_from.category_role_set.all(): copied_acls.append(RoleCategoryACL( role_id=acl.role_id, category=new_category, category_role_id=acl.category_role_id, )) if copied_acls: RoleCategoryACL.objects.bulk_create(copied_acls) created_count += 1 show_progress( self, created_count, items_to_create, start_time) acl_version.invalidate() total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def handle_form(self, form, request, target): if form.instance.pk: if form.instance.parent_id != form.cleaned_data["new_parent"].pk: form.instance.move_to(form.cleaned_data["new_parent"], position="last-child") form.instance.save() if form.instance.parent_id != form.cleaned_data["new_parent"].pk: Forum.objects.clear_cache() else: form.instance.insert_at(form.cleaned_data["new_parent"], position="last-child", save=True) Forum.objects.clear_cache() if form.cleaned_data.get("copy_permissions"): form.instance.forum_role_set.all().delete() copy_from = form.cleaned_data["copy_permissions"] copied_acls = [] for acl in copy_from.forum_role_set.all(): copied_acls.append( RoleForumACL(role_id=acl.role_id, forum=form.instance, forum_role_id=acl.forum_role_id) ) if copied_acls: RoleForumACL.objects.bulk_create(copied_acls) acl_version.invalidate() messages.success(request, self.message_submit % target.name)
def handle(self, *args, **options): root = Category.objects.root_category() Category.objects.partial_rebuild(root.tree_id) self.stdout.write("Categories tree has been rebuild.") Category.objects.clear_cache() acl_version.invalidate() self.stdout.write("Caches have been cleared.")
def real_dispatch(self, request, target): forums = Forum.objects.all_forums() roles = ForumRole.objects.order_by('name') if not forums: messages.info(request, _("No forums exist.")) return redirect(self.root_link) choices = {} for choice in target.forums_acls.select_related('forum_role'): choices[choice.forum_id] = choice.forum_role forms = [] forms_are_valid = True for forum in forums: forum.level_range = range(forum.level - 1) FormType = RoleForumACLFormFactory(forum, roles, choices.get(forum.pk)) if request.method == 'POST': forms.append(FormType(request.POST, prefix=forum.pk)) if not forms[-1].is_valid(): forms_are_valid = False else: forms.append(FormType(prefix=forum.pk)) if request.method == 'POST' and forms_are_valid: target.forums_acls.all().delete() new_permissions = [] for form in forms: if form.cleaned_data['role']: new_permissions.append( RoleForumACL(role=target, forum=form.forum, forum_role=form.cleaned_data['role'])) if new_permissions: RoleForumACL.objects.bulk_create(new_permissions) acl_version.invalidate() message = _("Forum permissions for role " "%(name)s have been changed.") messages.success(request, message % {'name': target.name}) if 'stay' in request.POST: return redirect(request.path) else: return redirect(self.root_link) return self.render( request, { 'forms': forms, 'target': target, })
def real_dispatch(self, request, target): categories = Category.objects.all_categories() roles = CategoryRole.objects.order_by('name') if not categories: messages.info(request, _("No categories exist.")) return redirect(self.root_link) choices = {} for choice in target.categories_acls.select_related('category_role'): choices[choice.category_id] = choice.category_role forms = [] forms_are_valid = True for category in categories: category.level_range = list(range(category.level - 1)) FormType = RoleCategoryACLFormFactory(category, roles, choices.get(category.pk)) if request.method == 'POST': forms.append(FormType(request.POST, prefix=category.pk)) if not forms[-1].is_valid(): forms_are_valid = False else: forms.append(FormType(prefix=category.pk)) if request.method == 'POST' and forms_are_valid: target.categories_acls.all().delete() new_permissions = [] for form in forms: if form.cleaned_data['role']: new_permissions.append( RoleCategoryACL( role=target, category=form.category, category_role=form.cleaned_data['role'], )) if new_permissions: RoleCategoryACL.objects.bulk_create(new_permissions) acl_version.invalidate() message = _( "Category permissions for role %(name)s have been changed.") messages.success(request, message % {'name': target.name}) if 'stay' in request.POST: return redirect(request.path) else: return redirect(self.root_link) return self.render(request, { 'forms': forms, 'target': target, })
def real_dispatch(self, request, target): forums = Forum.objects.all_forums() roles = ForumRole.objects.order_by('name') if not forums: messages.info(request, _("No forums exist.")) return redirect(self.root_link) choices = {} for choice in target.forums_acls.select_related('forum_role'): choices[choice.forum_id] = choice.forum_role forms = [] forms_are_valid = True for forum in forums: forum.level_range = range(forum.level - 1) FormType = RoleForumACLFormFactory(forum, roles, choices.get(forum.pk)) if request.method == 'POST': forms.append(FormType(request.POST, prefix=forum.pk)) if not forms[-1].is_valid(): forms_are_valid = False else: forms.append(FormType(prefix=forum.pk)) if request.method == 'POST' and forms_are_valid: target.forums_acls.all().delete() new_permissions = [] for form in forms: if form.cleaned_data['role']: new_permissions.append( RoleForumACL(role=target, forum=form.forum, forum_role=form.cleaned_data['role'])) if new_permissions: RoleForumACL.objects.bulk_create(new_permissions) acl_version.invalidate() message = _("Forum permissions for role %s have been changed.") messages.success(request, message % target) if 'stay' in request.POST: return redirect(request.path) else: return redirect(self.root_link) return self.render(request, { 'forms': forms, 'target': target, })
def real_dispatch(self, request, target): forum_roles = ForumRole.objects.order_by('name') assigned_roles = {} for acl in target.forum_role_set.select_related('forum_role'): assigned_roles[acl.role_id] = acl.forum_role forms = [] forms_are_valid = True for role in Role.objects.order_by('name'): FormType = ForumRolesACLFormFactory(role, forum_roles, assigned_roles.get(role.pk)) if request.method == 'POST': forms.append(FormType(request.POST, prefix=role.pk)) if not forms[-1].is_valid(): forms_are_valid = False else: forms.append(FormType(prefix=role.pk)) if request.method == 'POST' and forms_are_valid: target.forum_role_set.all().delete() new_permissions = [] for form in forms: if form.cleaned_data['forum_role']: new_permissions.append( RoleForumACL( role=form.role, forum=target, forum_role=form.cleaned_data['forum_role'] )) if new_permissions: RoleForumACL.objects.bulk_create(new_permissions) acl_version.invalidate() message = _("Forum %(name)s permissions have been changed.") messages.success(request, message % {'name': target.name}) if 'stay' in request.POST: return redirect(request.path) else: return redirect(self.root_link) return self.render( request, { 'forms': forms, 'target': target, })
def real_dispatch(self, request, target): category_roles = CategoryRole.objects.order_by('name') assigned_roles = {} for acl in target.category_role_set.select_related('category_role'): assigned_roles[acl.role_id] = acl.category_role forms = [] forms_are_valid = True for role in Role.objects.order_by('name'): FormType = CategoryRolesACLFormFactory(role, category_roles, assigned_roles.get(role.pk)) if request.method == 'POST': forms.append(FormType(request.POST, prefix=role.pk)) if not forms[-1].is_valid(): forms_are_valid = False else: forms.append(FormType(prefix=role.pk)) if request.method == 'POST' and forms_are_valid: target.category_role_set.all().delete() new_permissions = [] for form in forms: if form.cleaned_data['category_role']: new_permissions.append( RoleCategoryACL( role=form.role, category=target, category_role=form.cleaned_data['category_role'], )) if new_permissions: RoleCategoryACL.objects.bulk_create(new_permissions) acl_version.invalidate() message = _("Category %(name)s permissions have been changed.") messages.success(request, message % {'name': target.name}) if 'stay' in request.POST: return redirect(request.path) else: return redirect(self.root_link) return self.render(request, { 'forms': forms, 'target': target, })
def delete(self, *args, **kwargs): Category.objects.clear_cache() acl_version.invalidate() return super(Category, self).delete(*args, **kwargs)
def delete(self, *args, **kwargs): acl_version.invalidate() return super(Rank, self).delete(*args, **kwargs)
def save(self, *args, **kwargs): if not self.pk: self.set_order() else: acl_version.invalidate() return super(Rank, self).save(*args, **kwargs)
def delete(self, *args, **kwargs): Forum.objects.clear_cache() acl_version.invalidate() return super(Forum, self).delete(*args, **kwargs)
def delete(self, *args, **kwargs): Category.objects.clear_cache() acl_version.invalidate() return super(Category, self).delete(*args, **kwargs)
def delete(self, *args, **kwargs): acl_version.invalidate() return super(BaseRole, self).delete(*args, **kwargs)
def save(self, *args, **kwargs): if self.pk: acl_version.invalidate() return super(BaseRole, self).save(*args, **kwargs)
def save(self, *args, **kwargs): if not self.pk: self.set_order() else: acl_version.invalidate() return super(Rank, self).save(*args, **kwargs)
def save(self, *args, **kwargs): if self.pk: acl_version.invalidate() return super(BaseRole, self).save(*args, **kwargs)
def handle(self, *args, **options): try: fake_cats_to_create = int(args[0]) except IndexError: fake_cats_to_create = 5 except ValueError: self.stderr.write("\nOptional argument should be integer.") sys.exit(1) categories = Category.objects.all_categories(True) try: min_level = int(args[1]) except (IndexError): min_level = 0 except ValueError: self.stderr.write("\nSecond optional argument should be integer.") sys.exit(1) copy_acl_from = list(Category.objects.all_categories())[0] categories = categories.filter(level__gte=min_level) fake = Factory.create() message = 'Creating %s fake categories...\n' self.stdout.write(message % fake_cats_to_create) message = '\n\nSuccessfully created %s fake categories in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, fake_cats_to_create) for i in range(fake_cats_to_create): parent = random.choice(categories) new_category = Category() if random.randint(1, 100) > 75: new_category.set_name(fake.catch_phrase().title()) else: new_category.set_name(fake.street_name()) if random.randint(1, 100) > 50: if random.randint(1, 100) > 80: new_category.description = '\r\n'.join(fake.paragraphs()) else: new_category.description = fake.paragraph() new_category.insert_at(parent, position='last-child', save=True, ) copied_acls = [] for acl in copy_acl_from.category_role_set.all(): copied_acls.append(RoleCategoryACL( role_id=acl.role_id, category=new_category, category_role_id=acl.category_role_id, )) if copied_acls: RoleCategoryACL.objects.bulk_create(copied_acls) created_count += 1 show_progress( self, created_count, fake_cats_to_create, start_time) acl_version.invalidate() total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def handle(self, *args, **options): try: fake_cats_to_create = int(args[0]) except IndexError: fake_cats_to_create = 5 except ValueError: self.stderr.write("\nOptional argument should be integer.") sys.exit(1) categories = Category.objects.all_categories(True) try: min_level = int(args[1]) except (IndexError): min_level = 0 except ValueError: self.stderr.write("\nSecond optional argument should be integer.") sys.exit(1) copy_acl_from = list(Category.objects.all_categories())[0] categories = categories.filter(level__gte=min_level) fake = Factory.create() message = 'Creating %s fake categories...\n' self.stdout.write(message % fake_cats_to_create) message = '\n\nSuccessfully created %s fake categories in %s' created_count = 0 start_time = time.time() show_progress(self, created_count, fake_cats_to_create) for i in xrange(fake_cats_to_create): parent = random.choice(categories) new_category = Category() if random.randint(1, 100) > 75: new_category.set_name(fake.catch_phrase().title()) else: new_category.set_name(fake.street_name()) if random.randint(1, 100) > 50: if random.randint(1, 100) > 80: new_category.description = '\r\n'.join(fake.paragraphs()) else: new_category.description = fake.paragraph() new_category.insert_at( parent, position='last-child', save=True, ) copied_acls = [] for acl in copy_acl_from.category_role_set.all(): copied_acls.append( RoleCategoryACL( role_id=acl.role_id, category=new_category, category_role_id=acl.category_role_id, )) if copied_acls: RoleCategoryACL.objects.bulk_create(copied_acls) created_count += 1 show_progress(self, created_count, fake_cats_to_create, start_time) acl_version.invalidate() total_time = time.time() - start_time total_humanized = time.strftime('%H:%M:%S', time.gmtime(total_time)) self.stdout.write(message % (created_count, total_humanized))
def delete(self, *args, **kwargs): Forum.objects.clear_cache() acl_version.invalidate() return super(Forum, self).delete(*args, **kwargs)