def list_process(): form = CleanUserProcessForm() user = users.get_current_user() clean_process_saved = False clean_processes = [] clean_process_query = CleanUserProcess.query(CleanUserProcess.owner_email == user.email()).order() query_params = {} if request.method == 'POST': if form.validate_on_submit(): primary_domain = PrimaryDomain.get_or_create( domain_name = user.email().split('@')[1]) logged_in = 'NO' current_user = users.get_current_user() if current_user.email() == primary_domain.admin_email: imap = IMAPHelper() logged_in, _ = imap.login( form.data['source_email'], form.data['source_password']) imap.close() if logged_in != 'OK': form.source_email.errors.append( "Can't access the email with those credentials") else: clean_user_process = CleanUserProcess( owner_email=user.email(), destination_message_email=user.email(), status=constants.STARTED ) for key, value in form.data.iteritems(): setattr(clean_user_process, key, value) clean_process_key = clean_user_process.put() clean_process_saved = True # TODO: process does not appears immediately after it's saved # launch Pipeline deferred.defer(schedule_user_cleaning, user_email=form.data['source_email'], process_id=clean_process_key.id()) is_prev = request.args.get('prev', False) url_cursor = request.args.get('cursor', None) cursor = Cursor(urlsafe=url_cursor) if url_cursor else None if is_prev: clean_process_query = clean_process_query.order( CleanUserProcess.created) cursor = cursor.reversed() else: clean_process_query = clean_process_query.order( -CleanUserProcess.created) data, next_curs, more = clean_process_query.fetch_page( constants.PAGE_SIZE, start_cursor=cursor) clean_processes.extend(data) if is_prev: prev_curs = next_curs.reversed().urlsafe() if more else None next_curs = url_cursor else: prev_curs = url_cursor next_curs = next_curs.urlsafe() if more else None return render_template('process.html', form=form, user=user.email(), clean_process_saved=clean_process_saved, clean_processes=clean_processes, next_curs=next_curs, more=more, prev_curs=prev_curs)