From 6f0be2c492cce8012a9bcd4cd31e91566511f3cb Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Sat, 11 Jul 2009 01:36:00 +0100 Subject: [svn] override save for CaveDescriptions to scan qm wikilinks and add into the manytomany field linked_qms --- core/models.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'core/models.py') diff --git a/core/models.py b/core/models.py index facc5ff..7c23ad9 100644 --- a/core/models.py +++ b/core/models.py @@ -1,4 +1,4 @@ -import urllib, urlparse, string, os, datetime, logging +import urllib, urlparse, string, os, datetime, logging, re from django.forms import ModelForm from django.db import models from django.contrib import admin @@ -13,6 +13,21 @@ getcontext().prec=2 #use 2 significant figures for decimal calculations from models_survex import * +def get_related_by_wikilinks(wiki_text): + found=re.findall(settings.QM_PATTERN,wiki_text) + res=[] + for wikilink in found: + qmdict={'urlroot':settings.URL_ROOT,'cave':wikilink[2],'year':wikilink[1],'number':wikilink[3]} + try: + qm=QM.objects.get(found_by__cave__kataster_number = qmdict['cave'], + found_by__date__year = qmdict['year'], + number = qmdict['number']) + res.append(qm) + except QM.DoesNotExist: + print 'fail on '+str(wikilink) + + return res + logging.basicConfig(level=logging.DEBUG, filename=settings.LOGFILE, filemode='w') @@ -524,6 +539,14 @@ class CaveDescription(TroggleModel): def get_absolute_url(self): return urlparse.urljoin(settings.URL_ROOT, reverse('cavedescription', args=(self.short_name,))) + + def save(self): + super(CaveDescription, self).save() + qm_list=get_related_by_wikilinks(self.description) + print qm_list + for qm in qm_list: + self.linked_qms.add(qm) + super(CaveDescription, self).save() class NewSubCave(TroggleModel): name = models.CharField(max_length=200, unique = True) -- cgit v1.2.3