Пример #1
0
def get_current_todos():
    server = ShorthandServer(current_app.config['config_path'])

    status = get_request_argument(request.args, name='status',
                                  default='incomplete')
    directory_filter = get_request_argument(request.args,
                                            name='directory_filter')
    query_string = get_request_argument(request.args, name='query_string')
    sort_by = get_request_argument(request.args, name='sort_by')
    tag = get_request_argument(request.args, name='tag')
    suppress_future = get_request_argument(request.args,
                                           name='suppress_future',
                                           arg_type='bool', default=True)
    case_sensitive = get_request_argument(request.args, name='case_sensitive',
                                          arg_type='bool', default=False)

    if directory_filter == 'ALL':
        directory_filter = None
    if tag == 'ALL':
        tag = None

    todos = server.get_todos(todo_status=status,
                             directory_filter=directory_filter,
                             query_string=query_string,
                             case_sensitive=case_sensitive, sort_by=sort_by,
                             suppress_future=suppress_future, tag=tag)
    current_app.logger.info(f'Returning {len(todos)} todo results')

    wrapped_response = wrap_response_data(todos)
    wrapped_response['meta'] = analyze_todos(todos)
    return json.dumps(wrapped_response)
Пример #2
0
def show_home_page():
    server = ShorthandServer(current_app.config['config_path'])
    default_directory = server.get_config().get('default_directory')
    todos = server.get_todos(todo_status='incomplete',
                             directory_filter=default_directory)
    questions = server.get_questions(question_status='unanswered',
                                     directory_filter=default_directory)
    summary = server.get_calendar()
    events = []
    colors = {
        'section': 'black',
        'incomplete_todo': 'red',
        'completed_todo': 'blue',
        'skipped_todo': 'grey',
        'question': 'purple',
        'answer': 'green',
    }
    for year, year_data in summary.items():
        for month, month_data in year_data.items():
            for day, day_data in month_data.items():
                for event in day_data:
                    formatted_event = {
                        'title': event['event'],
                        'start': f'{year}-{month}-{day}',
                        'url': f'/render?path={event["file_path"]}'
                        f'#line-number-{event["line_number"]}',
                        'type': event['type']
                    }
                    if formatted_event['type'] in colors.keys():
                        formatted_event['color'] = colors[
                            formatted_event['type']]
                    events.append(formatted_event)

    return render_template('home.j2',
                           num_todos=len(todos),
                           num_questions=len(questions),
                           events=json.dumps(events),
                           static_content=static_content)