Refactor model URL builder.

This commit is contained in:
Edward Betts 2018-06-05 12:05:07 +01:00
parent c5a9940e81
commit 2eabe72776

View file

@ -35,6 +35,12 @@ reserved_name = ['root', 'admin', 'administrator', 'support', 'info',
re_username = re.compile('^\w+$', re.U) re_username = re.compile('^\w+$', re.U)
re_full_name = re.compile('^([-.\'" ]|[^\W\d_])+$', re.U) re_full_name = re.compile('^([-.\'" ]|[^\W\d_])+$', re.U)
def item_url():
return url_for('view.view_item',
username=self.user.username,
hashid=self.hashid)
def user_exists(field, value): def user_exists(field, value):
return session.query(exists().where(field == value)).scalar() return session.query(exists().where(field == value)).scalar()
@ -168,36 +174,34 @@ class Item(TimeStampedModel):
return return
return cls.query.get(item_id) return cls.query.get(item_id)
@property def view_url(self, endpoint, **kwargs):
def url(self): return url_for('view.' + endpoint,
return url_for('view.view_item',
username=self.user.username,
hashid=self.hashid)
def version_url(self, version):
return url_for('view.view_item',
username=self.user.username, username=self.user.username,
hashid=self.hashid, hashid=self.hashid,
v=version) **kwargs)
@property
def url(self):
return self.view_url('view_item')
def version_url(self, version):
return self.view_url('view_item', v=version)
@property @property
def history_url(self): def history_url(self):
return url_for('view.history', username=self.user.username, hashid=self.hashid) return self.view_url('history')
@property @property
def external_url(self): def external_url(self):
return url_for('view.view_item', return self.view_url('view_item', _external=True)
username=self.user.username,
hashid=self.hashid,
_external=True)
@property @property
def edit_url(self): def edit_url(self):
return url_for('view.edit_item', username=self.user.username, hashid=self.hashid) return self.view_url('edit_item')
@property @property
def set_title_url(self): def set_title_url(self):
return url_for('view.set_title', username=self.user.username, hashid=self.hashid) return self.view_url('set_title')
def title(self, titles=None): def title(self, titles=None):
if not titles: if not titles:
@ -249,6 +253,10 @@ class XanaDoc(Item):
def snippet(self): def snippet(self):
return self.text return self.text
@property
def xanaedit_url(self):
return self.view_url('xanaedit')
class XanaLink(Item): class XanaLink(Item):
__tablename__ = 'xanalink' __tablename__ = 'xanalink'
__mapper_args__ = {'polymorphic_identity': 'xanalink'} __mapper_args__ = {'polymorphic_identity': 'xanalink'}