@classmethod
    def parse_req(self, request, rqdata, **kw):
        #~ filter = kw.get('filter',{})
        assert not 'filter' in kw
        fkw = {}
        #~ logger.info("20120118 filter is %r", filter)
        endDate = rqdata.get(constants.URL_PARAM_END_DATE, None)
        if endDate:
            d = parsedate(endDate)
            fkw.update(start_date__lte=d)
        startDate = rqdata.get(constants.URL_PARAM_START_DATE, None)
        if startDate:
            d = parsedate(startDate)
            #~ logger.info("startDate is %r", d)
            fkw.update(start_date__gte=d)
        #~ logger.info("20120118 filter is %r", filter)

        #~ subs = Subscription.objects.filter(user=request.user).values_list('calendar__id',flat=True)
        #~ filter.update(calendar__id__in=subs)

        fkw.update(event_type__is_appointment=True)

        flt = models.Q(**fkw)

        # who am i ?
        me = request.subst_user or request.user

        # show all my events
        for_me = models.Q(user__isnull=True)
        for_me |= models.Q(user=me)
        for_me |= models.Q(assigned_to=me)

        # also show events to which i am invited
        if me.partner:
            for_me = for_me | models.Q(guest__partner=me.partner)

        if False:
            # currently disabled. this is needed only when you want to
            # support private events, i.e. events which are never
            # visible to other users.

            flt = flt & for_me
        # logger.info('20140402 %s', flt)
        kw.update(filter=flt)
        #~ logger.info('20130808 %s %s', tv,me)
        return kw
Handle the request parameters issued by Ext.ensible CalendarPanel.
dataset/ETHPy150Open lsaffre/lino/lino/modlib/extensible/models.py/PanelEvents.parse_req