[Sqlalchemy-commits] [1216] sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py: added always_refresh
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-03-26 23:51:25
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1216] sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py: added always_refresh flag.</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1216</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-03-26 17:51:13 -0600 (Sun, 26 Mar 2006)</dd> </dl> <h3>Log Message</h3> <pre>added always_refresh flag. when the mapper loads rows, it will pull objects from the identity map normally, but always blows away their attributes and replaces with those from the database, including changes</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunklibsqlalchemymappingmapperpy">sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunklibsqlalchemymappingmapperpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py (1215 => 1216)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py 2006-03-26 21:44:22 UTC (rev 1215) +++ sqlalchemy/trunk/lib/sqlalchemy/mapping/mapper.py 2006-03-26 23:51:13 UTC (rev 1216) </span><span class="lines">@@ -39,6 +39,7 @@ </span><span class="cx"> extension = None, </span><span class="cx"> order_by = False, </span><span class="cx"> allow_column_override = False, </span><ins>+ always_refresh = False, </ins><span class="cx"> **kwargs): </span><span class="cx"> </span><span class="cx"> if primarytable is not None: </span><span class="lines">@@ -52,6 +53,7 @@ </span><span class="cx"> self.is_primary = is_primary </span><span class="cx"> self.order_by = order_by </span><span class="cx"> self._options = {} </span><ins>+ self.always_refresh = always_refresh </ins><span class="cx"> </span><span class="cx"> if not issubclass(class_, object): </span><span class="cx"> raise ArgumentError("Class '%s' is not a new-style class" % class_.__name__) </span><span class="lines">@@ -308,7 +310,7 @@ </span><span class="cx"> return self._get(key, ident) </span><span class="cx"> </span><span class="cx"> def _get(self, key, ident=None, reload=False): </span><del>- if not reload: </del><ins>+ if not reload and not self.always_refresh: </ins><span class="cx"> try: </span><span class="cx"> return objectstore.get_session()._get(key) </span><span class="cx"> except KeyError: </span><span class="lines">@@ -815,6 +817,8 @@ </span><span class="cx"> # look in main identity map. if its there, we dont do anything to it, </span><span class="cx"> # including modifying any of its related items lists, as its already </span><span class="cx"> # been exposed to being modified by the application. </span><ins>+ + populate_existing = populate_existing or self.always_refresh </ins><span class="cx"> identitykey = self._identity_key(row) </span><span class="cx"> sess = objectstore.get_session() </span><span class="cx"> if sess.has_key(identitykey): </span></span></pre> </div> </div> </body> </html> |