def eventHandler(request, event_id=None): if request.method == 'GET': query = request.GET.get('query', None) if query: limit = 50 param = request.GET.get('param') if param == "artist": # search events by artist name events = Event.objects.select_related().prefetch_related().filter(artists__name__icontains=query).order_by("on_date")[:limit] elif param == "combined": try: filter = request.GET.get('filter') #print "date_from" , request.GET.get('date_from') date_from = datetime.strptime(request.GET.get('date_from'), '%d-%m-%Y') try: date_to = datetime.strptime(request.GET.get('date_to'), '%d-%m-%Y') except: # day overflow , client maybe? norm = request.GET.get('date_to') n = "30-" + "-".join(norm.split("-")[1:]) date_to = datetime.strptime(n, '%d-%m-%Y') towns = request.GET.get('towns', None) qargs = Q() qargs = qargs & Q(on_date__gte=date_from) & Q(on_date__lte=date_to) if towns: # PURE DARK MAGIC towns = json.loads(towns) t = Q() for x in towns: t |= Q(venue__city__icontains=x) qargs &= t if filter == "all": events = Event.objects.select_related().prefetch_related().filter(qargs).order_by("on_date")[:limit] elif filter == "recommended": # needs better implementation events = Event.objects.select_related().prefetch_related().filter(qargs).order_by("on_date")[:limit] elif filter == "popular": events = Event.objects.select_related().prefetch_related().filter(qargs).order_by("-attends", "on_date")[:limit] elif filter == "free": qargs &= Q(price=0.0) events = Event.objects.select_related().prefetch_related().filter(qargs).order_by("on_date")[:limit] except: print traceback.format_exc() stuff = serialize_events(events=events) return HttpResponse(stuff, mimetype="application/json") event_id = request.GET.get('event_id', None) if event_id is None: event_form = EventForm() artist_form = ArtistForm() venue_form = VenueForm() return render_to_response('add_event.html', locals(), context_instance=RequestContext(request)) else: #event = Event.objects.get(pk=event_id)#.select_related().prefetch_related().filter(pk=event_id)[0] event = Event.objects.select_related().prefetch_related().get(pk=event_id) #print "lele", event, event.name #return render_to_response('poster_view.html', locals(), context_instance=RequestContext(request)) stuff = serialize_events(events=[event]) return HttpResponse(stuff, mimetype="application/json") if request.method == 'POST': try: date = datetime.strptime(request.POST.get('date'), '%d-%m-%Y %H:%M') #date = datetime.strptime(request.POST.get('date'), '%d-%m-%Y') description = request.POST.get('description') price = request.POST.get('price') artist_ids = json.loads(request.POST.get('artist_ids')) venue_id = request.POST.get('venue_id') poster_id = request.POST.get('poster_id') venue = Venue.objects.get(id=venue_id) try: user = STUser.objects.get(user=request.user) except: user = STUser.objects.get(user=request.session['user_id']) possible_name = venue.name + "-" + str(date) + "_" + str(artist_ids[0]) # print "description", description, "poster_id", poster_id, "venue_id", venue_id try: Event.objects.filter(name=possible_name)[0] return HttpResponse(json.dumps({"success":False}), mimetype="application/json") except:pass event = Event() event._by = user.user.id event.on_date = date event.price = price event.venue = venue event.name = possible_name event.description = description event.poster = Poster.objects.get(id=poster_id) event.save() for artist_id in artist_ids: artist = Artist.objects.get(id=artist_id) event.artists.add(artist) return HttpResponse(json.dumps({"success":True}), mimetype="application/json") except: print traceback.print_exc() return HttpResponse(json.dumps({"success":False}), mimetype="application/json") if request.method == 'PUT': # inc attends of event, and add this info to user try: spl = request.raw_post_data.split("=") event_id = spl[1] event = Event.objects.get(id=event_id) event.attends += 1 event.save() try: stuser = STUser.objects.get(user=request.user) except: stuser = STUser.objects.get(user=request.session['user_id']) stuser.events.add(event) return HttpResponse(json.dumps({"success":True}), mimetype="application/json") except: print traceback.print_exc() return HttpResponse(json.dumps({"success":False}), mimetype="application/json") if request.method == 'DELETE': # deletes event, comes with event_id try: #print "lele", event_id event = Event.objects.get(id=event_id) event.delete() return HttpResponse(json.dumps({"success":True}), mimetype="application/json") except: print traceback.print_exc() return HttpResponse(json.dumps({"success":False}), mimetype="application/json")