Exemplo n.º 1
0
def main(argv=sys.argv):
    if len(argv) != 3:
        usage(argv)
    config_uri = argv[1]
    svn_csv = argv[2]
    setup_logging(config_uri)
    settings = get_appsettings(config_uri, name='dashboard')
    engine = engine_from_config(settings, 'sa.dashboard.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine
    Base.metadata.create_all()

    with transaction.manager:
        session = DBSession()
        with open(svn_csv, 'rb') as csvfile:
            reader = csv.reader(csvfile)
            for project_id, svn_repo in reader:
                svn_repo = svn_repo.strip()
                project_id = project_id.strip()
                project = session.query(Project).get(project_id)
                app = Application(name='SVN',
                                  project_id=project_id,
                                  application_type=SVN,
                                  svn_name=svn_repo)
                project.add_application(app)
                print 'Creating svn app [%s] for project [%s]' % (svn_repo, project_id)
Exemplo n.º 2
0
def populate_dummies(settings=None):
    from penelope.core.models.dbsession import DBSession
    from penelope.core.models import Base

    if settings:
        engine = engine_from_config(settings, 'sa.dashboard.')
        DBSession.configure(bind=engine)
        Base.metadata.bind = engine

    Base.metadata.create_all()

    with transaction.manager:
        session = DBSession()
        users = [
            add_user(session, u'*****@*****.**', fullname='Administrator', password='******'),
        ]

        role_admin = add_role(session, 'administrator')
        role_admin.users.append(users[0])

        add_role(session, 'external_developer')
        add_role(session, 'internal_developer')
        add_role(session, 'secretary')
        add_role(session, 'customer')
        add_role(session, 'project_manager')

        session.add(GlobalConfig(id=1))
Exemplo n.º 3
0
    def __call__(self, parser, namespace, values, option_string):
        super(Quality, self).__init__(parser, namespace, values, option_string)
        self.namespace = namespace
        config_uri = namespace.configuration
        setup_logging(config_uri)
        settings = get_appsettings(config_uri, name='dashboard')
        engine = engine_from_config(settings, 'sa.dashboard.')
        DBSession.configure(bind=engine)
        Base.metadata.bind = engine
        Base.metadata.create_all()
        self.metadata = MetaData(engine)

        configuration = {}
        tmp = tempfile.NamedTemporaryFile(suffix='.csv')
        namespace.filename = tmp.name
        tmp.close()
        configuration['filename'] = namespace.filename
        print 'Creating file %s' % namespace.filename
        setattr(namespace, option_string.strip('--'), configuration)
Exemplo n.º 4
0
def main(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)

    config_uri = argv[1]
    setup_logging(config_uri)
    env = bootstrap('%s#dashboard'% config_uri)
    settings = env.get('registry').settings
    engine = engine_from_config(settings, 'sa.dashboard.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    google_opts = argv[2:]
    try:
        google_user = google_opts.pop(0)
    except IndexError:
        google_user = raw_input('Google Spreadsheet User: '******'Google Spreadsheet ID: ')
    google_password = getpass.getpass("Google Spreadsheet Password: ")

    gc = gspread.login(google_user, google_password)
    sht = gc.open_by_key(spreadsheet_key)
    worksheet = sht.get_worksheet(0)
    crs = worksheet.get_all_records()

    contracts = {}
    for row in crs:
        if not row['titolocommessa']:
            continue
        contract_uid = '%s_%s_%s' % (row['project_name'],
                                     row['titolocommessa'],
                                     row['customer_id'])
        contracts.setdefault(contract_uid, {'crs': []})
        contracts[contract_uid]['titolocommessa'] = row['titolocommessa']
        contracts[contract_uid]['nrcontratto'] = row['nrcontratto']
        contracts[contract_uid]['gg'] = row['gg'] or 0
        contracts[contract_uid]['amount'] = row['amount'] or 0
        contracts[contract_uid]['crs'].append(row['cr_id'])
        contracts[contract_uid]['stato'] = map_state(row['stato'])

    # now we have a structure:
    # contracts['ContractUID'] = {'crs': ['customer_request_id_1',
    #                                     'customer_request_id_2'],
    #                             'gg': '12'}

    with transaction.manager:
        session = DBSession()
        for contract_uid, opts in contracts.items():
            crs = [session.query(CustomerRequest).get(a) for a in opts['crs']]
            crs = [a for a in crs if a]
            if not crs:
                continue
            contract = crs[0].contract
            if not contract:
                contract = Contract(name=opts['titolocommessa'])
            contract.days = opts['gg']
            contract.amount = opts['amount']
            contract.contract_number = opts['nrcontratto']
            contract.workflow_state = opts['stato']
            for cr in crs:
                if not cr:
                    continue
                cr.contract = contract
                contract.project_id = cr.project_id

        update_time_entries()
Exemplo n.º 5
0
def initialize_sql(config=None, engine=None):
    if not engine:
        engine = engine_from_config(config.registry.settings, 'sa.dashboard.', poolclass=NullPool)
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine