Example #1
0
def personal(request):
	if request.user.username == "":
		return HttpResponse('Please sign in', status=401)
	this_user = MyUser.objects.get(username = request.user.username)
#	groups = MyGroup.objects.filter(creator = request.user.username)
	#groups = this_user.users_set.all()
	groups = MyGroup.objects.filter(users = this_user)
	invites = Invite.objects.filter(invitee = this_user)
	my_events = NewEvent.objects.filter(Q(creator = this_user), (Q(private = False) | Q(groups__in=groups))).order_by("startTime")
	rsvped = NewEvent.objects.filter(rsvp = this_user).order_by("startTime")
	if len(invites) != 0 and len(rsvped) != 0:
		invites = invites.filter(~Q(event__in = rsvped))

	recommended = []
	all_users_obj =  MyUser.objects.all()
	all_users = [unicodedata.normalize('NFKD', user.username).encode('ascii', 'ignore') for user in all_users_obj]
	friends = []
	try: 
		friends_obj = Friends.objects.get(name = this_user)
		friends = friends_obj.friends.all()
		if (len(friends) != 0 and len(groups) != 0):
			recommended = NewEvent.objects.filter(((reduce(operator.or_, (Q(rsvp=x) 
				| Q(creator=x) for x in friends))) | (reduce(operator.or_, (Q(groups=x) for x in groups)))), (Q(private = False) 
				| Q(groups__in=groups))).distinct()
		elif (len(friends) != 0): 
			recommended = NewEvent.objects.filter((reduce(operator.or_, (Q(rsvp=x) 
				| Q(creator=x) for x in friends))), (Q(private = False) 
				| Q(groups__in=groups))).distinct()
		elif (len(groups) != 0):
			recommended = NewEvent.objects.filter((reduce(operator.or_, (Q(groups=x) for x in groups))), (Q(private = False) 
				| Q(groups__in=groups))).distinct()
		if len(recommended) != 0:
			recommended = recommended.filter(~Q(rsvp=this_user)).order_by("startTime").distinct()

		other_users = all_users_obj.exclude(pk__in = friends)
	except ObjectDoesNotExist:
		friends_obj = Friends()
		friends_obj.name = this_user
		friends_obj.save()
		other_users = all_users_obj

	events_list = list(my_events)
	events_list.extend(rsvped)
	events_list.extend(recommended);
	form = AddgroupForm() # An unbound form
	form2 = AddfriendsForm()
	fb_groups = facebook.get_fb_groups(request)
	fb_friends = facebook.get_friends(request)
	return render(request, 'frontend/personal.html', {
        'form': form, 'form2':form2, 'groups_list': groups, 'my_events': my_events, 'rsvped': rsvped, 
        'events_list': events_list, 'recommended':recommended, "friends":friends, 
        'other_users': other_users, 'all_users': all_users, 'fb_groups': fb_groups, 'fb_friends': fb_friends, 'invites':invites
    })	
Example #2
0
def addfriend(request):
	if request.user.username == "":
		return HttpResponse('Please sign in!', status=401)
	if request.method == 'POST':
		form = AddfriendsForm(request.POST) # A form bound to the POST data
		if form.is_valid():
			this_user = MyUser.objects.get(username = request.user.username)
			try: 
				friends_obj = Friends.objects.get(name = this_user)
			except ObjectDoesNotExist:
				friends_obj = Friends()
				friends_obj.name = this_user
				friends_obj.save()
			name = form.cleaned_data['name']
			try: 
				user = MyUser.objects.get(username = name)
				friends_obj.friends.add(user)
			except ObjectDoesNotExist:
				# error!!
				return HttpResponse('User not found!', 
						    status=401)
			friends_obj.save()
			return HttpResponseRedirect('/frontend/personal')
	return HttpResponseRedirect('/frontend/personal')
#	else:
#		form = AddfriendForm() # An unbound form
#	return render(request, 'frontend/personal.html', {
#       'form': form,
#  })	
	return HttpResponseRedirect('/')	
Example #3
0
def filter(request):
	tags = request.POST.getlist('tags')
	personal_type = request.POST.get('type')
	search = request.POST.get('search_query')
	events_list = []
	context = {'events_list': events_list, 'user': request.user, 'rsvped': [],'tags': tags, 'cal_events': []}
	username = request.user.username
	groups = []
	if username != "" and\
	 len(MyUser.objects.filter(username = username)) == 0:
		return HttpResponseRedirect('/signup')
	else:
		try:
			user = MyUser.objects.get(username=username)
			invites = Invite.objects.filter(invitee = user)
			rsvped = NewEvent.objects.filter(rsvp = user).order_by("startTime")
			if len(invites) != 0 and len(rsvped) != 0:
				invites = invites.filter(~Q(event__in = rsvped))
			lat = user.latitude
			lon = user.longitude
			groups = MyGroup.objects.filter(users = user)
			context['rsvped'] = NewEvent.objects.filter(Q(rsvp = user), (Q(private = False) | Q(groups__in=groups)))
		except MyUser.DoesNotExist:
			user = None
			latitude = MyUser._meta.get_field_by_name('latitude')
			longitude = MyUser._meta.get_field_by_name('longitude')
			lat = latitude[0].default
			lon = longitude[0].default
			invites = []
		context['invites'] = invites
		context['center_lat'] = lat
		context['center_lon'] = lon
	time_threshold = datetime.now() - timedelta(days = 1)
	if search != None:
		form = SearchForm(request.POST)
		if form.is_valid():
			query = form.cleaned_data['search_query']
			try:
				user = MyUser.objects.get(username=username)
				try: 
					tags_list = [Tag.objects.get(name = query)]
				except ObjectDoesNotExist:
					tags_list = []
				events_list = NewEvent.objects.filter(
					(Q(name__icontains=query) | 
					Q(location__icontains=query) | Q(tags__in=tags_list)), (Q(private = False) | Q(groups__in=groups))).order_by("startTime") 
			except ObjectDoesNotExist: 
				events_list = NewEvent.objects.filter(
					Q(name__icontains=query) | 
					Q(location__icontains=query) | Q(tags__in=query)).order_by("startTime")
			show_list = True
	elif tags != None and len(tags) != 0:
		tags_list = []
		groups_list = []
		for tag in tags:
			try:
				tags_list += [Tag.objects.get(name = tag)]
			except ObjectDoesNotExist:
				try:
					groups_list += [MyGroup.objects.get(name=tag)]
				except ObjectDoesNotExist:
					continue
		events_list = NewEvent.objects.filter((reduce(operator.or_, [Q(tags__in=tags_list) | Q(groups__in =groups_list)])), (Q(private = False) | Q(groups__in=groups)))
		show_list = False
	elif personal_type != None:
		if personal_type == 'recommended':
			if user == None:
				events_list = NewEvent.objects.filter(Q(private = False) | Q(groups__in=groups))
			else: 
				try: 
					friends_obj = Friends.objects.get(name = user)
					friends = friends_obj.friends.all()
					groups = MyGroup.objects.filter(users = user)

					if (len(friends) != 0 and len(groups) != 0):
						events_list = NewEvent.objects.filter(((reduce(operator.or_, (Q(rsvp=x) 
							| Q(creator=x) for x in friends))) | (reduce(operator.or_, (Q(groups=x) for x in groups)))), (Q(private = False) 
							| Q(groups__in=groups)))
					elif (len(friends) != 0): 
						events_list = NewEvent.objects.filter((reduce(operator.or_, (Q(rsvp=x) 
							| Q(creator=x) for x in friends))), (Q(private = False) | Q(groups__in=groups)))
					elif (len(groups) != 0):
						events_list = NewEvent.objects.filter((reduce(operator.or_, (Q(groups=x) for x in groups))), (Q(private = False) 
							| Q(groups__in=groups)))

				except ObjectDoesNotExist:
					friends_obj = Friends()
					friends_obj.name = this_user
					friends_obj.save()
		if personal_type == 'my_events':
			if user == None:
				events_list = []
			else:
				events_list = NewEvent.objects.filter(Q(creator = user) | Q(rsvp = user))
	else:
		try:
			user = MyUser.objects.get(username=username)
			groups = MyGroup.objects.filter(users = user)
			events_list = NewEvent.objects.filter(Q(startTime__gt=time_threshold),(Q(private = False) | Q(groups__in=groups))).order_by("startTime")
		except ObjectDoesNotExist:
			events_list = NewEvent.objects.filter(Q(startTime__gt=time_threshold)).order_by("startTime")
		
		show_list = False
	if len(events_list) != 0:
		events_list = events_list.order_by("startTime").distinct()
	context['events_list'] = events_list

	tags = ['cos', '333', 'music', 'needs', 'database', 'integration']
	cal_events = []
	description = ""
	from_zone = tz.gettz('UTC')
	to_zone = tz.gettz('America/New_York')

	for e in events_list:
#		e.description="a"
		e.startTime.replace(tzinfo=from_zone)
		e.endTime.replace(tzinfo=from_zone)
		startTimeEDT = e.startTime.astimezone(to_zone)
		endTimeEDT = e.endTime.astimezone(to_zone)
		startTime = startTimeEDT.strftime("%s %s" % ("%Y-%m-%d", "%H:%M:%S"));
		if e.endTime != None:
			endTime = endTimeEDT.strftime("%s %s" % ("%Y-%m-%d", "%H:%M:%S"));
			read_only = True

			cal_events.append({'start_date': startTime, 'end_date': endTime, 'text': e.name, 'readonly': read_only});
		context['cal_events'] = json.dumps(cal_events, cls=DjangoJSONEncoder);
	return render_to_response('frontend/list.html', context, context_instance=RequestContext(request))