__init__.py

#

Copyright (C) 2010 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

import ConfigParser
import googlecl
import parser
#

Set the most basic options in the config file.

def _create_basic_options():
#
  import googlecl.docs
  import googlecl.contacts
  import googlecl.calendar
  import googlecl.youtube
  import getpass
  import socket
#

These may be useful to define at the module level, but for now, keep them here. REMEMBER: updating these means you need to update the CONFIG readme.

  default_hostid = getpass.getuser() + '@' +  socket.gethostname()
  _youtube = {'max_results': '50'}
  _contacts = {'fields': 'name,email'}
  _calendar = {'fields': 'title,when'}
  _general = {'max_retries': '2',
              'retry_delay': '0.5',
              'regex': 'True',
              'url_field': 'site',
              'fields': 'title,url-site',
              'missing_field_value': 'N/A',
              'date_print_format': '%b %d %H:%M',
              'cap_results': 'False',
              'hostid': default_hostid}
  _docs = {'document_format': 'txt',
           'spreadsheet_format': 'xls',
           'presentation_format': 'ppt',
           'drawing_format': 'png',
           'format': 'txt',
           'spreadsheet_editor': 'openoffice.org',
           'presentation_editor': 'openoffice.org'}
  return {googlecl.docs.SECTION_HEADER: _docs,
          googlecl.contacts.SECTION_HEADER: _contacts,
          googlecl.calendar.SECTION_HEADER: _calendar,
          googlecl.youtube.SECTION_HEADER: _youtube,
          'GENERAL': _general}
#

Get the full path to the configuration file.

def get_config_path(filename='config',
                    default_directories=None,
                    create_missing_dir=False):
#

See googlecl.get_xdg_path()

  return googlecl.get_xdg_path(filename, 'CONFIG', default_directories,
                               create_missing_dir)
#

Loads configuration file.

def load_configuration(path=None):
#

Args: path: Path to the configuration file. Default None for the default location.

Returns: Configuration parser.

  if not path:
    path = get_config_path(create_missing_dir=True)
    if not path:
      LOG.error('Could not create config directory!')
      return False
  config = parser.ConfigParser(ConfigParser.ConfigParser)
  config.associate(path)
  made_changes = config.ensure_basic_options(_create_basic_options())
  if made_changes:
    config.write_out_parser()
#

Set the encoding again, now that the config file is loaded. (the config file may have a default encoding setting)

  googlecl.TERMINAL_ENCODING = googlecl.determine_terminal_encoding(config)
  return config