Example #1
0
def register_view(request):
  if not is_json(request.body):
    return HttpResponseBadRequest(json.dumps({'error': 'not valid data'}), mimetype="application/json")

  data = json.loads(request.body)
  username = ''
  password = ''

  if 'username' in data:
    username = data['username']

  if 'password' in data:
    password = data['password']

  if username.strip() == '' or password.strip() == '':
    return HttpResponseBadRequest(json.dumps({'error': 'invalid username or password'}), mimetype="application/json")

  try:
    user = User.objects.get(username=username)
  except User.DoesNotExist:
    user = None

  if user is None:
    user = User.objects.create_user(username, '', password)
    return HttpResponse(json.dumps({'message': 'success'}), mimetype="application/json")
  else:
    return HttpResponseBadRequest(json.dumps({'error': 'please choose another username'}), mimetype="application/json")
Example #2
0
def login_view(request):
  if not is_json(request.body):
    return HttpResponseBadRequest(json.dumps({'error': 'not valid data'}), mimetype="application/json")

  data = json.loads(request.body)
  username = ''
  password = ''

  if 'username' in data:
    username = data['username']

  if 'password' in data:
    password = data['password']

  if username.strip() == '' or password.strip() == '':
    return HttpResponseBadRequest(json.dumps({'error': 'invalid username or password'}), mimetype="application/json")

  print 'login', username, password


  user = authenticate(username=username, password=password)
  if user is not None:
    if user.is_active:
      login(request, user)
      return HttpResponse(json.dumps({'message': 'login successful'}), mimetype="application/json")
    else:
      return HttpResponseBadRequest(json.dumps({'error': 'account blocked!'}), mimetype="application/json")
  else:
    return HttpResponseBadRequest(json.dumps({'error': 'invalid login'}), mimetype="application/json")
Example #3
0
def mark_article_read_or_delete_view(request):
    """
  Endpoint view:
  help to mark article read, unread or delete for a particular user
  """
    if request.user.is_authenticated():
        if not is_json(request.body):
            return HttpResponseBadRequest(json.dumps(
                {'error': 'not valid data'}),
                                          mimetype="application/json")

        data = json.loads(request.body)
        read = False
        delete = False
        article = None
        userarticle = None

        if 'article_id' in data:
            article_id = data['article_id']
            try:
                article = HackerNewsArticles.objects.get(article_id=article_id)
            except HackerNewsArticles.DoesNotExist:
                article = None

        if article is None:
            return HttpResponseBadRequest(json.dumps(
                {'error': 'need to specify article!'}),
                                          mimetype="application/json")

        if 'read' in data:
            read = data['read']
        elif 'remove' in data:
            delete = data['remove']
        else:
            return HttpResponseBadRequest(json.dumps(
                {'error': 'should specify what action!'}),
                                          mimetype="application/json")

        userarticle, created = UserNewsRelation.objects.get_or_create(
            user=request.user, article=article)

        if read:
            userarticle.read = not userarticle.read

        if delete:
            userarticle.deleted = not userarticle.deleted

        userarticle.save()

        return HttpResponse(json.dumps({'message': 'Marked Succesfully!'}),
                            mimetype="application/json")
    else:
        return HttpResponseBadRequest(json.dumps(
            {'error': 'user should login!'}),
                                      mimetype="application/json")
Example #4
0
def mark_article_read_or_delete_view(request):
  """
  Endpoint view:
  help to mark article read, unread or delete for a particular user
  """
  if request.user.is_authenticated():
    if not is_json(request.body):
      return HttpResponseBadRequest(json.dumps({'error': 'not valid data'}), mimetype="application/json")

    data = json.loads(request.body)
    read = False
    delete = False
    article = None
    userarticle = None

    if 'article_id' in data:
      article_id = data['article_id']
      try:
        article = HackerNewsArticles.objects.get(article_id=article_id)
      except HackerNewsArticles.DoesNotExist:
        article = None

    if article is None:
      return HttpResponseBadRequest(json.dumps({'error': 'need to specify article!'}), mimetype="application/json")

    if 'read' in data:
      read = data['read']
    elif 'remove' in data:
      delete = data['remove']
    else:
      return HttpResponseBadRequest(json.dumps({'error': 'should specify what action!'}), mimetype="application/json")
    
    userarticle, created = UserNewsRelation.objects.get_or_create(user=request.user, article=article)

    if read:
      userarticle.read = not userarticle.read

    if delete:
      userarticle.deleted = not userarticle.deleted

    userarticle.save()

    return HttpResponse(json.dumps({'message': 'Marked Succesfully!'}), mimetype="application/json")
  else:
    return HttpResponseBadRequest(json.dumps({'error': 'user should login!'}), mimetype="application/json")
Example #5
0
  def get_item_details(self, item_id):
    """
    In hackernews Stories, comments, jobs, Ask HNs and even polls are just items. 
    They're identified by their ids, which are unique integers, 
    and can be fetched using https://hacker-news.firebaseio.com/v0/item/<item_id>.json?print=pretty.
    """
    stdLogger.debug('Started Getting Item Details for id %s', item_id)

    url = "https://hacker-news.firebaseio.com/v0/item/%s.json?print=pretty" % (str(item_id),)
    response = urlopener(url)
    item_details = {}

    if response:
      data = response.read()
      if is_json(data):
        item_details = json.loads(data)

    print item_details

    return item_details
Example #6
0
  def get_n_topstory_ids(self):
    """
    This method returns ids of top n stories in hackernews
    we can fetch them from 
    https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty
    """
    stdLogger.debug('Started Getting all top story ids')

    url = "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty"
    response = urlopener(url)
    list_of_top_story_ids = []

    if response:
      data = response.read()
      if is_json(data):
        list_of_top_story_ids = json.loads(data)

    # if len(list_of_top_story_ids) > self.n:
    #   list_of_top_story_ids = list_of_top_story_ids[:self.n]

    # print list_of_top_story_ids

    return list_of_top_story_ids