added endpoint to delete summit by id

DELETE /api/v1/summits/{id}

Required scopes

'%s/summits/write'

Change-Id: Ic2fd1f4ca3ec612c6cc6dd3b5e5ad2ce3663627a
This commit is contained in:
Sebastian Marcet 2018-04-04 18:33:14 -03:00
parent 18bf5bfa04
commit 78db0e22ca
5 changed files with 277 additions and 21 deletions

View File

@ -13,6 +13,7 @@
* limitations under the License.
**/
use App\Models\Foundation\Summit\Events\RSVP\RSVPTemplate;
use App\Models\Foundation\Summit\TrackTagGroup;
use App\Models\Utils\TimeZoneUtils;
use DateTime;
use DateTimeZone;
@ -184,7 +185,6 @@ class Summit extends SilverstripeBaseModel
*/
private $calendar_sync_desc;
/**
* @ORM\OneToMany(targetEntity="SummitAbstractLocation", mappedBy="summit", cascade={"persist"}, orphanRemoval=true, fetch="EXTRA_LAZY")
*/
@ -206,6 +206,12 @@ class Summit extends SilverstripeBaseModel
*/
private $wifi_connections;
/**
* @ORM\OneToMany(targetEntity="App\Models\Foundation\Summit\TrackTagGroup", mappedBy="summit", cascade={"persist"}, orphanRemoval=true, fetch="EXTRA_LAZY")
* @var TrackTagGroup[]
*/
private $track_tag_groups;
/**
* @ORM\OneToMany(targetEntity="SummitRegistrationPromoCode", mappedBy="summit", cascade={"persist"}, orphanRemoval=true, fetch="EXTRA_LAZY")
* @var SummitRegistrationPromoCode[]
@ -293,16 +299,6 @@ class Summit extends SilverstripeBaseModel
*/
private $excluded_categories_for_upload_slide_decks;
/**
* @ORM\ManyToMany(targetEntity="models\main\Tag")
* @ORM\JoinTable(name="Summit_CategoryDefaultTags",
* joinColumns={@ORM\JoinColumn(name="SummitID", referencedColumnName="ID")},
* inverseJoinColumns={@ORM\JoinColumn(name="TagID", referencedColumnName="ID")}
* )
* @var Tag[]
*/
private $category_default_tags;
/**
* @return string
*/
@ -564,8 +560,8 @@ class Summit extends SilverstripeBaseModel
$this->excluded_categories_for_alternate_presentations = new ArrayCollection;
$this->excluded_categories_for_rejected_presentations = new ArrayCollection;
$this->excluded_categories_for_upload_slide_decks = new ArrayCollection;
$this->category_default_tags = new ArrayCollection;
$this->rsvp_templates = new ArrayCollection;
$this->track_tag_groups = new ArrayCollection;
}
/**
@ -1767,14 +1763,6 @@ SQL;
return $this->excluded_categories_for_upload_slide_decks->toArray();
}
/**
* @return Tag[]
*/
public function getCategoryDefaultTags()
{
return $this->category_default_tags->toArray();
}
/**
* @param SummitEventType $event_type
* @return $this

View File

@ -14,7 +14,6 @@
use Doctrine\ORM\Cache;
use models\utils\SilverstripeBaseModel;
use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity
* @ORM\Table(name="SummitWIFIConnection")

View File

@ -0,0 +1,146 @@
<?php namespace App\Models\Foundation\Summit;
/**
* Copyright 2018 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Cache;
use models\summit\SummitOwned;
use models\utils\SilverstripeBaseModel;
use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity
* @ORM\Table(name="TrackTagGroup")
* Class TrackTagGroup
* @package models\summit\TrackTagGroup
*/
class TrackTagGroup extends SilverstripeBaseModel
{
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getLabel()
{
return $this->label;
}
/**
* @param string $label
*/
public function setLabel($label)
{
$this->label = $label;
}
/**
* @return int
*/
public function getOrder()
{
return $this->order;
}
/**
* @param int $order
*/
public function setOrder($order)
{
$this->order = $order;
}
/**
* @return bool
*/
public function isMandatory()
{
return $this->is_mandatory;
}
/**
* @param bool $is_mandatory
*/
public function setIsMandatory($is_mandatory)
{
$this->is_mandatory = $is_mandatory;
}
/**
* @return TrackTagGroupAllowedTag[]
*/
public function getAllowedTags()
{
return $this->allowed_tags;
}
/**
* @param TrackTagGroupAllowedTag[] $allowed_tags
*/
public function setAllowedTags($allowed_tags)
{
$this->allowed_tags = $allowed_tags;
}
use SummitOwned;
/**
* @ORM\Column(name="Name", type="string")
* @var string
*/
private $name;
/**
* @ORM\Column(name="Label", type="string")
* @var string
*/
private $label;
/**
* @ORM\Column(name="Order", type="integer")
* @var int
*/
private $order;
/**
* @ORM\Column(name="Mandatory", type="boolean")
* @var boolean
*/
private $is_mandatory;
/**
* @ORM\OneToMany(targetEntity="TrackTagGroupAllowedTag", mappedBy="track_tag_group", cascade={"persist"}, orphanRemoval=true)
* @var TrackTagGroupAllowedTag[]
*/
private $allowed_tags;
public function __construct()
{
$this->allowed_tags = new ArrayCollection;
}
}

View File

@ -0,0 +1,95 @@
<?php namespace App\Models\Foundation\Summit;
/**
* Copyright 2018 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use App\Models\Utils\BaseEntity;
use Doctrine\ORM\Cache;
use models\main\Tag;
use models\summit\SummitOwned;
use models\utils\SilverstripeBaseModel;
use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity
* @ORM\Table(name="TrackTagGroup_AllowedTags")
* Class TrackTagGroupAllowedTag
* @package models\summit\TrackTagGroupAllowedTag
*/
class TrackTagGroupAllowedTag extends BaseEntity
{
/**
* @ORM\Column(name="IsDefault", type="boolean")
* @var boolean
*/
private $is_default;
/**
* @ORM\ManyToOne(targetEntity="models\main\Tag")
* @ORM\JoinColumn(name="TagID", referencedColumnName="ID")
* @var Tag
*/
private $tag;
/**
* @ORM\ManyToOne(targetEntity="TrackTagGroup")
* @ORM\JoinColumn(name="TrackTagGroupID", referencedColumnName="ID")
* @var TrackTagGroup
*/
private $track_tag_group;
/**
* @return bool
*/
public function isDefault()
{
return $this->is_default;
}
/**
* @param bool $is_default
*/
public function setIsDefault($is_default)
{
$this->is_default = $is_default;
}
/**
* @return Tag
*/
public function getTag()
{
return $this->tag;
}
/**
* @param Tag $tag
*/
public function setTag(Tag $tag)
{
$this->tag = $tag;
}
/**
* @return TrackTagGroup
*/
public function getTrackTagGroup()
{
return $this->track_tag_group;
}
/**
* @param TrackTagGroup $track_tag_group
*/
public function setTrackTagGroup(TrackTagGroup $track_tag_group)
{
$this->track_tag_group = $track_tag_group;
}
}

View File

@ -246,6 +246,34 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
return $summit;
}
public function testDeleteSummit(){
$summit = $this->testAddSummit();
$params = [
'id' => $summit->id
];
$headers = [
"HTTP_Authorization" => " Bearer " . $this->access_token,
"CONTENT_TYPE" => "application/json"
];
$response = $this->action(
"DELETE",
"OAuth2SummitApiController@deleteSummit",
$params,
[],
[],
[],
$headers
);
$content = $response->getContent();
$this->assertResponseStatus(204);
}
public function testGetSummitMin($summit_id = 23)
{