[Plugin] balance: Changed model
* serialize Transaction with reversal and original Transaction IDs
This commit is contained in:
		
							parent
							
								
									7c0d609b80
								
							
						
					
					
						commit
						7ccae7e888
					
				|  | @ -139,9 +139,7 @@ def set_lifetime(token, current_session, **kwargs): | ||||||
|         raise Forbidden |         raise Forbidden | ||||||
|     try: |     try: | ||||||
|         lifetime = request.get_json()["value"] |         lifetime = request.get_json()["value"] | ||||||
|         logger.debug( |         logger.debug(f"set lifetime >{lifetime}< to access token >{token}<") | ||||||
|             "set lifetime {{ {} }} to access token {{ {} }}".format(lifetime, token) |  | ||||||
|         ) |  | ||||||
|         sessionController.set_lifetime(session, lifetime) |         sessionController.set_lifetime(session, lifetime) | ||||||
|         return jsonify(sessionController.get_session(token, current_session._user)) |         return jsonify(sessionController.get_session(token, current_session._user)) | ||||||
|     except (KeyError, TypeError): |     except (KeyError, TypeError): | ||||||
|  |  | ||||||
|  | @ -13,25 +13,24 @@ class Transaction(db.Model, ModelSerializeMixin): | ||||||
|     _receiver_id = db.Column("receiver_id", db.Integer, db.ForeignKey("user.id")) |     _receiver_id = db.Column("receiver_id", db.Integer, db.ForeignKey("user.id")) | ||||||
|     _sender_id = db.Column("sender_id", db.Integer, db.ForeignKey("user.id")) |     _sender_id = db.Column("sender_id", db.Integer, db.ForeignKey("user.id")) | ||||||
|     _author_id = db.Column("author_id", db.Integer, db.ForeignKey("user.id"), nullable=False) |     _author_id = db.Column("author_id", db.Integer, db.ForeignKey("user.id"), nullable=False) | ||||||
|     _reversal_id = db.Column("reversal_id", db.Integer, db.ForeignKey("balance_transaction.id")) |  | ||||||
| 
 | 
 | ||||||
|     # Public and exported member |     # Public and exported member | ||||||
|     id: int = db.Column("id", db.Integer, primary_key=True) |     id: int = db.Column("id", db.Integer, primary_key=True) | ||||||
|     time: datetime = db.Column(UtcDateTime, nullable=False, default=UtcDateTime.current_utc) |     time: datetime = db.Column(UtcDateTime, nullable=False, default=UtcDateTime.current_utc) | ||||||
|     amount: float = db.Column(db.Numeric(precision=5, scale=2, asdecimal=False), nullable=False) |     amount: float = db.Column(db.Numeric(precision=5, scale=2, asdecimal=False), nullable=False) | ||||||
|     reversal: Optional["Transaction"] = db.relationship( |     reversal_id: int = db.Column(db.Integer, db.ForeignKey("balance_transaction.id")) | ||||||
|         "Transaction", uselist=False, post_update=True, foreign_keys=[_reversal_id] |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     # Dummy properties used for JSON serialization (userid instead of full user) |     # Dummy properties used for JSON serialization (userid instead of full user) | ||||||
|     sender_id: Optional[str] = "" |     sender_id: Optional[str] = "" | ||||||
|     receiver_id: Optional[str] = "" |     receiver_id: Optional[str] = "" | ||||||
|     author_id: Optional[str] = "" |     author_id: Optional[str] = "" | ||||||
|  |     original_id: Optional[int] = -1 | ||||||
| 
 | 
 | ||||||
|     # Not exported relationships just in backend only |     # Not exported relationships just in backend only | ||||||
|     sender_: User = db.relationship("User", foreign_keys=[_sender_id]) |     sender_: User = db.relationship("User", foreign_keys=[_sender_id]) | ||||||
|     receiver_: User = db.relationship("User", foreign_keys=[_receiver_id]) |     receiver_: User = db.relationship("User", foreign_keys=[_receiver_id]) | ||||||
|     author_: User = db.relationship("User", foreign_keys=[_author_id]) |     author_: User = db.relationship("User", foreign_keys=[_author_id]) | ||||||
|  |     original_ = db.relationship("Transaction", uselist=False, backref=db.backref("reversal_", remote_side=[id])) | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def sender_id(self): |     def sender_id(self): | ||||||
|  | @ -45,11 +44,6 @@ class Transaction(db.Model, ModelSerializeMixin): | ||||||
|     def author_id(self): |     def author_id(self): | ||||||
|         return self.author_.userid |         return self.author_.userid | ||||||
| 
 | 
 | ||||||
|     # Override to prevent circular dependencies (endless JSON) |     @property | ||||||
|     def serialize(self): |     def original_id(self): | ||||||
|         d = super().serialize() |         return self.original_.id if self.original_ else None | ||||||
|         if d["reversal"]: |  | ||||||
|             d["reversal"].reversal = None |  | ||||||
|         else: |  | ||||||
|             d["reversal"] = None |  | ||||||
|         return d |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue