def start(request): feedback = {} given = request.GET.get('username') if given: given = str(given).strip() if User.valid_username(given): try: u = tasks.get_or_add_user(given, _REQUESTER) target = overview if (not ldates.sensible_to_update(u.last_updated)) else update return redirect(target, u) except tasks.GetUserFailed as e: logging.error(e) feedback['errmessage'] = "Either Last.fm is down or you don't exist." else: feedback['errmessage'] = "Invalid username" # TODO: Make this less ugly. return render_to_response('index.html', { 'feedback' : feedback, 'given' : given if given else "", 'start' : True }, context_instance=RequestContext(request))
def update(request, username): """ Create a page showing weeks previously retrieved and those still to fetch. Queues tasks to be fetched. """ user = tasks.get_or_add_user(username, _REQUESTER) alreadyUpdating = Update.objects.is_updating(user) # Skip straight to the overview if there's no reason to be on this page if not alreadyUpdating and not ldates.sensible_to_update(user.last_updated): return redirect(overview, user) # Start a new update if not alreadyUpdating: alreadyUpdating = tasks.update_user(user, _REQUESTER) # Presumably no new data for user if not alreadyUpdating: return redirect(overview, user) # Otherwise, we're updating! updating_users = Update.objects.updating_users() return render_to_response('update-nojs.html', { 'updating_users': updating_users }, context_instance=RequestContext(request))