diff options
author | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-06-24 02:39:11 +0200 |
---|---|---|
committer | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-06-24 02:39:11 +0200 |
commit | 8f33041e6542f12e6897ef6ed7a67c43a118c504 (patch) | |
tree | c5caf60f706dfa1043a69e135b5246bd63455aae /Bugzilla/Attachment.pm | |
parent | 0a4878ccff5b9c281b018ad6c13fa5ac40986708 (diff) | |
download | bugzilla-8f33041e6542f12e6897ef6ed7a67c43a118c504.tar.gz bugzilla-8f33041e6542f12e6897ef6ed7a67c43a118c504.tar.xz |
Bug 572602: Change the way that Bugzilla::Object determines what fields
are required for create(). It now assumes that any column that is NOT NULL
and has not DEFAULT in the database is required. We also shift the burden
of throwing errors about empty values to the validators. This fixes the bug
that Bugzilla::Bug->create() wasn't populating default values for fields
if they weren't specified in the create() parameters.
r=timello, a=mkanat
Diffstat (limited to 'Bugzilla/Attachment.pm')
-rw-r--r-- | Bugzilla/Attachment.pm | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index 33cb12bb6..930495d42 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -87,13 +87,9 @@ sub DB_COLUMNS { $dbh->sql_date_format('attachments.creation_ts', '%Y.%m.%d %H:%i') . ' AS creation_ts'; } -use constant REQUIRED_CREATE_FIELDS => qw( - bug - data - description - filename - mimetype -); +use constant REQUIRED_FIELD_MAP => { + bug_id => 'bug', +}; use constant UPDATE_COLUMNS => qw( description @@ -515,6 +511,10 @@ sub _check_bug { my $user = Bugzilla->user; $bug = ref $invocant ? $invocant->bug : $bug; + + $bug || ThrowCodeError('param_required', + { function => "$invocant->create", param => 'bug' }); + ($user->can_see_bug($bug->id) && $user->can_edit_product($bug->product_id)) || ThrowUserError("illegal_attachment_edit_bug", { bug_id => $bug->id }); @@ -526,7 +526,7 @@ sub _check_content_type { $content_type = 'text/plain' if (ref $invocant && ($invocant->isurl || $invocant->ispatch)); my $legal_types = join('|', LEGAL_CONTENT_TYPES); - if ($content_type !~ /^($legal_types)\/.+$/) { + if (!$content_type or $content_type !~ /^($legal_types)\/.+$/) { ThrowUserError("invalid_content_type", { contenttype => $content_type }); } trick_taint($content_type); |