Code Duplication    Length = 14-16 lines in 2 locations

chezbetty/models/transaction.py 2 locations

@@ 745-760 (lines=16) @@
742
743
    @classmethod
744
    @limitable_all
745
    def all_item_purchases(cls, id):
746
        return DBSession.query(cls)\
747
                        .join(Transaction)\
748
                        .join(event.Event)\
749
                        .filter(cls.item_id == id)\
750
                        .filter(event.Event.deleted==False)\
751
                        .filter(event.Event.type=="purchase")\
752
                        .order_by(desc(event.Event.timestamp))
753
754
    @classmethod
755
    @limitable_all
756
    def all_item_events(cls, id):
757
        return DBSession.query(cls)\
758
                        .join(Transaction)\
759
                        .join(event.Event)\
760
                        .filter(cls.item_id == id)\
761
                        .filter(event.Event.deleted==False)\
762
                        .filter(or_(event.Event.type=="inventory", event.Event.type =="restock"))\
763
                        .order_by(desc(event.Event.timestamp))
@@ 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