def populate_models(tumblr_user, user): ''' Takes a tumblr username (string), and a User model. Populates the tumblr models with data from 'tumblr_user'.tumblr.com, and associates the entries with 'user'. ''' tumbls = Api(tumblr_user + ".tumblr.com") for tumbl in tumbls.read(): # Common to all models id = tumbl['id'] pub_date = datetime.datetime.strptime(tumbl['date-gmt'], '%Y-%m-%d %H:%M:%S %Z') # 'Regular' objects. if tumbl['type'] == "regular": if tumbl['regular-title']: title = tumbl['regular-title'] else: title = "" body = tumbl['regular-body'] m = Regular(id=id, pub_date=pub_date, user=user, title=title, body=body) # 'Photo' objects. elif tumbl['type'] == "photo": source = tumbl['photo-url-250'] if tumbl['photo-caption']: caption = tumbl['photo-caption'] else: caption = "" m = Photo(id=id, pub_date=pub_date, user=user, source=source, caption=caption) # 'Quote' objects. elif tumbl['type'] == "quote": quote = tumbl['quote-text'] if tumbl['quote-source']: source = tumbl['quote-source'] else: source = "" m = Quote(id=id, pub_date=pub_date, user=user, quote=quote, source=source) # 'Link' objects. elif tumbl['type'] == "link": if tumbl['link-text']: name = tumbl['link-text'] else: name = "" url = tumbl['link-url'] if tumbl['link-description']: description = tumbl['link-description'] else: description = "" m = Link(id=id, pub_date=pub_date, user=user, name=name, url=url, description=description) # 'Conversation' objects. elif tumbl['type'] == "conversation": if tumbl['conversation-title']: title = tumbl['conversation-title'] else: title = "" m = Conversation(id=id, pub_date=pub_date, user=user, title=title, conversation_text=tumbl['conversation-text']) m.save() # 'Video' objects. elif tumbl['type'] == "video": embed = tumbl['video-player'] if tumbl['video-caption']: caption = tumbl['video-caption'] else: caption = "" m = Video(id=id, pub_date=pub_date, user=user, embed=embed, caption=caption) # 'Audio' objects. elif tumbl['type'] == "audio": embed = tumbl['audio-player'] if tumbl['audio-caption']: caption = tumbl['audio-caption'] else: caption = "" m = Audio(id=id, pub_date=pub_date, user=user, embed=embed, caption=caption) # TODO: Raise error. else: print "ERROR!", tumbl return '' m.save()