File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -97,6 +97,17 @@ def oauth_load(cls, token=None):
9797
9898 return o .se_update (data )
9999
100+ @classmethod
101+ def create_unique (cls , session , id ):
102+ # if the site user was cached, manually upgrade it to a local user
103+ if SEUser .query .get (id ) is not None :
104+ session .execute (cls .__table__ .insert ().values (id = id ))
105+ return cls .query .get (id )
106+
107+ o = cls (id = id )
108+ session .add (o )
109+ return o
110+
100111
101112user_group = db .Table (
102113 'user_group' ,
Original file line number Diff line number Diff line change @@ -38,6 +38,13 @@ def __hash__(self):
3838class UniqueMixin :
3939 """Keep a cache of unique instances in memory so new instances can be safely created in bulk before they are committed."""
4040
41+ @classmethod
42+ def create_unique (cls , session , ** kwargs ):
43+ o = cls (** kwargs )
44+ session .add (o )
45+ return o
46+
47+
4148 @classmethod
4249 def get_unique (cls , ** kwargs ):
4350 g ._unique_cache = cache = getattr (g , '_unique_cache' , {})
@@ -54,8 +61,7 @@ def get_unique(cls, **kwargs):
5461 o = session .query (cls ).filter_by (** kwargs ).first ()
5562
5663 if o is None :
57- o = cls (** kwargs )
58- session .add (o )
64+ o = cls .create_unique (session , ** kwargs )
5965
6066 cache [key ] = o
6167
Original file line number Diff line number Diff line change @@ -16,7 +16,7 @@ class SEUser(ExternalIDModel):
1616 reputation = db .Column (db .Integer , nullable = False )
1717
1818 def __str__ (self ):
19- return self .display_name
19+ return '{} {}' . format ( self .id , self . display_name )
2020
2121 @classmethod
2222 def se_load (cls , ident , update = True ):
You can’t perform that action at this time.
0 commit comments