Exemplo n.º 1
0
def survey_gatherer(cursor, cursor2):
    cursor.execute('''SELECT * FROM survey
    WHERE is_psychological_test = 0
    ''')
    for record in cursor_generator(cursor):
        survey_id = record['id']
        cursor2.execute('''
            SELECT user_uid
            FROM survey_participant
            WHERE survey_id=%d
        '''%survey_id)
        answered_user = filter(lambda x: x is not None, 
                               [filter_user_uid(r['user_uid']) for r in cursor2.fetchall()])
        article_uid = record['article_uid'] 
        if article_uid is not None:
            cursor2.execute('''
                SELECT time,
                       uid AS article_uid
                FROM article
                WHERE
                    article.uid = %d
            '''%(article_uid))
            misc_info = cursor2.fetchone()
            if not misc_info:
                time = None
            else:
                time = misc_info['time']
        else:
            time = None
        record['answered_user'] = answered_user
        record['time'] = time
        
        yield record
Exemplo n.º 2
0
def panorama_converter(_iter):
    # FIXME: type is incompatible
    #
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of panorama table..."%idx


        '''
        type
        --
        "article" -> "article"
        "cafe" -> "gruop"
        "dolblog" -> x
        "user" -> x
        "comment" -> "comment"
        "commented" -> x
        "tag" -> "tag"
        '''
        type=wing["type"]
        '''
        "addrel" -> "add_rel"
        "invalid" -> x
        "app" -> x
        "modify" -> "modify"
        "survey_start" -> "survey_start"
        "removerel" -> "remove_rel"
        "article" -> "article"
        "cafe" -> "group"
        "file" -> "file"
        "remove" -> "remove"
        "move" -> "move"
        "dolblog" -> x
        "add_link" -> "add_menu" 
        "add" -> "add" 
        "user" -> "user"
        "remove_link" -> "remove_menu"
        '''
        event=wing["event"]
        from_group_id=wing["cafe_uid"]
        from_board_id=wing["board_uid"]
        user_uid=filter_user_uid(wing["user_uid"])
        target_uid=wing["target_uid"]
        created_at=wing["time"]
        class PanoramaSaver(BaseCustomSaver):
            def save(self, db):
                class FakeSession:
                    def __init__(self):
                        self.result = []
                    def add(self, elem):
                        self.result.append(elem)
                fake_session = FakeSession()
        yield PanoramaSaver()
Exemplo n.º 3
0
 def save(self, db):
     max_id = db.query(func.max(RelatedTag.columns.get('id'))).scalar()
     if max_id is None:
         max_id = 0
     max_id += 1
     ins = RelatedTag.insert().values(id=max_id,
                                      tag_1_id=wing["parent_id"], 
                                      tag_2_id=wing["id"],
                                      related_by_id=filter_user_uid(wing["user_uid"]),
                                      related_at=wing["time"])
     db.execute(ins)
     db.commit()
Exemplo n.º 4
0
def tag_converter(_iter):
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of tag table..."%idx
    
        creator_id = filter_user_uid(wing["user_uid"])
        if creator_id < 0 or creator_id == 3027: # SUPER HACK!
            creator_id = None

        tag = Tag(name=wing["name"],
                  creator_id=creator_id)
        tag.id = wing["id"]

        yield tag
Exemplo n.º 5
0
def comment_converter(_iter):
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of comment table..."%(wing["id"] - 1)
        if wing["relate"] is None or wing["relate"] == wing["id"]:
            parent_comment_id = None
        else:
            parent_comment_id = get_comment_uid(wing["relate"])
        comment = Comment(recommend_count=wing["recommendation_count"],
                          author_id=filter_user_uid(wing["user_uid"]),
                          anonymous=None,
                          parent_id=wing["parent_uid"],
                          parent_comment_id=parent_comment_id,
                          display_order=wing["position"],
                          reply_display_order=wing["depth_position"],
                          content=wing["content"],
                          created_at=wing["time"])
        if filter_user_uid(wing["user_uid"]) is None:
            comment.anonymous_name = wing["user_name"] or None
            # password may be NULL
            comment.anonymous["password"] = _hexdigest(wing["user_password"])
        comment.uid = get_comment_uid(wing["id"])
        yield comment
Exemplo n.º 6
0
def survey_question_converter(_iter):
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of survey question table..."%idx
        
        sq = SurveyQuestion(content=wing["question"],
                            min_answers=wing["lower_bound"],
                            max_answers=wing["upper_bound"],
                            _examples=json.dumps(wing["examples"]),
                            survey_id=wing["survey_id"],
                            order=wing["number"])
        sq.id = wing["id"]
        yield sq
        for p in wing["survey_selection"]:
            yield SurveyAnswer(survey_question_id=p["survey_question_id"],
                               user_id=filter_user_uid(p["user_uid"]),
                               answer=p["answer"])
Exemplo n.º 7
0
def attached_tag_converter(_iter):
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of attached-tag table..."%idx

        area = None if wing["extra"] is None else json.loads(wing["extra"])

        if is_orphaned_file_uid(wing["parent_uid"]):
            print wing["parent_uid"], "is orphaned"
            continue

        attached_tag = AttachedTag(tag_id=wing["tag_id"],
                                   target_id=wing["parent_uid"],
                                   creator_id=filter_user_uid(wing["user_uid"]),
                                   created_at=wing["time"],
                                   area=area)
        yield attached_tag
Exemplo n.º 8
0
def survey_converter(_iter):
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of survey table..."%idx

        due_date = wing["due"] or (datetime.utcnow() + timedelta(days=36500))
        survey = Survey(name=wing["subject"],
                        due_date=due_date,
                        parent_id=wing["article_uid"],
                        owner_id=filter_user_uid(wing["user_uid"]),
                        is_anonymous=wing["is_anonymous"],
                        permission_type=wing["permission_type"],
                        permission_value=wing["permission"] or "",
                        expose_level=wing["expose_level"],
                        min_vote_num=wing["minimum_number_of_votes"],
                        _answered_user=json.dumps(wing["answered_user"]),
                        created_at=wing["time"])
        survey.id = wing["id"]

        yield survey
Exemplo n.º 9
0
def file_gatherer(cursor, cursor2):
    '''
    Type of Author Id of file 
    --
    user
    article  -> author of article
    cafe -> NULL
    app - TODO
    '''

    cursor.execute('''
        SELECT "file".*,
               uid_list.type AS parent_uid_type
        FROM "file"
        JOIN uid_list ON 
            "file".parent_uid = uid_list.uid
    ''')
    for record in cursor_generator(cursor):
        parent_uid_type = record["parent_uid_type"]
        parent_uid = record["parent_uid"]
        if parent_uid_type == "user":
            record["author_id"] = parent_uid 
        elif parent_uid_type == "article":
            cursor2.execute('''
                SELECT user_uid FROM article WHERE uid = %d
            '''%(parent_uid))
            record["author_id"] = filter_user_uid(cursor2.fetchone()["user_uid"])
        elif parent_uid_type == "cafe":
            record["author_id"] = None
        elif parent_uid_type == "app":
            print "App(%d) file won't be migrated in this phase"%parent_uid
            continue
            '''
            # FIXME: author of app
            record["author_id"] = None
            '''
        else:
            raise Exception("NOT REACHABLE: %s"%parent_uid_type)
        yield record
Exemplo n.º 10
0
def favorite_converter(_iter):
    for idx, wing in enumerate(_iter):
        if idx % 1000 == 0:
            print "NOW MOVING %d-th record of favorite table..."%idx
        #FIXME: order in cloud.db
        if is_invalid_favorite_target_uid(wing["target_uid"]):
            print wing["target_uid"], "is target_uid!"
            continue

        if is_orphaned_file_uid(wing["target_uid"]):
            print wing["target_uid"], "is orphaned!"
            continue

        user_uid = filter_user_uid(wing["user_uid"])
        if user_uid is None:
            print "user_uid cannot be NULL!"
            continue

        favorite = Favorite(user_id=user_uid,
                            target_id=wing["target_uid"],
                            name=wing["name"],
                            order=wing["position"])
        favorite.id = wing["id"]
        yield favorite
Exemplo n.º 11
0
def article_gatherer(cursor, cursor2):
    cursor.execute('''SELECT * FROM article''')
    for wing in cursor_generator(cursor):
        wing["user_uid"] = filter_user_uid(wing["user_uid"])
        yield wing