]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 469193: WebService function to create new products (Product.create)
authorJulien Heyman <jheyman@portaildulibre.fr>
Thu, 7 Apr 2011 18:27:53 +0000 (20:27 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Thu, 7 Apr 2011 18:27:53 +0000 (20:27 +0200)
r/a=mkanat

Bugzilla/WebService/Constants.pm
Bugzilla/WebService/Product.pm

index 0adb190ec77b90462372861927f087b637c2b2cd..f2c007965683581df5a5e38f4e185750a825604f 100644 (file)
@@ -150,6 +150,15 @@ use constant WS_ERROR_CODE => {
     # Error 605 attachment_url_disabled no longer exists.
     zero_length_file       => 606,
 
+    # Product erros are 700-800
+    product_blank_name => 700,
+    product_name_too_long => 701,
+    product_name_already_in_use => 702,
+    product_name_diff_in_case => 702,
+    product_must_have_description => 703,
+    product_must_have_version => 704,
+    product_must_define_defaultmilestone => 705,
+
     # Errors thrown by the WebService itself. The ones that are negative 
     # conform to http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
     xmlrpc_invalid_value => -32600,
index b25226a45dd25c2bea8970e28cb0022192752aef..74beb5b33bb4c0f60b25270fcab1ff32e87f87d8 100644 (file)
@@ -21,6 +21,9 @@ use strict;
 use base qw(Bugzilla::WebService);
 use Bugzilla::Product;
 use Bugzilla::User;
+use Bugzilla::Error;
+use Bugzilla::Constants;
+use Bugzilla::WebService::Constants;
 use Bugzilla::WebService::Util qw(validate);
 
 use constant READ_ONLY => qw(
@@ -79,6 +82,28 @@ sub get {
     return { products => \@products };
 }
 
+sub create {
+    my ($self, $params) = @_;
+
+    Bugzilla->login(LOGIN_REQUIRED);
+    Bugzilla->user->in_group('editcomponents') 
+        || ThrowUserError("auth_failure", { group  => "editcomponents",
+                                            action => "add",
+                                            object => "products"});
+    # Create product
+    my $product = Bugzilla::Product->create({
+        allows_unconfirmed => $params->{has_unconfirmed},
+        classification     => $params->{classification},
+        name               => $params->{name},
+        description        => $params->{description},
+        version            => $params->{version},
+        defaultmilestone   => $params->{default_milestone},
+        isactive           => $params->{is_open},
+        create_series      => $params->{create_series}
+    });
+    return { id => $self->type('int', $product->id) };
+}
+
 1;
 
 __END__
@@ -198,3 +223,93 @@ is returned.
 =item B<Errors> (none)
 
 =back
+
+=head1 Product Creation
+
+=head2 create
+
+B<EXPERIMENTAL>
+
+=over
+
+=item B<Description>
+
+This allows you to create a new product in Bugzilla.
+
+=item B<Params> 
+
+Some params must be set, or an error will be thrown. These params are marked Required.
+
+=over
+
+=item C<name>
+
+B<Required> C<string> The name of this product. Must be unique.
+
+=item C<description>
+
+B<Required> C<string> A description for this product. Allows some simple HTML.
+
+=item C<version> 
+
+B<Required> C<string> The default version for this product.
+
+=item C<has_unconfirmed> 
+
+C<boolean> Allows unconfirmed bugs in the product.
+
+=item C<classification>
+
+C<boolean> Classification wich contains the product.
+
+=item C<default_milestone> 
+
+C<boolean> The default milestone of this product.
+
+=item C<is_open> 
+
+C<boolean> True if the product is currently allowing bugs to be entered into it.
+
+=item C<create_series> 
+
+C<boolean> Set if series are creating for the new product. 
+
+=back
+
+=item B<Returns>    
+
+A hash with one element, id. This is the id of the newly-filed product.
+
+=item B<Errors>
+
+=over
+
+=item 700 (Product blank name)
+
+You must specify a non blank name for this product.
+
+=item 701 (Product name too long)
+
+The name specified for this product was longer than the maximum allowed length.
+
+=item 702 (Product name already exists)
+
+You specified the name of a product that already exists. (Product names must be globally unique in Bugzilla.)
+
+=item 703 (Product must have description)
+
+You must specify a description for this product.
+
+=item 704 (Product must have version)
+
+You must specify a version for this product.
+
+=item 705 (Product must define a defaut milestone)
+
+You must define a default milestone.
+
+=back
+
+=back
+
+=cut