Exemplo n.º 1
0
def regioncourses():
    region_name, _, _ = get_region(request.headers.get("X-SecondLife-Region"))
    user_key = request.headers.get("X-SecondLife-Owner-Key")
    user = get_user(user_key)
    region = Region.get_by_key_name(region_name)

    if not region is None:
        query = BlacklistUser.all(keys_only=True)
        query.ancestor(user)
        bl_users = [n for n in query]

        query = BlacklistCourse.all(keys_only=True)
        query.ancestor(user)
        bl_courses = [n for n in query]

        all_courses = []
        query = Course.all()
        query.ancestor(region.key())
        query.filter("saved =", True)
        query.filter("deactivated =", False)
        query.filter("public =", False)
        query.filter("user ="******"name")
        for course in query:
            all_courses.append(
                "%s (%s by %s, private);%s" % (course.name, course.type.lower(), course.user.name, str(course.key()))
            )

        courses = deserialize_entities(memcache.get("regioncourses-%s" % region_name))
        if courses is None:
            query = Course.all()
            query.ancestor(region.key())
            query.filter("saved =", True)
            query.filter("deactivated =", False)
            query.filter("public =", True)
            query.order("name")
            courses = [course for course in query]
            memcache.set(key="regioncourses-%s" % region_name, value=serialize_entities(courses), time=CACHE_TIME * 6)

        for course in courses:
            if course.user.key() not in bl_users and course.key() not in bl_courses:
                all_courses.append(
                    "%s (%s by %s);%s" % (course.name, course.type.lower(), course.user.name, str(course.key()))
                )

        if all_courses:
            return Response(";".join(all_courses))

    msg = "\nThere are no courses for region %s." % region_name
    regions = Region.all().filter("course_count >", 0).order("-course_count").fetch(10)
    msg += "\nTry one of these regions instead:\n" + "\n".join(["http://" + quote(sl_url % r.name) for r in regions])
    return Response(msg, status=406)
Exemplo n.º 2
0
def blacklistcourse():
    try:
        user_key = request.headers.get("X-SecondLife-Owner-Key")
        user = get_user(user_key)
        course_id = request.args.get("courseid")
        region_name, _, _ = get_region(request.headers.get("X-SecondLife-Region"))
        region = Region.get_by_key_name(region_name)

        course = Course.get(Key(course_id))

        query = BlacklistCourse.all()
        query.ancestor(user)
        query.filter("course =", course.key())
        bl_course = query.get()

        if bl_course is None:
            blc = BlacklistCourse(parent=user, course=course, region=region)
            blc.put()
            return Response("\nCourse `%s` was added to your blacklist." % course.name)
        else:
            bl_course.delete()
            return Response("\nCourse `%s` was removed from your blacklist." % course.name)
    except db.Timeout:
        msg = "\nCourse was not blacklisted. The database timed out."
        logging.error(msg)
        return Response(msg, status=500)
    except CapabilityDisabledError:
        msg = "\nCourse was not blacklisted. Database could not be written to."
        logging.error(msg)
        return Response(msg, status=500)
    except TransactionFailedError:
        msg = "\nCourse was not blacklisted. Transaction failed."
        logging.error(msg)
        return Response(msg, status=500)
    except Exception, e:
        if DEBUG:
            print_exc()
        logging.error(str(e))
        return Response("\nCourse was not blacklisted. %s." % e, status=500)
Exemplo n.º 3
0
def getblacklistedcourses():
    user_key = request.headers.get("X-SecondLife-Owner-Key")
    user = get_user(user_key)
    region_name, _, _ = get_region(request.headers.get("X-SecondLife-Region"))
    region = Region.get_by_key_name(region_name)

    query = BlacklistCourse.all()
    query.ancestor(user)
    query.filter("region =", region)
    result = sorted(["%s (by %s)" % (n.course.name, n.course.user.name) for n in query])

    if result:
        return Response("\nBlacklisted courses:\n" + "\n".join(result))
    else:
        return Response("\nYour course blacklist is empty.")