Esempio n. 1
0
def get_person(request, personId):
    logging.info('get person, id=' + str(personId))
    try:
        person = Person.objects.get(id=personId)
        return json_response(person.json(show_all=True), 200)
    except Exception as e:
        return json_response('error', 500)
Esempio n. 2
0
def get_movie(request, movieId):
    logging.info('get movie, id=' + str(movieId))
    try:
        movie = Movie.objects.get(id=movieId)
        return json_response(movie.json(show_all=True), 200)
    except Exception as e:
        repr(e)
        return json_response('error', 500)
Esempio n. 3
0
def user_list_public_collection(requests):
    username = requests.GET.get('username', None)
    user = User.objects.get(username=username)
    if user == None:
        return json_response(None, 400)
    collections = user.collection_set.filter(private=False).all()
    rep = [each.json() for each in collections]
    return json_response(rep, 200)
Esempio n. 4
0
def collection_delete_article(requests, article_id, collection_id):
    user = requests.GET['user']
    collection = get_object_or_404(Collection, id=collection_id)
    article = get_object_or_404(Article, id=article_id)
    if collection.user != user:
        return json_response(None, 400)
    collection.articles.remove(article)
    return json_response(collection.json(show_articles=True), 200)
Esempio n. 5
0
def search_person(request):
    result = []
    try:
        name = parse.unquote(request.GET['name'])
        logging.info('search person, name=' + str(name))
        for person in Person.objects.filter(title__icontains=name).all():
            result.append(person.json(show_all=True))
        return json_response(result, 200)
    except:
        return json_response([], 500)
Esempio n. 6
0
def search_movie(request):
    result = []
    try:
        title = parse.unquote(request.GET['title'])
        logging.info('search movie, title=' + str(title))
        for movie in Movie.objects.filter(title__icontains=title).all():
            result.append(movie.json(show_all=True))
        return json_response(result, 200)
    except:
        return json_response([], 500)
Esempio n. 7
0
def get_subject(request, subjectId):
    try:
        subject = Person.objects.get(id=subjectId)
        return json_response(subject.json(show_all=True), 200)
    except ObjectDoesNotExist:
        try:
            subject = Movie.objects.get(id=subjectId)
            return json_response(subject.json(show_all=True), 200)
        except ObjectDoesNotExist:
            return json_response('Subject not found exception', 400)
Esempio n. 8
0
def search_subject(request):
    try:
        name = request.GET['name']
    except:
        return json_response('need param \'name\'', 500)
    result = []
    for movie in Movie.objects.filter(title__icontains=name).all():
        result.append(movie.json(show_all=True))
    for person in Person.objects.filter(name__icontains=name).all():
        result.append(person.json(show_all=True))
    return json_response(result, 200)
Esempio n. 9
0
def user_create_collection(requests):
    if requests.method == 'POST':
        name = requests.POST.get('name', None)
        private = requests.POST.get('private', None)
        if name == None or private == None:
            return json_response(None, 400)
        collection = Collection.objects.create(user=requests.GET['user'],
                                               name=name,
                                               private=private)
        return json_response(collection.json(), 200)
    else:
        return json_response(None, 400, 'post')
Esempio n. 10
0
def collection_list_article(requests, collection_id):
    try:
        start, end = get_range(requests)
        collection = Collection.objects.get(id=collection_id)
        if collection.private == True and requests.GET[
                'user'] != collection.user:
            return json_response(None, 400)
        total = collection.articles.count()
        articles = collection.articles.all()[start:end]
        rep = [each.json() for each in articles]
        return json_response(rep, 200, start=start, end=end, total=total)
    except:
        return json_response(None, 400)
Esempio n. 11
0
def user_read_article(requests, article_id):
    """
    增加一条阅读记录
    :param article_id:
    :param token
    :return: None
    """
    try:
        user = requests.GET['user']
        article = get_object_or_404(Article, id=article_id)
        History.objects.create(user=user, article=article)
        return json_response(True, 200)
    except:
        return json_response(False, 400)
Esempio n. 12
0
def user_history_article(requests):
    """
    获取阅读历史
    :return: list of ReadHistories
    """
    try:
        user = requests.GET['user']
        start, end = get_range(requests)
        logging.info("start=%s, end=%s" % (start, end))
        total = user.history_set.count()
        histories = user.history_set.all().order_by('-created_date')[start:end]
        rep = [i.json() for i in histories]
        return json_response(rep, 200, start=start, end=end, total=total)
    except:
        return json_response(False, 400)
Esempio n. 13
0
def user_list_followees(requests, username):
    user = get_object_or_404(User, username=username)
    start, end = get_range(requests)
    logging.info('username=%s' % (username))
    total = user.following.count()
    rep = [i.json() for i in user.following.all()[start:end]]
    return json_response(rep, 200, start=start, end=end, total=total)
Esempio n. 14
0
def user_login(requests):
    """
     Login check
     str:param username:
     str:param password:
     User Model:return: User object for success or None
     """
    username = requests.POST.get('username', None)
    password = requests.POST.get('password', None)
    if username == None or password == None:
        return json_response(None, 400)
    logging.info('user login: username=%s, password=%s' % (username, password))
    user = auth.authenticate(username=username, password=password)
    if user:
        return json_response({'info': user.json()}, 200, encode(user))
    return json_response(None, 400, 'Username not exist')
Esempio n. 15
0
def user_list_article(requests, username):
    """
      :param username:
      :param lower:
      :param upper:
      :return: JSON response
   """
    try:
        logging.info('username=%s' % (username))
        user = get_object_or_404(User, username=username)
        start, end = get_range(requests)
    except:
        return json_response('', 400)
    total = user.article_set.count()
    articles = user.article_set.all().order_by('-created_date')[start:end]
    rep = [each.json() for each in articles]
    return json_response(rep, 200, start=start, end=end, total=total)
Esempio n. 16
0
 def wrapper(requests, *args, **kwargs):
     token = requests.GET.get('token',None)
     if token == None:
         token = requests.POST.get('token',None)
     if token == None:
         return json_response(None, 400,'token needed')
     payload = decode(token)
     if payload:
         now = time.time()
         if float(payload['valid_date']) >= now:
             user = get_object_or_404(User,username=payload['username'])
             requests.GET = requests.GET.copy()
             requests.GET['user'] = user
             return func(requests, *args, **kwargs)
         else:
             return json_response(None, 401, 'Out Of Time')
     else:
         return json_response(None, 400,'invalid token')
Esempio n. 17
0
def unfollow(requests, followee_name):
    followee = get_object_or_404(User, username=followee_name)
    follower = requests.GET['user']
    follower.following.remove(followee)
    for article in followee.article_set.all():
        follower.feeds.remove(article)
    logging.info('%s unfollowed %s success' %
                 (follower.username, followee.username))
    return json_response(
        None, 200,
        '%s unfollowed %s success' % (follower.username, followee.username))
Esempio n. 18
0
def user_pull_feeds(requests):
    """
       Same as feeds_pull, but using offline user.feeds
       :param start:
       :param end:
       :return: JSON response
    """
    try:
        start, end = get_range(requests)
        user = requests.GET['user']
        total = user.feeds.count()
        buf = user.feeds.all().order_by('-created_date')[start:end]
        logging.info('feddpull user=%s, start=%s, end=%s' %
                     (user.username, start, end))
        return json_response([each.json() for each in buf],
                             200,
                             start=start,
                             end=end,
                             total=total)
    except:
        return json_response(None, 400)
Esempio n. 19
0
def user_list_followers(requests, username):
    """
    返回关注的人的列表
    :return:
    """
    user = get_object_or_404(User, username=username)
    start, end = get_range(requests)
    logging.info('username=%s' % (username))
    total = User.objects.filter(following=user).count()
    rep = [
        i.json() for i in User.objects.filter(following=user).all()[start:end]
    ]
    return json_response(rep, 200, start=start, end=end, total=total)
Esempio n. 20
0
def article_in_which_collections(requests, article_id):
    article = get_object_or_404(Article, id=article_id)
    user = requests.GET['user']
    result = []
    for each in user.favorites_set.all():
        data = {
            'collection_name': each.name,
            'collection_id': each.id,
            'private': each.private,
            'exits': each.articles.filter(id=article_id).count() > 0
        }
        result.append(data)
    return json_response(result, 200)
Esempio n. 21
0
def user_join(requests):
    """
    User register
    :param username:
    :param nickname:
    :param password:
    :return: JSON for success or None
    """
    username = requests.POST.get('username', None)
    nickname = requests.POST.get('nickname', None)
    password = requests.POST.get('password', None)
    if username == None or nickname == None or password == None:
        return json_response(None, 400)
    logging.info('user join: username=%s, nickname=%s, password=%s' %
                 (username, nickname, password))
    try:
        User.objects.get(username=username)
    except ObjectDoesNotExist:
        user = User.objects.create_user(username=username,
                                        nickname=nickname,
                                        password=password)
        user.save()
        return json_response({'info': user.json()}, 200, encode(user))
    return json_response(None, 500, 'Username duplicated')
Esempio n. 22
0
def user_publish_article(requests):
    content = requests.POST.get('content', None)
    movie_id = requests.POST.get('movie_id', None)
    if movie_id != None:
        movie = get_object_or_404(Movie, id=movie_id)
    else:
        movie = None
    person_id = requests.POST.get('person_id', None)
    if person_id != None:
        person = get_object_or_404(Person, id=person_id)
    else:
        person = None
    logging.info('contents= %s' % (content))
    user = requests.GET['user']
    article = Article.objects.create(content=content,
                                     user=user,
                                     movie=movie,
                                     person=person)
    followers = User.objects.filter(following=user).all()  # 我关注的人
    for each in followers:
        each.feeds.add(article)
    return json_response(article.json(), 200)
Esempio n. 23
0
def user_list_all_collection(requests):
    user = requests.GET['user']
    collections = user.collection_set.all()
    rep = [each.json() for each in collections]
    return json_response(rep, 200)