Merge lp:~stefanor/ibid/factoid-384640 into lp:~ibid-core/ibid/old-trunk-pack-0.92

Proposed by Stefano Rivera
Status: Merged
Approved by: Stefano Rivera
Approved revision: 669
Merged at revision: 682
Proposed branch: lp:~stefanor/ibid/factoid-384640
Merge into: lp:~ibid-core/ibid/old-trunk-pack-0.92
Diff against target: None lines
To merge this branch: bzr merge lp:~stefanor/ibid/factoid-384640
Reviewer Review Type Date Requested Status
Michael Gorven Approve
Jonathan Hitchcock Approve
Review via email: mp+7720@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Michael Gorven (mgorven) wrote :

Will the index be created for new databases as well?

Revision history for this message
Stefano Rivera (stefanor) wrote :

> Will the index be created for new databases as well?

Yes, that's what unique=True does

Revision history for this message
Jonathan Hitchcock (vhata) :
review: Approve
Revision history for this message
Michael Gorven (mgorven) wrote :

 review approve

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ibid/plugins/factoid.py'
2--- ibid/plugins/factoid.py 2009-06-17 11:58:36 +0000
3+++ ibid/plugins/factoid.py 2009-06-20 17:47:50 +0000
4@@ -2,7 +2,7 @@
5 import re
6 import logging
7
8-from sqlalchemy import Column, Integer, Unicode, DateTime, ForeignKey, UnicodeText, Table, or_
9+from sqlalchemy import Column, Integer, Unicode, DateTime, ForeignKey, UnicodeText, Table, Index, or_
10 from sqlalchemy.orm import relation, eagerload
11 from sqlalchemy.sql import func
12
13@@ -20,7 +20,7 @@
14 class FactoidName(Base):
15 __table__ = Table('factoid_names', Base.metadata,
16 Column('id', Integer, primary_key=True),
17- Column('name', Unicode(128), nullable=False),
18+ Column('name', Unicode(128), nullable=False, unique=True),
19 Column('factoid_id', Integer, ForeignKey('factoids.id'), nullable=False),
20 Column('identity_id', Integer, ForeignKey('identities.id')),
21 Column('time', DateTime, nullable=False, default=func.current_timestamp()),
22@@ -30,8 +30,10 @@
23 class FactoidNameSchema(VersionedSchema):
24 def upgrade_1_to_2(self):
25 self.add_column(Column('factpack', Integer, ForeignKey('factpacks.id')))
26+ def upgrade_2_to_3(self):
27+ Index('name', self.table.c.name, unique=True).create(bind=self.upgrade_session.bind)
28
29- __table__.versioned_schema = FactoidNameSchema(__table__, 2)
30+ __table__.versioned_schema = FactoidNameSchema(__table__, 3)
31
32 def __init__(self, name, identity_id, factoid_id=None, factpack=None):
33 self.name = name
34@@ -240,9 +242,15 @@
35 event.addresponse(u"That makes no sense, they *are* the same")
36 return
37
38- factoid = event.session.query(Factoid).join(Factoid.names)\
39+ factoid = event.session.query(Factoid).join(Factoid.names) \
40 .filter(func.lower(FactoidName.name)==escape_name(source).lower()).first()
41 if factoid:
42+ target_factoid = event.session.query(FactoidName) \
43+ .filter(func.lower(FactoidName.name)==escape_name(target).lower()).first()
44+ if target_factoid:
45+ event.addresponse(u"I already know stuff about %s", target)
46+ return
47+
48 name = FactoidName(escape_name(unicode(target)), event.identity)
49 factoid.names.append(name)
50 event.session.save_or_update(factoid)

Subscribers

People subscribed via source and target branches