Update xanapage references.
This commit is contained in:
parent
95927d9d43
commit
b01c24a364
|
@ -35,6 +35,8 @@ reserved_name = ['root', 'admin', 'administrator', 'support', 'info',
|
|||
|
||||
re_username = re.compile(r'^\w+$', re.U)
|
||||
re_full_name = re.compile(r'^([-.\'" ]|[^\W\d_])+$', re.U)
|
||||
re_comment = re.compile(r'#.*')
|
||||
|
||||
|
||||
def item_url():
|
||||
return url_for('view.view_item',
|
||||
|
@ -279,6 +281,28 @@ class XanaPage(Item):
|
|||
def save_xanaedit_url(self):
|
||||
return self.view_url('save_xanaedit')
|
||||
|
||||
def iter_spans(self):
|
||||
for line in self.text.splitlines():
|
||||
line = re_comment.sub('', line).strip()
|
||||
if not line:
|
||||
continue
|
||||
span_pointer = parse_span(line)
|
||||
if span_pointer:
|
||||
yield span_pointer
|
||||
|
||||
def update_references(self):
|
||||
for url, start, length in self.iter_spans():
|
||||
src_doc = Item.from_external(url)
|
||||
if not src_doc or not src_doc.id:
|
||||
continue
|
||||
existing = Reference.query.get((self.id, src_doc.id))
|
||||
if existing:
|
||||
continue
|
||||
ref = Reference(subject_id=self.id, object_id=src_doc.id)
|
||||
session.add(ref)
|
||||
session.commit()
|
||||
|
||||
|
||||
class XanaLink(Item):
|
||||
__tablename__ = 'xanalink'
|
||||
__mapper_args__ = {'polymorphic_identity': 'xanalink'}
|
||||
|
|
|
@ -408,6 +408,7 @@ def create_xanapage_from_sourcedoc(username, hashid):
|
|||
page = XanaPage(user=current_user, text=edl)
|
||||
session.add(page)
|
||||
session.commit()
|
||||
page.update_references()
|
||||
|
||||
flash('New xanapage created.')
|
||||
return redirect(page.url)
|
||||
|
@ -454,6 +455,7 @@ def save_xanaedit(username, hashid):
|
|||
|
||||
page.text = new_edl
|
||||
session.commit()
|
||||
page.update_references()
|
||||
|
||||
flash('Edits saved.')
|
||||
|
||||
|
@ -473,6 +475,8 @@ def edit_item(username, hashid):
|
|||
if form.validate_on_submit():
|
||||
form.populate_obj(obj)
|
||||
session.commit()
|
||||
if obj.type == 'xanapage':
|
||||
obj.update_references()
|
||||
flash('Changes to {} saved.'.format(obj.type))
|
||||
return redirect(obj.url)
|
||||
return render_template('edit.html', form=form, doc=obj)
|
||||
|
|
Loading…
Reference in a new issue