Activities CSV

Fix performance issue

Change-Id: I4e10c9cb6244975b58316ef58b71d9e5e889e329
Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
smarcet 2021-07-23 16:51:20 -03:00
parent 38227cd844
commit 954e445fda
7 changed files with 27 additions and 18 deletions

View File

@ -141,7 +141,15 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController
$response = $strategy->getEvents(['summit_id' => $summit_id]); $response = $strategy->getEvents(['summit_id' => $summit_id]);
$filename = "activities-" . date('Ymd'); $filename = "activities-" . date('Ymd');
$list = $response->toArray(null, [], ['none'],[],SerializerRegistry::SerializerType_CSV); $list = $response->toArray(
null,
[],
['none'],
[
'current_user' => $this->resource_server_context->getCurrentUser(true)
],
SerializerRegistry::SerializerType_CSV
);
return $this->export return $this->export
( (

View File

@ -12,6 +12,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Support\Facades\Log;
use models\utils\IEntity; use models\utils\IEntity;
use ModelSerializers\SerializerRegistry; use ModelSerializers\SerializerRegistry;
/** /**
@ -109,7 +111,10 @@ final class PagingResponse
{ {
if($i instanceof IEntity) if($i instanceof IEntity)
{ {
$start = microtime(true);
$i = SerializerRegistry::getInstance()->getSerializer($i, $serializer_type)->serialize($expand, $fields, $relations, $params); $i = SerializerRegistry::getInstance()->getSerializer($i, $serializer_type)->serialize($expand, $fields, $relations, $params);
$end = microtime(true);
Log::debug(sprintf("PagingResponse::toArray serialization delta %s", $end - $start));
} }
$items[] = $i; $items[] = $i;
} }

View File

@ -13,6 +13,7 @@
**/ **/
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Libs\ModelSerializers\AbstractSerializer; use Libs\ModelSerializers\AbstractSerializer;
use models\main\Member;
use models\summit\Presentation; use models\summit\Presentation;
/** /**
* Class AdminPresentationCSVSerializer * Class AdminPresentationCSVSerializer
@ -34,8 +35,8 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
if(!$presentation instanceof Presentation) return $values; if(!$presentation instanceof Presentation) return $values;
$serializerType = SerializerRegistry::SerializerType_Public; $serializerType = SerializerRegistry::SerializerType_Public;
$currentUser = $this->resource_server_context->getCurrentUser();
if(!is_null($currentUser) && $currentUser->isAdmin()){ if(isset($params['current_user']) && $params['current_user'] instanceof Member && $params['current_user']->isAdmin()){
$serializerType = SerializerRegistry::SerializerType_Private; $serializerType = SerializerRegistry::SerializerType_Private;
} }
@ -66,6 +67,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
$values['speaker_titles'] = ""; $values['speaker_titles'] = "";
$values['speaker_companies'] = ""; $values['speaker_companies'] = "";
if($presentation->getSpeakers()->count() > 0){ if($presentation->getSpeakers()->count() > 0){
$speaker_ids = []; $speaker_ids = [];
@ -109,6 +111,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
} }
} }
if(isset($values['description'])){ if(isset($values['description'])){
$values['description'] = strip_tags($values['description']); $values['description'] = strip_tags($values['description']);
} }
@ -117,6 +120,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
} }
// add video column // add video column
$values['video'] = ''; $values['video'] = '';
$values['public_video'] = ''; $values['public_video'] = '';

View File

@ -33,9 +33,11 @@ class AdminSummitEventCSVSerializer extends SummitEventSerializer
if(isset($values['description'])){ if(isset($values['description'])){
$values['description'] = strip_tags($values['description']); $values['description'] = strip_tags($values['description']);
} }
if($summit_event->hasCategory()){ if($summit_event->hasCategory()){
$values['track'] = $summit_event->getCategory()->getTitle(); $values['track'] = $summit_event->getCategory()->getTitle();
} }
return $values; return $values;
} }
} }

View File

@ -14,6 +14,7 @@
use App\Facades\ResourceServerContext; use App\Facades\ResourceServerContext;
use Libs\ModelSerializers\AbstractSerializer; use Libs\ModelSerializers\AbstractSerializer;
use models\main\Member;
use models\summit\SummitEvent; use models\summit\SummitEvent;
/** /**
@ -104,7 +105,8 @@ class SummitEventSerializer extends SilverStripeSerializer
* @param array $params * @param array $params
* @return array * @return array
*/ */
public function serialize($expand = null, array $fields = array(), array $relations = array(), array $params = array()) public function serialize(
$expand = null, array $fields = array(), array $relations = array(), array $params = array())
{ {
$event = $this->object; $event = $this->object;
if (!$event instanceof SummitEvent) return []; if (!$event instanceof SummitEvent) return [];
@ -146,7 +148,7 @@ class SummitEventSerializer extends SilverStripeSerializer
$values['current_attendance'] = $attendance; $values['current_attendance'] = $attendance;
} }
if ($event->hasAccess(ResourceServerContext::getCurrentUser())) { if (isset($params['current_user']) && $params['current_user'] instanceof Member && $event->hasAccess($params['current_user'])) {
$values['streaming_url'] = $event->getStreamingUrl(); $values['streaming_url'] = $event->getStreamingUrl();
$values['etherpad_link'] = $event->getEtherpadLink(); $values['etherpad_link'] = $event->getEtherpadLink();
} }

View File

@ -50,18 +50,6 @@ abstract class BrowserKitTestCase extends BaseTestCase
{ {
Model::unguard(); Model::unguard();
DB::setDefaultConnection("model"); DB::setDefaultConnection("model");
DB::table('Group_Members')->delete();
DB::table('Member')->delete();
DB::table('Group')->delete();
DB::table('Summit')->delete();
DB::table('SummitEventType')->delete();
DB::table('PresentationType')->delete();
DB::table('SummitAbstractLocation')->delete();
DB::table('SummitGeoLocatedLocation')->delete();
DB::table('SummitVenue')->delete();
DB::table('PresentationTrackChairView')->delete();
Artisan::call('doctrine:migrations:migrate', ["--connection" => 'config']); Artisan::call('doctrine:migrations:migrate', ["--connection" => 'config']);
Artisan::call('doctrine:migrations:migrate', ["--connection" => 'model']); Artisan::call('doctrine:migrations:migrate', ["--connection" => 'model']);
//Mail::pretend(true); //Mail::pretend(true);

View File

@ -490,7 +490,7 @@ final class OAuth2SummitEventsApiTest extends ProtectedApiTest
{ {
$params = array $params = array
( (
'id' => self::$summit->getId(), 'id' => 31,
//'expand' => 'feedback', //'expand' => 'feedback',
/*'filter' => [ /*'filter' => [
'published==1' 'published==1'