summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Snapshots/model.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2009-03-06 18:05:28 +0000
committerNarayan Desai <desai@mcs.anl.gov>2009-03-06 18:05:28 +0000
commitd60154796408589b68350a34e25ee8d4efb03a78 (patch)
tree420f0c24624e5d08422ffe1aadd0bba6e293d42a /src/lib/Server/Snapshots/model.py
parent32cd7b983242fb085d68a1fb7a7fbbfb6f45db5f (diff)
downloadbcfg2-d60154796408589b68350a34e25ee8d4efb03a78.tar.gz
bcfg2-d60154796408589b68350a34e25ee8d4efb03a78.tar.bz2
bcfg2-d60154796408589b68350a34e25ee8d4efb03a78.zip
Snapshots: Finish off importer (for old-style statistics)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5108 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Snapshots/model.py')
-rw-r--r--src/lib/Server/Snapshots/model.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/Server/Snapshots/model.py b/src/lib/Server/Snapshots/model.py
index f1432ffce..ea9c6b811 100644
--- a/src/lib/Server/Snapshots/model.py
+++ b/src/lib/Server/Snapshots/model.py
@@ -1,15 +1,19 @@
-from sqlalchemy import Table, Column, Integer, Unicode, ForeignKey, Boolean, DateTime, create_engine, UnicodeText
+from sqlalchemy import Table, Column, Integer, Unicode, ForeignKey, Boolean, DateTime, UnicodeText
import datetime
import sqlalchemy.exceptions
from sqlalchemy.orm import relation, backref
from sqlalchemy.ext.declarative import declarative_base
class Uniquer(object):
+ force_rt = True
@classmethod
def by_value(cls, session, **kwargs):
- try:
- return session.query(cls).filter_by(**kwargs).one()
- except sqlalchemy.exceptions.InvalidRequestError:
+ if cls.force_rt:
+ try:
+ return session.query(cls).filter_by(**kwargs).one()
+ except sqlalchemy.exceptions.InvalidRequestError:
+ return cls(**kwargs)
+ else:
return cls(**kwargs)
@classmethod
@@ -97,10 +101,13 @@ class CorrespondenceType(object):
mtype = Package
@classmethod
def from_record(cls, mysession, record):
- (mod, corr, s_dict, e_dict) = record
- start = cls.mtype.by_value(mysession, **s_dict)
+ (mod, corr, name, s_dict, e_dict) = record
+ if not s_dict:
+ start=None
+ else:
+ start = cls.mtype.by_value(mysession, name=name, **s_dict)
if s_dict != e_dict:
- end = cls.mtype.by_value(mysession, **e_dict)
+ end = cls.mtype.by_value(mysession, name=name, **e_dict)
else:
end = start
return cls(start=start, end=end, modified=mod, correct=corr)
@@ -142,7 +149,7 @@ service_snap = Table('service_snap', Base.metadata,
Column('spair_id', Integer, ForeignKey('service_pair.id')),
Column('snapshot_id', Integer, ForeignKey('snapshot.id')))
-class File(Base):
+class File(Base, Uniquer):
__tablename__ = 'file'
id = Column(Integer, primary_key=True)
name = Column(UnicodeText)