Exemplo n.º 1
0
    def delete(self, request, year_year=None, playa_event_id=None):
        log.debug('PlayaEventHandler DELETE: %s %s', year_year, playa_event_id)
        user = request.user
        if not user.get_profile().api_allowed:
            return rc_response(request, rc.BAD_REQUEST, 'User not permitted to use the API')

        if (playa_event_id):
            try:
                obj = PlayaEvent.objects.get(pk=playa_event_id)
                obj.moderation = 'R'
                obj.save()
                log.debug('Marking Event #%s rejected', playa_event_id)
                return rc_response(request, rc.DELETED, 'Event rejected #%s' % playa_event_id)
            except PlayaEvent.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Event not found #%s' % playa_event_id)
        else:
            return rc_response(request, rc.NOT_HERE, 'Event ID required')
Exemplo n.º 2
0
    def delete(self, request, year_year=None, camp_id=None):
        log.debug('ThemeCampHandler DELETE: %s %s', year_year, camp_id)
        user = request.user
        if not user.get_profile().api_allowed:
            return rc_response(request, rc.BAD_REQUEST, 'User not permitted to use the API')

        if (camp_id):
            try:
                obj = ThemeCamp.objects.get(pk=camp_id)
                obj.deleted = True
                obj.save()
                log.debug('Marking Camp #%s deleted', camp_id)
                return rc_response(request, rc.DELETED, 'Camp deleted #%s' % camp_id)
            except ThemeCamp.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Camp not found #%s' % camp_id)
        else:
            return rc_response(request, rc.NOT_HERE, 'Camp ID required')
Exemplo n.º 3
0
    def read(self, request, year_year=None):
        base = TimeStreet.objects.filter()
        if(year_year):
            try:
                year = Year.objects.get(year=year_year)
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Year not found #%s' % year_year)

            tstreet = TimeStreet.objects.filter(year=year)
            return tstreet
        else:
            return base.all()
Exemplo n.º 4
0
    def read(self, request, year_year=None, camp_id=None):
        if(year_year):
            try:
                year = Year.objects.get(year=year_year)
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Year not found #%s' % year_year)

            if(camp_id):
                camp = ThemeCamp.objects.filter(year=year,id=camp_id,list_online=True)
            else:
                camp = ThemeCamp.objects.get_and_cache(year=year,list_online=True)
            return camp
        else:
            return ThemeCamp.objects.get_and_cache(list_online=True)
Exemplo n.º 5
0
    def read(self, request, year_year=None, art_id=None):
        base = ArtInstallation.objects.filter()
        if(year_year):
            try:
                year = Year.objects.get(year=year_year)
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Year not found #%s' % year_year)

            if art_id:
                art = base.filter(year=year,id=art_id)
            else:
                art = base.filter(year=year)
            return art
        else:
            return base.all()
Exemplo n.º 6
0
    def read(self, request, year_year=None, playa_event_id=None, online_only = True):
        if(year_year):
            try:
                year = Year.objects.get(year=year_year)
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Year not found #%s' % year_year)

            kw = {}
            if online_only:
                kw['list_online'] = True

            if playa_event_id:
                kw['year'] = year
                kw['id'] = playa_event_id
                events = PlayaEvent.objects.filter(*kw)

            else:
                if(request.GET.get('start_time') and request.GET.get('end_time')):
                    event_list = Occurrence.objects.filter(start_time__gte=request.GET.get('start_time'), end_time__lte=request.GET.get('end_time')).values_list('event', flat=True)

                    kw['id__in'] = event_list
                    events = PlayaEvent.objects.filter(**kw)

                elif(request.GET.get('start_time')):
                    event_list = Occurrence.objects.filter(start_time__gte=request.GET.get('start_time')).values_list('event', flat=True)

                    kw['id__in'] = event_list
                    events = PlayaEvent.objects.filter(**kw)

                elif(request.GET.get('end_time')):
                    event_list = Occurrence.objects.filter(end_time__lte=request.GET.get('end_time')).values_list('event', flat=True)

                    kw['id__in'] = event_list
                    events = PlayaEvent.objects.filter(**kw)
                else:
                    kw['year'] = year
                    kw['moderation'] = 'A'
                    events = PlayaEvent.objects.get_and_cache(**kw)

            return events
        else:
            return PlayaEvent.objects.get_and_cache(moderation='A', list_online=True)
Exemplo n.º 7
0
    def read(self, request, year_year=None, playa_event_id=None):
        if(year_year):
            try:
                year = Year.objects.get(year=year_year)
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Year not found #%s' % year_year)

            if playa_event_id:
                events = PlayaEvent.objects.filter(year=year,id=playa_event_id, list_online=True)
            else:
                if(request.GET.get('start_time') and request.GET.get('end_time')):
                    event_list = Occurrence.objects.filter(start_time__gte=request.GET.get('start_time'), end_time__lte=request.GET.get('end_time')).values_list('event', flat=True)
                    events = PlayaEvent.objects.filter(id__in=event_list)
                elif(request.GET.get('start_time')):
                    event_list = Occurrence.objects.filter(start_time__gte=request.GET.get('start_time')).values_list('event', flat=True)
                    events = PlayaEvent.objects.filter(id__in=event_list)
                elif(request.GET.get('end_time')):
                    event_list = Occurrence.objects.filter(end_time__lte=request.GET.get('end_time')).values_list('event', flat=True)
                    events = PlayaEvent.objects.filter(id__in=event_list)
                else:
                    events = PlayaEvent.objects.get_and_cache(year=year, moderation='A', list_online=True)
            return events
        else:
            return PlayaEvent.objects.get_and_cache(moderation='A', list_online=True)
Exemplo n.º 8
0
    def _create_or_update(self, request, year_year=None, camp_id=None):
        user = request.user
        if not user.get_profile().api_allowed:
            return rc_response(request, rc.BAD_REQUEST, 'User not permitted to use the API')

        method = request.method

        if method == "PUT":
            data = request.PUT.copy()
        elif method == "POST":
            data = request.POST.copy()
        else:
            return rc_response(request, rc.BAD_REQUEST, 'Bad request method: %s' % method)

        if year_year and 'year' not in data:
            data['year'] = year_year

        if not (data and user):
            log.debug('Bad request: data=%s, user=%s', data, user)
            return rc_response(request, rc.BAD_REQUEST, 'Missing critical information')

        log.debug('data for create_or_update: %s', data)

        if camp_id:
            try:
                obj = ThemeCamp.objects.get(pk=camp_id)
                log.debug('got themecamp #%i for update', obj.id)

            except ThemeCamp.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'ThemeCamp not found #%s' % camp_id)

            # no updating the year!
            if 'year' in data:
                del data['year']

        else:
            log.debug('creating new event')
            obj = ThemeCamp()
            obj.creator = user

        # get rid of illegal-to-update attributes
        for key in ('id','pk','bm_fm_id','deleted'):
            if key in data:
                del data[key]

        # now loop through the data, updating as needed
        if 'year' in data:
            try:
                year = Year.objects.get(year=data['year'])
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such year: %s' % data['year'])

            obj.year = year

        if 'circular_street' in data:
            key = data['circular_street']
            try:
                street = CircularStreet.objects.get(pk=key)
                obj.circular_street = street
            except CircularStreet.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such CircularStreet: %s' % key)

        if 'time_street' in data:
            key = data['time_street']
            try:
                street = TimeStreet.objects.get(pk=key)
                obj.time_street = street
            except TimeStreet.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such TimeStreet: %s' % key)

        # text fields
        for key in ('name','description', 'url', 'hometown', 'location_string', 'slug'):
            if key in data:
                val = data[key]
                log.debug('setting %s=%s', key, val)
                setattr(obj, key, val)

        # booleans
        for key in ('list_online',):
            if key in data:
                val = data[key].upper()
                val = val in ('1', 'T', 'Y', 'YES', 'TRUE', 'ON')
                log.debug('setting %s=%s', key, val)
                setattr(obj, key, val)

        obj.save()

        if method == 'PUT':
            response = rc.ALL_OK

        else:
            response = rc.CREATED

        response.content = json.dumps({'pk' : obj.id})
        return response
Exemplo n.º 9
0
    def _create_or_update(self, request, year_year=None, playa_event_id=None):
        user = request.user
        if not user.get_profile().api_allowed:
            return rc_response(request, rc.BAD_REQUEST, 'User not permitted to use the API')

        method = request.method

        if method == "PUT":
            data = request.PUT.copy()
        elif method == "POST":
            data = request.POST.copy()
        else:
            return rc_response(request, rc.BAD_REQUEST, 'Bad request method: %s' % method)

        if year_year and 'year' not in data:
            data['year'] = year_year

        if not (data and user):
            log.debug('Bad request: data=%s, user=%s', data, user)
            return rc_response(request, rc.BAD_REQUEST, 'Missing critical information')

        log.debug('data for create_or_update: %s', data)

        if playa_event_id:
            try:
                obj = PlayaEvent.objects.get(pk=playa_event_id)
                log.debug('got playaevent #%i for update', obj.id)

            except PlayaEvent.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'Event not found #%s' % playa_event_id)

            # no updating the year!
            if 'year' in data:
                del data['year']

        else:
            log.debug('creating new event')
            obj = PlayaEvent()
            obj.creator = user
            if not 'event_type' in data:
                event_type = EventType.objects.get(pk=1)
            else:
                try:
                    event_type = EventType.objects.get(abbr=data['event_type'])
                except EventType.DoesNotExist:
                    return rc_response(request, rc.NOT_HERE, 'No such EventType: %s' % data['event_type'])

            obj.event_type = event_type

        # get rid of illegal-to-update attributes
        for key in ('id','pk'):
            if key in data:
                del data[key]

        # now loop through the data, updating as needed
        if 'year' in data:
            try:
                year = Year.objects.get(year=data['year'])
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such year: %s' % data['year'])

            obj.year = year

        # text fields
        for key in ('print_description', 'url', 'contact_email', 'other_location', 'slug'):
            if key in data:
                val = data[key]
                log.debug('setting %s=%s', key, val)
                setattr(obj, key, val)

        # moderation
        if 'moderation' in data:
            modkey = data['moderation'].upper()
            if modkey in ('U','A','R'):
                log.debug('setting moderation=%s', modkey)
                obj.moderation = modkey

        if 'hosted_by_camp' in data:
            key = data['hosted_by_camp']
            try:
                camp = ThemeCamp.objects.get(pk=key)
                log.debug('located at camp: %s', camp)
                obj.hosted_by_camp = camp
            except ThemeCamp.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such camp: %s' % key)

        if 'located_at_art' in data:
            key = data['located_at_art']
            try:
                art = ArtInstallation.objects.get(pk=key)
                log.debug('located at art: %s', art)
                obj.located_at_art = art
            except ArtInstallation.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such art: %s' % key)

        # booleans
        for key in ('check_location', 'all_day', 'list_online', 'list_contact_online'):
            if key in data:
                val = data[key].upper()
                val = val in ('1', 'T', 'Y', 'YES', 'TRUE', 'ON')
                log.debug('setting %s=%s', key, val)
                setattr(obj, key, val)

        obj.save()

        if method == 'PUT':
            response = rc.ALL_OK

        else:
            response = rc.CREATED

        response.content = json.dumps({'pk' : obj.id})
        return response
Exemplo n.º 10
0
    def _create_or_update(self, request, year_year=None, art_id=None):
        user = request.user
        if not user.get_profile().api_allowed:
            return rc_response(request, rc.BAD_REQUEST, 'User not permitted to use the API')

        method = request.method

        if method == "PUT":
            data = request.PUT.copy()
        elif method == "POST":
            data = request.POST.copy()
        else:
            return rc_response(request, rc.BAD_REQUEST, 'Bad request method: %s' % method)

        if year_year and 'year' not in data:
            data['year'] = year_year

        if not (data and user):
            log.debug('Bad request: data=%s, user=%s', data, user)
            return rc_response(request, rc.BAD_REQUEST, 'Missing critical information')

        log.debug('data for create_or_update: %s', data)

        obj = None

        if art_id:
            try:
                obj = ArtInstallation.objects.get(pk=art_id)
                log.debug('got art #%i for update', obj.id)

            except ArtInstallation.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'ArtInstallation not found #%s' % art_id)

            # no updating the year!
            if 'year' in data:
                del data['year']

        elif 'bm_fm_id' in data:
            log.debug('trying to get art installation from DB: bm_fm_id = %s', data['bm_fm_id'])
            try:
                obj = ArtInstallation.objects.get(bm_fm_id=int(data['bm_fm_id']))
            except ArtInstallation.DoesNotExist:
                pass

        if obj is None:
            log.debug('creating new ArtInstallation')
            obj = ArtInstallation()

        # get rid of illegal-to-update attributes
        for key in ('id','pk'):
            if key in data:
                del data[key]

        # now loop through the data, updating as needed
        if 'year' in data:
            try:
                year = Year.objects.get(year=data['year'])
            except Year.DoesNotExist:
                return rc_response(request, rc.NOT_HERE, 'No such year: %s' % data['year'])

            obj.year = year

        # text fields
        for key in ('description', 'name', 'artist', 'contact_email', 'url', 'slug', 'time_address', 'distance'):
            if key in data:
                val = data[key]
                log.debug('setting %s=%s', key, val)
                setattr(obj, key, val)

        #bm_fm_id
        if 'bm_fm_id' in data:
            obj.bm_fm_id = int(data['bm_fm_id'])

        obj.save()

        if method == 'PUT':
            response = rc.ALL_OK

        else:
            response = rc.CREATED

        response.content = json.dumps({'pk' : obj.id})
        return response