Code Duplication    Length = 14-16 lines in 2 locations

chezbetty/models/transaction.py 2 locations

@@ 745-760 (lines=16) @@
742
                        .filter(or_(event.Event.type=="inventory", event.Event.type =="restock"))\
743
                        .order_by(desc(event.Event.timestamp))
744
745
    @classmethod
746
    @limitable_all
747
    def all(cls, trans_type=None):
748
        if not trans_type:
749
            return DBSession.query(cls)\
750
                            .join(Transaction)\
751
                            .join(event.Event)\
752
                            .filter(event.Event.deleted==False)\
753
                            .order_by(desc(event.Event.timestamp))
754
        else:
755
            return DBSession.query(cls)\
756
                            .join(Transaction)\
757
                            .join(event.Event)\
758
                            .filter(cls.type==trans_type)\
759
                            .filter(event.Event.deleted==False)\
760
                            .order_by(desc(event.Event.timestamp))
761
762
class PurchaseLineItem(SubTransaction):
763
    __mapper_args__ = {'polymorphic_identity': 'purchaselineitem'}
@@ 424-437 (lines=14) @@
421
user.User.get_deadbeats = __get_deadbeats
422
423
# This is in a stupid place due to circular input problems
424
@property
425
def __days_since_last_purchase(self):
426
    last_purchase = object_session(self).query(event.Event)\
427
            .join(Transaction)\
428
            .filter(Transaction.fr_account_virt_id == self.id)\
429
            .filter(event.Event.type == 'purchase')\
430
            .filter(event.Event.deleted==False)\
431
            .order_by(desc(event.Event.timestamp)).first()
432
433
    if last_purchase:
434
        diff = arrow.now() - last_purchase.timestamp
435
        return diff.days
436
    else:
437
        return None
438
user.User.days_since_last_purchase = __days_since_last_purchase
439
440
# This is in a stupid place due to circular input problems