示例#1
0
def process_folder_management_form(form, current_folder_id):
    current_service.get_template_folder_with_user_permission_or_403(
        current_folder_id, current_user)
    new_folder_id = None

    if form.is_add_template_op:
        return _add_template_by_type(
            form.add_template_by_template_type.data,
            current_folder_id,
        )

    if form.is_add_folder_op:
        new_folder_id = template_folder_api_client.create_template_folder(
            current_service.id,
            name=form.get_folder_name(),
            parent_id=current_folder_id)

    if form.is_move_op:
        # if we've just made a folder, we also want to move there
        move_to_id = new_folder_id or form.move_to.data

        current_service.move_to_folder(
            ids_to_move=form.templates_and_folders.data, move_to=move_to_id)

    return redirect(request.url)
def manage_template_folder(service_id, template_folder_id):
    template_folder = current_service.get_template_folder_with_user_permission_or_403(template_folder_id, current_user)
    form = TemplateFolderForm(
        name=template_folder['name'],
        users_with_permission=template_folder.get('users_with_permission', None),
        all_service_users=[user for user in current_service.active_users if user.id != current_user.id]
    )
    if form.validate_on_submit():
        if current_user.has_permissions("manage_service") and form.users_with_permission.all_service_users:
            users_with_permission = form.users_with_permission.data + [current_user.id]
        else:
            users_with_permission = None
        template_folder_api_client.update_template_folder(
            current_service.id,
            template_folder_id,
            name=form.name.data,
            users_with_permission=users_with_permission
        )
        return redirect(
            url_for('.choose_template', service_id=service_id, template_folder_id=template_folder_id)
        )

    return render_template(
        'views/templates/manage-template-folder.html',
        form=form,
        template_folder_path=current_service.get_template_folder_path(template_folder_id),
        current_service_id=current_service.id,
        template_folder_id=template_folder_id,
        template_type="all",
    )
示例#3
0
def delete_template_folder(service_id, template_folder_id):
    template_folder = current_service.get_template_folder_with_user_permission_or_403(
        template_folder_id, current_user)

    if len(
            current_service.get_template_folders_and_templates(
                template_type="all",
                template_folder_id=template_folder_id)) > 0:
        flash(_l("You must empty this folder before you can delete it"),
              "info")
        return redirect(
            url_for(
                ".choose_template",
                service_id=service_id,
                template_type="all",
                template_folder_id=template_folder_id,
            ))

    if request.method == "POST":

        try:
            template_folder_api_client.delete_template_folder(
                current_service.id, template_folder_id)

            return redirect(
                url_for(
                    ".choose_template",
                    service_id=service_id,
                    template_folder_id=template_folder["parent_id"],
                ))
        except HTTPError as e:
            msg = _l("Folder is not empty")
            if e.status_code == 400 and msg in e.message:
                flash(_("You must empty this folder before you can delete it"),
                      "info")
                return redirect(
                    url_for(
                        ".choose_template",
                        service_id=service_id,
                        template_type="all",
                        template_folder_id=template_folder_id,
                    ))
            else:
                abort(500, e)
    else:
        flash(
            "{} ‘{}’ {}".format(
                _l("Are you sure you want to delete the"),
                template_folder["name"],
                _l("folder?"),
            ),
            "delete",
        )
        return manage_template_folder(service_id, template_folder_id)
示例#4
0
def delete_template_folder(service_id, template_folder_id):
    template_folder = current_service.get_template_folder_with_user_permission_or_403(
        template_folder_id, current_user)

    if len(
            current_service.get_template_folders_and_templates(
                template_type="all",
                template_folder_id=template_folder_id)) > 0:
        flash("You must empty this folder before you can delete it", 'info')
        return redirect(
            url_for('.choose_template',
                    service_id=service_id,
                    template_type="all",
                    template_folder_id=template_folder_id))

    if request.method == 'POST':

        try:
            template_folder_api_client.delete_template_folder(
                current_service.id, template_folder_id)

            return redirect(
                url_for('.choose_template',
                        service_id=service_id,
                        template_folder_id=template_folder['parent_id']))
        except HTTPError as e:
            msg = "Folder is not empty"
            if e.status_code == 400 and msg in e.message:
                flash("You must empty this folder before you can delete it",
                      'info')
                return redirect(
                    url_for('.choose_template',
                            service_id=service_id,
                            template_type="all",
                            template_folder_id=template_folder_id))
            else:
                abort(500, e)
    else:
        flash(
            "Are you sure you want to delete the ‘{}’ folder?".format(
                template_folder['name']), 'delete')
        return manage_template_folder(service_id, template_folder_id)