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')
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')
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()
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)
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()
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)
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)
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
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
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