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)
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)
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)
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)
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)
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)
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)
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)
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')
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)
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)
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)
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)
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')
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)
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')
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))
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)
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)
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)
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')
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)
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)