refactor
This commit is contained in:
		
							parent
							
								
									95c196076b
								
							
						
					
					
						commit
						511eea5bdf
					
				| 
						 | 
				
			
			@ -123,21 +123,22 @@ class User(TimeStampedModel, UserMixin):
 | 
			
		|||
        return user
 | 
			
		||||
 | 
			
		||||
class Item(TimeStampedModel):
 | 
			
		||||
    __versioned__ = {}
 | 
			
		||||
    __tablename__ = 'item'
 | 
			
		||||
    __versioned__ = {'base_classes': (TimeStampedModel,)}
 | 
			
		||||
 | 
			
		||||
    id = Column(Integer, primary_key=True)
 | 
			
		||||
    user_id = Column(Integer, ForeignKey('user.id'))
 | 
			
		||||
    published = Column(DateTime)
 | 
			
		||||
    type = Column(Enum('sourcedoc', 'xanadoc', 'xanalink', name='item_type'), nullable=False)
 | 
			
		||||
    type = Column(Enum('sourcedoc', 'xanadoc', 'xanalink', name='item_type'),
 | 
			
		||||
                  nullable=False)
 | 
			
		||||
    filename = Column(Unicode)
 | 
			
		||||
    text = Column(UnicodeText)
 | 
			
		||||
 | 
			
		||||
    user = relationship('User', backref='items')
 | 
			
		||||
 | 
			
		||||
    __mapper_args__ = {
 | 
			
		||||
        'polymorphic_identity': 'item',
 | 
			
		||||
        'polymorphic_on': type,
 | 
			
		||||
        'with_polymorphic': '*',
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
| 
						 | 
				
			
			@ -179,11 +180,34 @@ class Item(TimeStampedModel):
 | 
			
		|||
    def edit_url(self):
 | 
			
		||||
        return url_for('.edit_item', username=self.user.username, hashid=self.hashid)
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def add_title_url(self):
 | 
			
		||||
        return url_for('.add_title', username=self.user.username, hashid=self.hashid)
 | 
			
		||||
 | 
			
		||||
    def title(self, titles=None):
 | 
			
		||||
        if not titles:
 | 
			
		||||
            titles = XanaLink.get_all_titles()
 | 
			
		||||
        return self.type + ": " + titles.get(self, self.hashid)
 | 
			
		||||
 | 
			
		||||
    def has_title(self):
 | 
			
		||||
        titles = XanaLink.get_all_titles()
 | 
			
		||||
        print(titles)
 | 
			
		||||
        return self in titles
 | 
			
		||||
 | 
			
		||||
    def add_title(self, title, user):
 | 
			
		||||
        title_source_doc = SourceDoc(text=title, user=user)
 | 
			
		||||
        session.add(title_source_doc)
 | 
			
		||||
        session.commit()
 | 
			
		||||
        link_text = '''type=title
 | 
			
		||||
 | 
			
		||||
facet=
 | 
			
		||||
sourcedoc: {}
 | 
			
		||||
facet=
 | 
			
		||||
span: {},start=0,length={}'''.format(self.external_url, title_source_doc.external_url, len(title))
 | 
			
		||||
        title_link = XanaLink(text=link_text, user=user)
 | 
			
		||||
        session.add(title_link)
 | 
			
		||||
        session.commit()
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def from_external(cls, url):
 | 
			
		||||
        home = url_for('.home', _external=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -200,16 +224,16 @@ class Item(TimeStampedModel):
 | 
			
		|||
 | 
			
		||||
class XanaDoc(Item):
 | 
			
		||||
    __tablename__ = 'xanadoc'
 | 
			
		||||
    id = Column(Integer, ForeignKey('item.id'), primary_key=True)
 | 
			
		||||
 | 
			
		||||
    __mapper_args__ = {'polymorphic_identity': 'xanadoc'}
 | 
			
		||||
 | 
			
		||||
    id = Column(Integer, ForeignKey(Item.id), primary_key=True)
 | 
			
		||||
 | 
			
		||||
class XanaLink(Item):
 | 
			
		||||
    __tablename__ = 'xanalink'
 | 
			
		||||
    id = Column(Integer, ForeignKey('item.id'), primary_key=True)
 | 
			
		||||
 | 
			
		||||
    __mapper_args__ = {'polymorphic_identity': 'xanalink'}
 | 
			
		||||
 | 
			
		||||
    id = Column(Integer, ForeignKey(Item.id), primary_key=True)
 | 
			
		||||
 | 
			
		||||
    def parse(self):
 | 
			
		||||
        return parse_link(self.text)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +274,9 @@ class XanaLink(Item):
 | 
			
		|||
 | 
			
		||||
class SourceDoc(Item):
 | 
			
		||||
    __tablename__ = 'sourcedoc'
 | 
			
		||||
    id = Column(Integer, ForeignKey('item.id'), primary_key=True)
 | 
			
		||||
    __mapper_args__ = {'polymorphic_identity': 'sourcedoc'}
 | 
			
		||||
 | 
			
		||||
    id = Column(Integer, ForeignKey(Item.id), primary_key=True)
 | 
			
		||||
    db_price_per_character = Column(Integer)
 | 
			
		||||
    db_document_price = Column(Integer)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -262,7 +288,6 @@ class SourceDoc(Item):
 | 
			
		|||
    def price_per_character(self):
 | 
			
		||||
        return self.db_price_per_character or self.db_document_price / len(self.text)
 | 
			
		||||
 | 
			
		||||
    __mapper_args__ = {'polymorphic_identity': 'sourcedoc'}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
configure_mappers()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue