lkd-planet/DJAGEN/branches/mustafa_branch/djagen/collector/planethandler.py
2010-08-31 19:07:56 +00:00

113 lines
3.9 KiB
Python
Executable File

#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = ['Oguz Yarimtepe <oguzy@gmail.com>', 'Mustafa Arici <cad@mustafaarici.info>']
''' This module is used for collecting processed data from any planet instance that is already ran.'''
from djagen.collector.models import *
class PlanetHandler():
def __init__(self,planet):
self.channels = planet.channels()
def run(self):
for channel in self.channels:
self.author_ch = self.__DeliverChannelToDB(channel)
for item in channel.items():
self.__DeliverItemToDB(item,self.author_ch)
self.__DeliverRunTimeToDB()
def __DeliverChannelToDB(self,channel):
""" This def. writes author and channel related bits into the DB.
You should provide at least a channel from planet.channels()
This def. returns an author object-model related to DB
"""
try:
author = Authors.objects.get(author_id = channel.id )
except:
author = Authors(author_id=channel.id)
finally:
author.author_name = channel.name
try:
author.author_surname = channel.surname
except:
author.author_surname = ''
author.channel_url = channel.url
try:
author.author_face = channel.face
except:
author.author_face = None
try:
author.channel_subtitle = channel.subtitle
except:
author.channel_subtitle = None
try:
author.channel_title = channel.title
except:
author.channel_title = None
try:
author.channel_link = channel.link
except:
author.channel_link = None
try:
author.channel_url_status = channel.url_status
except:
author.channel_url_status = None
if channel.label == "Personal":
author.label_personal = 1
if channel.label == "LKD":
author.label_lkd = 1
if channel.label == "Community":
author.label_community = 1
if channel.label == "Eng":
author.label_eng = 1
author.save()
return author
def __DeliverItemToDB(self,item,author):
""" This def. writes entry and item related bits into the DB.
You should provide at least a an existing author object-model and an item from channel
This def. returns an entry object-model related to DB
"""
try:
entry = author.entries_set.get(id_hash = item.id_hash)
except:
d = item.date
entry = author.entries_set.create(
id_hash = item.id_hash,
date =datetime.datetime(d[0], d[1], d[2], d[3], d[4], d[5]),
)
finally:
try:
entry.title = item.title
except:
entry.title = None
try:
entry.content_html = item.content
except:
entry.content_html = None
try:
entry.content_text = entry.sanitize(item.content)
except:
entry.content_text = None
try:
entry.summary = item.summary
except:
entry.summary = None
try:
entry.link = item.link
except:
entry.link = None
d = item.date
entry.date = datetime.datetime(d[0], d[1], d[2], d[3], d[4], d[5])
entry.save()
return entry
def __DeliverRunTimeToDB(self):
""" Passes the time to DB, which this script has runned at."""
r = RunTime()
r.save()