Example #1
0
def edit_activity():
    activities = ActivityInfo.query.order_by(ActivityInfo.timestamp.desc()).all()
    # 查询活动
    if request.form.get('query_name'):
        name = request.form.get('query_name')
        activity = ActivityInfo.query.filter_by(name=name).order_by(ActivityInfo.timestamp.desc()).first()
        form = ActivityForm()
        form.name.data = activity.name
        form.time.data = activity.time
        form.address.data = activity.address
        form.introduce.data = activity.introduce
        form.guest.data = activity.guest
        form.poster_url.data = activity.poster
        return render_template('admin/edit_activity.html', activities=activities, form=form, id=activity.id)
    # 确认修改
    if request.form.get('edit'):
        activity_id = request.form.get('edit')
        activity = ActivityInfo.query.filter_by(id=activity_id).first()
        activity.name = request.form.get('name')
        activity.time = request.form.get('time')
        activity.address = request.form.get('address')
        activity.introduce = request.form.get('introduce')
        activity.guest = request.form.get('guest')
        activity.poster = request.form.get('poster_url')
        db.session.add(activity)
        db.session.commit()
        flash(u'活动修改成功!')
        form = ActivityForm()
        form.name.data = activity.name
        form.time.data = activity.time
        form.address.data = activity.address
        form.introduce.data = activity.introduce
        form.guest.data = activity.guest
        return render_template('admin/edit_activity.html', activities=activities, form=form, id=activity.id)
    return render_template('admin/edit_activity.html', activities=activities)
Example #2
0
def editActivities(request, template_name):
	if request.method=='POST':
		actForm=ActivityForm(request.POST)
		createdActivity=actForm.save(commit=False)
		createdActivity.save(request)
		actForm=ActivityForm()
		activities=Activity.objects.all_with_permission(request)
		actList=[]
		for activity in activities:
			actList.append({
				'id':activity.id,
				'activity':activity.name,
				'tags':activity.activitytags.all(),
				'count':activity.actCount(request),
			})
		
		return render(request, template_name, {'actList':actList, 'actForm':actForm})
	
	activities=Activity.objects.all_with_permission(request)
	actList=[]
	for activity in activities:
		actList.append({
			'id':activity.id,
			'activity':activity.name,
			'tags':activity.activitytags.all(),
			'count':activity.actCount(request),
		})
	
	actForm=ActivityForm()
	return render(request, template_name, {'actList':actList, 'actForm':actForm})
Example #3
0
def updateActivity(request, department, class_number, year, semester, section, aid):
	user = request.user
	c = getClassObject(department, class_number, year, semester, section, user)
	a = get_object_or_404(Activity, pk=aid)

	#Gets all students who wish to receive email when assignment is released
	emailStudents = UserProfile.objects.filter(classlist__cid=c.cid, setting__email_activity=1)
	activities = Activity.objects.filter(cid=c.cid)
	
	if request.method == 'POST':
		activity = Activity(cid=c, aid=aid, released=0)
		form = ActivityForm(request.POST, request.FILES, instance=activity)
		if form.is_valid():
			form.save()
			if form.cleaned_data['status'] == 2:
				rel = 1
			else:
				rel = 0
			Activity.objects.filter(aid=a.aid).update(released=rel)
			
			#Update the calendar event for the activity
			event = Event.objects.get(uid=request.user.userprofile, cid=c.cid, event_name=a.activity_name)
			event.date = form.cleaned_data['due_date']
			event.description = form.cleaned_data['description']
			event.name = form.cleaned_data['activity_name']
			event.save()
			
			if form.cleaned_data['status'] == 2 and a.released == 0:
				#Generate+send email announcement
				subject = c.department+' %s' %c.class_number+': Grade released for '+form.cleaned_data['activity_name']
				from_email = '*****@*****.**'
				to = []
				for student in emailStudents:
					to.append(student.user.email)
				html_content = render_to_string('instructor/emailActivityTemplate.html', {'class': c, 'act_name': form.cleaned_data['activity_name'], 'act_aid': aid})
				text_content = strip_tags(html_content)
				msg = EmailMultiAlternatives(subject, text_content, from_email, to)
				msg.attach_alternative(html_content, "text/html")
				msg.send()
				
				#Created announcement for it
				title = 'Grade released for '+form.cleaned_data['activity_name']
				content = "A new grade was released for "+form.cleaned_data['activity_name']
				act = Announcement(uid=user.userprofile, title=title, content=content, date_posted=datetime.datetime.now(), cid=c, send_email=0, was_updated=0, updated_by=user.userprofile, updated_on=datetime.datetime.now())
				act.save()
			url = getClassUrl(c) + 'instructor/activity'
			return HttpResponseRedirect(url)
	else:
		tmp = Activity.objects.get(aid=aid)
		form = ActivityForm(initial={'activity_name': tmp.activity_name, 'out_of': tmp.out_of, 'worth': tmp.worth, 'description': tmp.description, 'submission_file_type': tmp.submission_file_type, 'description_doc': tmp.description_doc, 'due_date': tmp.due_date, 'status': tmp.status, })

	content = getContent(c, user)
	content['form'] = form
	content['activities'] = activities
	content['update'] = 1
	return render_to_response('instructor/activity.html', content, 
		context_instance=RequestContext(request))
Example #4
0
def add_activity():
    form = ActivityForm()
    if form.validate_on_submit():
        activity = ActivityInfo(name=form.name.data,
                                time=form.time.data,
                                address=form.address.data,
                                introduce=form.introduce.data,
                                guest=form.guest.data,
                                poster=form.poster_url.data)
        db.session.add(activity)
        db.session.commit()
        flash(u'活动添加成功!')
        return redirect(url_for('add_activity'))
    return render_template("admin/add_activity.html", title=u'活动', form=form)
Example #5
0
def create_itinerary(request):
	profile = request.user.get_profile()
	
	if request.method == "POST":
		if 'location' in request.POST and 'destination' in request.POST and 'persons' in request.POST and 'transportation' in request.POST:
			itineraryForm = ItineraryForm({'starting_location': request.POST['location'], 'destination': request.POST['destination'], 'no_of_persons': int(request.POST['persons']), 'transportation_type': int(request.POST['transportation'])})
			itineraryForm.save()
			
			#Parse days JSON object
			objs = json.loads(request.POST['days'])

			#Iterate through days list
			for obj in objs:
				dayForm = DayForm(itinerary_id=obj.itinerary_id, day_number=obj.day_number)
				dayForm.save()
				
			#Parse activities JSON object
			objs = json.loads(request.POST['activities'])

			#Iterate through activities list
			for obj in objs:
				activityForm = ActivityForm(day_id=obj.day_id, activity_type_id=obj.activity_type_id, time_start=obj.time_start, description=obj.description, location_name=obj.location_name, address=obj.address, telephone_number=obj.telephone_number)
				activityForm.save()
				
			#Parse costs JSON object
			objs = json.loads(request.POST['costs'])

			#Iterate through costs list
			for obj in objs:
				costForm = CostForm(day_id=obj.day_id, cost_type_id=obj.cost_type_id, activity_name=obj.activity_name, activity_cost=obj.activity_cost)
				costForm.save()

			#Parse key_locations JSON object
			objs = json.loads(request.POST['key_locations'])

			#Iterate through key_locations list
			for obj in objs:
				keylocationForm = KeyLocationForm(itinerary_id=obj.itinerary_id, name=obj.name, description=obj.description, longitude=obj.longitude, latitude=obj.latitude)
				keylocationForm.save()	
			
			#Parse key_location_photos JSON object
			objs = json.loads(request.POST['key_location_photos'])

			#Iterate through key_location_photos list
			for obj in objs:
				keylocationphotosForm = KeyLocationPhotoForm(key_location_id=obj.key_location_id, photo_url=obj.photo_url)
				keylocationphotosForm.save()	
			
	return render_to_response('user.html', {
	}, context_instance=RequestContext(request))
Example #6
0
def add_activity():
    form = ActivityForm()
    if form.validate_on_submit():
        activity = ActivityInfo(name=form.name.data,
                                time=form.time.data,
                                address=form.address.data,
                                introduce=form.introduce.data,
                                guest=form.guest.data,
                                poster=form.poster_url.data)
        db.session.add(activity)
        db.session.commit()
        flash(u'活动添加成功!')
        return redirect(url_for('add_activity'))
    return render_template("admin/add_activity.html",
                           title=u'活动',
                           form=form)
Example #7
0
def new_activity():
    form = ActivityForm(request.form)
    if request.method == 'POST' and form.validate():
        meta = {}
        meta['en'] = {
            'title': form.title.data,
            'content': form.content.data
        }
        activity = ActivityModel(
            date = form.date.data,
            address = form.address.data,
            registrable = form.registrable.data,
            register_link = form.register_link.data,
            meta = meta
        )
        activity.put()
        return redirect(url_for('admin.activities'))
    return render_template('admin/new_activity.html', form=form)
Example #8
0
def activity(request, department, class_number, year, semester, section):
	user = request.user
	c = getClassObject(department, class_number, year, semester, section, user)
	
	#Gets the list of students for want to receive email notifications for graded activities
	emailStudents = UserProfile.objects.filter(classlist__cid=c.cid, setting__email_activity=1)

	activities = Activity.objects.filter(cid=c.cid).order_by('due_date')
	
	if request.method == 'POST':
		activity = Activity(cid=c, released=0)
		form = ActivityForm(request.POST, request.FILES, instance=activity)
		if form.is_valid():
			if form.cleaned_data['status'] == 2:
				form.cleaned_data["released"] = 1
			else:
				form.cleaned_data["released"] = 0
			form.save()
			
			#Create a calendar event for each activity created
			label = getClassLabel(user, c.cid, department, class_number)
			event_name = form.cleaned_data['activity_name']
			date = form.cleaned_data['due_date']
			description = form.cleaned_data['description']
			
			
			event = Event(uid=request.user.userprofile, cid=c.cid, lid=label, event_name=event_name, date=date, description=description)
			event.save()
			
			#If grade has been released by instructor/TA
			if form.cleaned_data['status'] == 2:
				#Generate+send email announcement
				subject = c.department+' %s' %c.class_number+': Grade released for '+form.cleaned_data['activity_name']
				from_email = '*****@*****.**'
				to = []
				for student in emailStudents:
					to.append(student.user.email)
				html_content = render_to_string('instructor/emailActivityTemplate.html', {'class': c, 'activity': activity,})
				text_content = strip_tags(html_content)
				msg = EmailMultiAlternatives(subject, text_content, from_email, to)
				msg.attach_alternative(html_content, "text/html")
				msg.send()
				
				#Created announcement for it
				title = 'Grade released for '+form.cleaned_data['activity_name']
				content = "A new grade was released for "+form.cleaned_data['activity_name']
				act = Announcement(uid=user.userprofile, title=title, content=content, date_posted=datetime.datetime.now(), cid=c, send_email=0, was_updated=0, updated_by=user.userprofile, updated_on=datetime.datetime.now())
				act.save()
			return HttpResponseRedirect("")
	else:
		form = ActivityForm()
	
	content = getContent(c, user)
	content['form'] = form
	content['activities'] = activities
	content['update'] = 0
	return render_to_response('instructor/activity.html', content, 
		context_instance=RequestContext(request))
Example #9
0
def edit_activity(keyurl):
    activity = ndb.Key(urlsafe=keyurl).get()
    if not activity:
        return redirect('admin.activities')
    form = ActivityForm(request.form, obj=activity)
    if request.method == 'GET':
        form.title.data = activity.meta['en']['title']
        form.content.data = activity.meta['en']['content']

    if request.method == 'POST' and form.validate():
        meta = {}
        meta['en'] = {
            'title': form.title.data,
            'content': form.content.data
        }
        activity.date = form.date.data
        activity.address = form.address.data
        activity.registrable = form.registrable.data
        activity.register_link = form.register_link.data
        activity.meta = meta

        activity.put()
        return redirect(url_for('admin.activities'))
    return render_template('admin/edit_activity.html', form=form, keyurl=keyurl)
def submit_activity():
    """
    Submit activity

    Render activity form
    Check form is valid and save to the database
    """
    if session.get('user') is None:
        flash('You must be logged-in to submit an Activity', 'error')
        return redirect(url_for('login'))

    form = ActivityForm()

    if form.validate_on_submit():
        td = form.venue.data
        del td['location']
        result = Activity().add_activity()
        activity_id = result[0]
        if result[0] != 'TITLE_EXISTS':
            if form.image.data:
                save_image(form.image.data, activity_id + '.jpg')

            return redirect(url_for('index'))

        form.title.errors.append('An activity with this name already exists')

    elif request.method == 'POST':
        flash('Please correct form errors below', 'error')

    return render_template(
        'activity_form.html',
        form=form,
        page_title=('Things to Do and Places to Go: Submit new Activity'),
        form_title='Add an Activity',
        nav_link='Submit_Activity',
        categories=CATEGORIES)
Example #11
0
def editActivities(request, template_name):
    if request.method == 'POST':
        actForm = ActivityForm(request.POST)
        createdActivity = actForm.save(commit=False)
        createdActivity.save(request)
        actForm = ActivityForm()
        activities = Activity.objects.all_with_permission(request)
        actList = []
        for activity in activities:
            actList.append({
                'id': activity.id,
                'activity': activity.name,
                'tags': activity.activitytags.all(),
                'count': activity.actCount(request),
            })

        return render(request, template_name, {
            'actList': actList,
            'actForm': actForm
        })

    activities = Activity.objects.all_with_permission(request)
    actList = []
    for activity in activities:
        actList.append({
            'id': activity.id,
            'activity': activity.name,
            'tags': activity.activitytags.all(),
            'count': activity.actCount(request),
        })

    actForm = ActivityForm()
    return render(request, template_name, {
        'actList': actList,
        'actForm': actForm
    })
Example #12
0
def create_Activity(request):
	if request.is_ajax():
		search_term = request.POST['yelp_term']
		# lat = request.session['cur_lat']
		# lng = request.session['cur_lng']
		lat = '42.056459'
		lng = '-87.675267'
		search_result = yelp_api.search_location(lat,lng,search_term)
		request.session['search_result'] = search_result
		return HttpResponse(json.dumps(search_result), content_type="application/json")

	elif request.method == 'POST':
		actForm = ActivityForm(request.POST)
		locForm = LocationForm(request.POST)

		# check for valid location
		if locForm.is_valid():
			street = request.POST.get('address')
			city = request.POST.get('city')
			state = request.POST.get('state')

			# get lat and long
			addr_str = street + ", " + city + ", " + state
			r = geocode(addr_str)
			lat = r['lat']
			lng = r['lng']

			m = locForm.save(commit=False)
			m.longitude = lng
			m.latitude = lat
			loc_name = m.location_name
			
			# get yelp rating and image
			rating,img_url = yelp_api.get_yelp_data(loc_name,lng,lat)
			print rating
			if rating == -1:
				m.location_rate = 0.0
			else:
				m.location_rate = rating
			if img_url == -1:
				m.location_img_url = "http://www.mountainmansocialmedia.com/_site/wp-content/themes/juiced/img/thumbnail-default.jpg"
			else:
				m.location_img_url = img_url
			
			location_obj = locForm.save()
			
			date = request.POST.get('date')
			start_time = request.POST.get('start_time')
			end_time = request.POST.get('end_time')
			name = request.POST.get('activity_name')
			max_num = request.POST.get('max_num_attendees')
			min_num = request.POST.get('min_num_attendees')
			skill = request.POST.get('skill_level')

			dt = datetime.strptime(date, "%m/%d/%Y")
			st = datetime.strptime(convert_Time(start_time), "%H:%M:%S")
			et = datetime.strptime(convert_Time(end_time), "%H:%M:%S")
			owner = request.user.onthemoveuser

			request.GET = request.GET.copy()
			request.GET['date'] = dt
			request.GET['start_time'] = st 
			request.GET['end_time'] = et 
			request.GET['activity_name'] = name
			request.GET['max_num_attendees'] = max_num
			request.GET['min_num_attendees'] = min_num
			request.GET['skill_level'] = skill
			request.GET['location_id'] = location_obj
			request.GET['owner_id'] = owner

			actForm1 = ActivityForm(request.GET)

			if actForm1.is_valid():
				x=actForm1.save(commit=False)
				x.location_id = location_obj
				x.owner_id = owner
				y = actForm1.save()
				print "here"
				return HttpResponseRedirect(reverse("Activities:details",args=(y.pk,)))
	else:
		actForm = ActivityForm()
		locForm = LocationForm()
	context = {}
	context.update(csrf(request))
	context['act_form'] = actForm
	context['loc_form'] = locForm
	context['path'] = request.path

	return render(request,"Activities/createActivity.html", context)
def edit_activity(activity_id):
    """
    Edit activity

    Render activity form
    Check form is valid and save to the database

    :param activity_id: string
    :return: redirect to home page
    """
    if session.get('user') is None:
        flash('You must be logged-in to edit an Activity', 'error')
        return redirect(url_for('login'))
    else:
        user_session = session.get('user')

    if check_activity_id(activity_id):
        activity_data = Activity().get_activity(activity_id)

        if activity_data is None:
            flash('Activity not found', 'error')
            return redirect(url_for('index'))

        users_level = user_session.get('level', 0)
        # Check user owns activity or user level is 1-moderator or 7-admin
        if (ObjectId(user_session['_id']['$oid']) != ObjectId(
                activity_data['userid'])) and (users_level != 1
                                               and users_level != 7):
            flash(
                f'''You cannot edit the activity "
                      {activity_data["title"]}"''', 'error')
            return redirect(url_for('index'))

        # Set imageURL for preview image
        imageURL = set_imageURL(activity_id)

        # Check form isn't too large (image data size)
        try:
            form = ActivityForm(data=activity_data)
        except RequestEntityTooLarge:
            flash('Chosen file too large, limit is 4mb', 'error')
            form = ActivityForm(data=activity_data)
        else:
            form.imageId.data = activity_id

            if form.validate_on_submit():
                # Remove venue location field as not required for database
                td = form.venue.data
                del td['location']

                if form.image.data:
                    save_image(form.image.data, activity_id + '.jpg')

                Activity().update_activity(activity_id)
                return redirect(url_for('index'))

            elif request.method == 'POST':
                flash('Please correct form errors below', 'error')

        return render_template(
            'activity_form.html',
            form=form,
            page_title=('Things to Do and Places to Go: Edit Activity'),
            form_title='Edit Activity',
            imageURL=imageURL,
            categories=CATEGORIES)
    else:
        return redirect(url_for('index'))