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_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):
return session.query(exists().where(field == value)).scalar()
@ -168,36 +174,34 @@ class Item(TimeStampedModel):
return
return cls.query.get(item_id)
@property
def url(self):
return url_for('view.view_item',
username=self.user.username,
hashid=self.hashid)
def version_url(self, version):
return url_for('view.view_item',
def view_url(self, endpoint, **kwargs):
return url_for('view.' + endpoint,
username=self.user.username,
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
def history_url(self):
return url_for('view.history', username=self.user.username, hashid=self.hashid)
return self.view_url('history')
@property
def external_url(self):
return url_for('view.view_item',
username=self.user.username,
hashid=self.hashid,
_external=True)
return self.view_url('view_item', _external=True)
@property
def edit_url(self):
return url_for('view.edit_item', username=self.user.username, hashid=self.hashid)
return self.view_url('edit_item')
@property
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):
if not titles:
@ -249,6 +253,10 @@ class XanaDoc(Item):
def snippet(self):
return self.text
@property
def xanaedit_url(self):
return self.view_url('xanaedit')
class XanaLink(Item):
__tablename__ = 'xanalink'
__mapper_args__ = {'polymorphic_identity': 'xanalink'}