コード例 #1
0
ファイル: views.py プロジェクト: Eforcers/inbox-cleaner
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)