コード例 #1
0
ファイル: pages.py プロジェクト: philippkraft/odmf
    def saveitem(self, **kwargs):
        username = kwargs.get('username')
        if 'save' in kwargs and username:
            session = db.Session()
            p_act = session.query(db.Person).filter_by(
                username=username).first()
            if not p_act:
                p_act = db.Person(username=username)
                session.add(p_act)
            p_act.email = kwargs.get('email')
            p_act.firstname = kwargs.get('firstname')
            p_act.surname = kwargs.get('surname')
            p_act.supervisor = session.query(
                db.Person).get(kwargs.get('supervisor'))
            # p_act.can_supervise=kwargs.get('can_supervise')
            p_act.car_available = kwargs.get('car_available')
            p_act.telephone = kwargs.get('telephone')
            p_act.mobile = kwargs.get('mobile')
            p_act.comment = kwargs.get('comment')
            if kwargs.get('status') == 'on':
                p_act.active = True
            else:
                p_act.active = False

            # Simple Validation
            if kwargs.get('password') is not None:
                if kwargs.get('password') == kwargs.get('password_verify'):
                    p_act.password = hashpw(kwargs.get('password'))
            # Simple Validation
            # if users.current.level == ACCESS_LEVELS['Supervisor']:
            p_act.access_level = int(kwargs.get('access_level'))

            session.commit()
            session.close()
        raise web.HTTPRedirect('./' + username)
コード例 #2
0
ファイル: pages.py プロジェクト: philippkraft/odmf
    def default(self, act_user=None):
        session = db.Session()
        persons = session.query(db.Person).order_by(
            db.sql.desc(db.Person.can_supervise), db.Person.surname)

        # 'guest' user can't see himself in the user list
        if users.current.name == 'guest':
            persons = persons.filter(db.Person.access_level != 0)
            # TODO: url "host/guest" shouldn't be accessible for the guest user

        supervisors = persons.filter(db.Person.can_supervise == True)
        error = ''
        jobs = []
        act_user = act_user or users.current.name
        if act_user == 'new':
            p_act = db.Person(active=True)
        else:
            try:
                p_act = session.query(db.Person).get(act_user)
                if p_act is None:
                    raise ValueError(
                        "There is no user with the name '%s'" % act_user)
                jobs = p_act.jobs.order_by(db.sql.asc(
                    db.Job.done), db.sql.asc(db.Job.due))
            except:
                p_act = session.query(db.Person).get(users.current.name)
                error = traceback()
        result = web.render('person.html', persons=persons, active_person=p_act, supervisors=supervisors, error=error,
                            jobs=jobs, act_user=act_user, levels=get_levels, is_self=is_self)\
            .render('html', doctype='html')
        session.close()
        return result
コード例 #3
0
ファイル: people.py プロジェクト: glensc/griffith
def add_person_db(self):
    name = self.widgets['person']['name'].get_text().decode('utf-8')
    if name:
        p = db.Person()
        try:
            p.name = self.widgets['person']['name'].get_text().decode('utf-8')
            p.email = self.widgets['person']['email'].get_text().decode('utf-8')
            p.phone = gutils.digits_only(self.widgets['person']['phone'].get_text().decode('utf-8'))
        except ValueError, e:
            gutils.warning(e.message)
            return False
        self.widgets['person']['window'].hide()
        self.db.session.add(p)
        try:
            self.db.session.commit()
        except Exception, e:
            self.db.session.rollback()
            log.info(str(e))
コード例 #4
0
    def store_person(self, item):
        with self.session_scope() as session:
            person = db.Person(name=item['name'], url=item['url'])
            person.primary_role = item.get('primary_role')
            if item.get('born'):
                person.born = self.parse_date(item['born'])
            person.gender = item.get('gender')
            person.location = item.get('location')
            person.website = item.get('website')
            person.facebook = item.get('facebook')
            person.twitter = item.get('twitter')
            person.linkedin = item.get('linkedin')
            person.description = item.get('description')

            for raw_job in item.get('current_jobs', []):
                job = db.Job(title=raw_job[0],
                             organization_url=raw_job[1],
                             appointment_period=raw_job[2])
                person.jobs.append(job)
            for raw_job in item.get('past_jobs', []):
                job = db.Job(title=raw_job[0],
                             organization_url=raw_job[1],
                             start=raw_job[2],
                             end=raw_job[3])
                person.jobs.append(job)

            for advisor_role in item.get('board_advisors', []):
                role = db.BoardAdvisorRole(title=advisor_role[0],
                                           organization_url=advisor_role[1])
                person.board_advisors.append(role)

            for investment in item.get('investments', []):
                inv = db.Investment(organization_url=investment[0])
                inv.date = self.parse_date(investment[1])
                person.investments.append(inv)

            for raw_edu in item.get('education', []):
                edu = db.Education(organization_url=raw_edu[0],
                                   period=raw_edu[1])
                person.education.append(edu)

            session.add(person)
コード例 #5
0
def ReadMembersFromCSV(filename, succeededFilename, failedFilename):
    reader = csv.reader(open(filename, "rb"))
    succeeded = csv.writer(open(succeededFilename, "wb"))
    failed = csv.writer(open(failedFilename, "wb"))

    numFailed = 0
    numSucceeded = 0
    print("Loading membership data...")
    print("\tParsing membership data file")
    sys.stdout.flush()

    controller = ResetController()

    FullName = lambda firstName, lastName: " ".join([firstName, lastName]
                                                    ).lower()

    people = {}
    for person in db.session.query(db.Person).all():
        people[FullName(person.firstName, person.lastName)] = person

    for row in reader:
        startDate = ParseCSVDate(row[0])
        type, duration, money = ParseCSVMembershipTypeDurationAndDonation(
            row[6], row[7])
        if startDate is None or type is None:
            failed.writerow(row)
            numFailed += 1
            continue

        endDate = None
        if duration != None:
            endDate = startDate + duration

        lastName = unicode(row[1].strip())
        firstName = unicode(row[2].strip())

        fullName = FullName(firstName, lastName)

        #TODO: Do more validation before we get to this point
        person = None
        if fullName in people:
            person = people[fullName]
        else:
            person = db.Person()
            person.firstName = firstName
            person.lastName = lastName
            people[fullName] = person

        if person.memberInfo is None:
            person.memberInfo = db.Member()
        else:
            memberEndDate = person.memberInfo.endDate
            alreadyLifer = memberEndDate is None
            nowLifer = endDate is None
            if alreadyLifer or (not nowLifer and memberEndDate < endDate):
                continue

        person.memberInfo.endDate = endDate
        person.memberInfo.mailingAddress = unicode(row[3].strip())
        person.memberInfo.phoneNumber = unicode(row[4].strip())
        person.memberInfo.emailAddress = unicode(row[5].strip())
        person.memberInfo.donation = money
        person.memberInfo.notes = unicode(row[8].strip())
        person.memberInfo.startDate = startDate
        person.memberInfo.endDate = endDate

        succeeded.writerow(row)
        numSucceeded += 1

    print("\t\t{0} rows successfuly parsed".format(numSucceeded))
    print("\t\t{0} rows failed to parse".format(numFailed))

    print("\tCommiting data to database")
    db.session.add_all(people.values())
    db.session.commit()

    numPeople = db.session.query(db.Person).count()
    print("\t{0} people in database".format(numPeople))
    print("...Success")
コード例 #6
0
    )  # loaned status will be set later - buggy databases :-(
    for i in old_cursor.fetchall():
        o = db.Volume(name=i[1])
        try:
            new_db.session.add(o)
            new_db.session.commit()
        except Exception, e:
            log.error(e)
            continue
        volume_mapper[i[0]] = o.volume_id

    # people
    person_mapper = {}
    old_cursor.execute("SELECT id, name, email, phone FROM people;")
    for i in old_cursor.fetchall():
        o = db.Person(name=i[1], email=i[2], phone=i[3])
        try:
            new_db.session.add(o)
            new_db.session.commit()
        except Exception, e:
            log.error(e)
            continue
        person_mapper[i[0]] = o.person_id

    # languages
    language_mapper = {
        '': None,
        u'': None,
        0: None,
        '0': None,
        -1: None,