/*
 * API Documentation
 *
 * Source of truth and network automation platform
 *
 * The version of the OpenAPI document: 3.1.0 (3.1)
 *
 * Generated by: https://openapi-generator.tech
 */

/// BulkWritableJobButtonRequest : Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during validation. (DRF does not do this by default; see <https://github.com/encode/django-rest-framework/issues/3144>)

#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct BulkWritableJobButtonRequest {
    #[serde(rename = "id")]
    pub id: uuid::Uuid,
    #[serde(rename = "content_types")]
    pub content_types: Vec<String>,
    #[serde(rename = "name")]
    pub name: String,
    #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
    pub enabled: Option<bool>,
    /// Jinja2 template code for button text. Reference the object as <code>{{ obj }}</code> such as <code>{{ obj.platform.name }}</code>. Buttons which render as empty text will not be displayed.
    #[serde(rename = "text")]
    pub text: String,
    #[serde(rename = "weight", skip_serializing_if = "Option::is_none")]
    pub weight: Option<i32>,
    /// Buttons with the same group will appear as a dropdown menu. Group dropdown buttons will inherit the button class from the button with the lowest weight in the group.
    #[serde(rename = "group_name", skip_serializing_if = "Option::is_none")]
    pub group_name: Option<String>,
    #[serde(rename = "button_class", skip_serializing_if = "Option::is_none")]
    pub button_class: Option<crate::models::ButtonClassEnum>,
    /// Enable confirmation pop-up box. <span class='text-danger'>WARNING: unselecting this option will allow the Job to run (and commit changes) with a single click!</span>
    #[serde(rename = "confirmation", skip_serializing_if = "Option::is_none")]
    pub confirmation: Option<bool>,
    #[serde(rename = "job")]
    pub job: Box<crate::models::BulkWritableJobButtonRequestJob>,
}

impl BulkWritableJobButtonRequest {
    /// Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during validation. (DRF does not do this by default; see <https://github.com/encode/django-rest-framework/issues/3144>)
    pub fn new(
        id: uuid::Uuid,
        content_types: Vec<String>,
        name: String,
        text: String,
        job: crate::models::BulkWritableJobButtonRequestJob,
    ) -> BulkWritableJobButtonRequest {
        BulkWritableJobButtonRequest {
            id,
            content_types,
            name,
            enabled: None,
            text,
            weight: None,
            group_name: None,
            button_class: None,
            confirmation: None,
            job: Box::new(job),
        }
    }
}
