Total Complexity | 3 |
Total Lines | 34 |
Duplicated Lines | 100 % |
Changes | 0 |
Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | from .model import * |
||
5 | View Code Duplication | class ItemVendor(Base): |
|
|
|||
6 | __tablename__ = 'item_vendors' |
||
7 | |||
8 | id = Column(Integer, primary_key=True, nullable=False) |
||
9 | vendor_id = Column(Integer, ForeignKey("vendors.id"), nullable=False) |
||
10 | item_id = Column(Integer, ForeignKey("items.id"), nullable=False) |
||
11 | item_number = Column(String(255), nullable=False) |
||
12 | |||
13 | enabled = Column(Boolean, default=True, nullable=False) |
||
14 | |||
15 | vendor = relationship( |
||
16 | vendor.Vendor, |
||
17 | primaryjoin="and_(ItemVendor.vendor_id==Vendor.id, ItemVendor.enabled==True)", |
||
18 | backref="items" |
||
19 | ) |
||
20 | item = relationship( |
||
21 | item.Item, |
||
22 | primaryjoin="and_(ItemVendor.item_id==Item.id, ItemVendor.enabled==True)", |
||
23 | backref="vendors" |
||
24 | ) |
||
25 | |||
26 | def __init__(self, vendor, item, item_number, enabled=True): |
||
27 | self.vendor_id = vendor.id |
||
28 | self.item_id = item.id |
||
29 | self.item_number = item_number |
||
30 | self.enabled = enabled |
||
31 | |||
32 | @classmethod |
||
33 | def from_id(cls, id): |
||
34 | return DBSession.query(cls).filter(cls.id == id).one() |
||
35 | |||
36 | @classmethod |
||
37 | def from_number_fuzzy(cls, number): |
||
38 | return DBSession.query(cls).filter(cls.item_number.like('%{}%'.format(number))).all() |
||
39 |