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]);
$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
(

View File

@ -12,6 +12,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use Illuminate\Support\Facades\Log;
use models\utils\IEntity;
use ModelSerializers\SerializerRegistry;
/**
@ -109,7 +111,10 @@ final class PagingResponse
{
if($i instanceof IEntity)
{
$start = microtime(true);
$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;
}

View File

@ -13,6 +13,7 @@
**/
use Illuminate\Support\Facades\Log;
use Libs\ModelSerializers\AbstractSerializer;
use models\main\Member;
use models\summit\Presentation;
/**
* Class AdminPresentationCSVSerializer
@ -34,8 +35,8 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
if(!$presentation instanceof Presentation) return $values;
$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;
}
@ -66,6 +67,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
$values['speaker_titles'] = "";
$values['speaker_companies'] = "";
if($presentation->getSpeakers()->count() > 0){
$speaker_ids = [];
@ -109,6 +111,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
}
}
if(isset($values['description'])){
$values['description'] = strip_tags($values['description']);
}
@ -117,6 +120,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer
}
// add video column
$values['video'] = '';
$values['public_video'] = '';

View File

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

View File

@ -14,6 +14,7 @@
use App\Facades\ResourceServerContext;
use Libs\ModelSerializers\AbstractSerializer;
use models\main\Member;
use models\summit\SummitEvent;
/**
@ -104,7 +105,8 @@ class SummitEventSerializer extends SilverStripeSerializer
* @param array $params
* @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;
if (!$event instanceof SummitEvent) return [];
@ -146,7 +148,7 @@ class SummitEventSerializer extends SilverStripeSerializer
$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['etherpad_link'] = $event->getEtherpadLink();
}

View File

@ -50,18 +50,6 @@ abstract class BrowserKitTestCase extends BaseTestCase
{
Model::unguard();
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" => 'model']);
//Mail::pretend(true);

View File

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