コード例 #1
0
ファイル: models.py プロジェクト: gridaphobe/fluid-cv
 def __init__(self, uid, user, tags):
     # remove picture tag
     try:
         del(tags['%s/picture' % user])
     except KeyError:
         pass
     super(Person, self).__init__(uid, user, tags)
     # if given-name and family-name don't exist we will
     # be clever and use fluiddb/users/name instead
     if not (self.given_name or self.family_name):
         name = fluid.get('/about/%s/fluiddb/users/name' % self.about)
         name = name.content.split()
         # in case the user did not specify a full name we will
         # treat the specified name as their first name
         self.given_name = name.pop(0)
         self.family_name = ' '.join(name)
コード例 #2
0
ファイル: __init__.py プロジェクト: gridaphobe/fluid-cv
def cv(user):
    # quick check to make sure the user actually exists
    resp = fluid.get('/users/%s' % user)
    if resp.status_code == 404:
        abort(404)
    person_rpc = Person.filter('fluiddb/users/username="******"', user, async=True)
    # check for person's picture
    #logging.debug('Checking for %s/picture at %s' % (user, person.picture))
    #h = httplib2.Http()
    #head, cont = h.request(person.picture, 'HEAD')
    #if head['status'] == '200':
    #    person.has_pic = True
    #    logging.debug('%s/picture exists' % user)
    #else:
    #    person.has_pic = False
    #    logging.debug('%s/picture does not exist. Returned %s status' % (
    #        user, head['status']))
    # find user's jobs
    work_rpc = Work.filter('has %s/employer', user, async=True)
    # find user's schools
    school_rpc = Education.filter('has %s/attended', user, async=True)
    # find user's publications
    #publications = fluid_filter('has %s/publication' % user)
    #publications = [Publication(uid, user) for uid in publications]
    publications = []
    # find user's skills associated with o'reilly books
    oskill_rpc = OReillySkill.filter(
            'has %s/skill and has %%s/title' % user, 'oreilly.com', async=True)

    resp = fluid.result(person_rpc)
    logging.info('Person filter for %s returned %d' % (user, resp.status_code))
    if resp.status_code == 200 and resp.content['results']['id']:
        [(uid, tags)] = resp.content['results']['id'].items()
        person = Person(uid, user, tags)
    else:
        abort(404)

    resp = fluid.result(work_rpc)
    logging.info('Work filter for %s returned %d' % (user, resp.status_code))
    if resp.status_code == 200 and resp.content['results']['id']:
        resp = resp.content['results']['id']
        jobs = Work.from_response(user, resp)
    else:
        #FIXME need better error handling
        jobs = []

    resp = fluid.result(school_rpc)
    logging.info('School filter for %s returned %d' % (user, resp.status_code))
    if resp.status_code == 200 and resp.content['results']['id']:
        resp = resp.content['results']['id']
        schools = Education.from_response(user, resp)
    else:
        schools = []

    resp = fluid.result(oskill_rpc)
    logging.info('Skill filter for %s returned %d' % (user, resp.status_code))
    if resp.status_code == 200 and resp.content['results']['id']:
        resp = resp.content['results']['id']
        oskills = OReillySkill.from_response(resp)
    else:
        oskills = []

    return render_template('cv.html', person=person, jobs=jobs,
                           schools=schools, publications=publications,
                           oskills=oskills,
                           current_date=datetime.now().date())
コード例 #3
0
ファイル: models.py プロジェクト: gridaphobe/fluid-cv
 def _get_values(self, tags):
     query = 'fluiddb/about="%s"' % self.about
     resp = fluid.get('/values', query=query, tags=tags)
     if resp:
         return resp.content
     return {}
コード例 #4
0
ファイル: models.py プロジェクト: gridaphobe/fluid-cv
 def _get_tag_value(self, tagpath):
     resp = fluid.get('/objects/%s/%s' % (self.uid, tagpath))
     if resp:
         return resp.content
     return ''
コード例 #5
0
ファイル: helpers.py プロジェクト: gridaphobe/fluid-cv
def fluid_filter(query):
    """Helper function to filter Fluidinfo objects"""
    resp = fluid.get('/objects', query=query)
    if resp:
        return resp.content['ids']
    return []