summaryrefslogtreecommitdiffstats
path: root/core/models/caves.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2021-12-30 19:07:17 +0000
committerPhilip Sargent <philip.sargent@klebos.com>2021-12-30 19:07:17 +0000
commitd1e6125d156087884810b3895acde11e72876b74 (patch)
treed3f0f7481c4ac3a15cfa38c2e79f6ea986fd2235 /core/models/caves.py
parent26454bf6c6764d2df5a45b48773bfa2c88a13fcc (diff)
downloadtroggle-d1e6125d156087884810b3895acde11e72876b74.tar.gz
troggle-d1e6125d156087884810b3895acde11e72876b74.tar.bz2
troggle-d1e6125d156087884810b3895acde11e72876b74.zip
add git commit to file saving in 3 places
Diffstat (limited to 'core/models/caves.py')
-rw-r--r--core/models/caves.py52
1 files changed, 33 insertions, 19 deletions
diff --git a/core/models/caves.py b/core/models/caves.py
index e94ff74..11f7607 100644
--- a/core/models/caves.py
+++ b/core/models/caves.py
@@ -37,6 +37,28 @@ todo='''- Move utility function into utils.py
- Restore constraint: unique_together = (("area", "kataster_number"), ("area", "unofficial_number"))
'''
+def writetrogglefile(filepath, filecontent):
+ '''Set permissions to rw-rw-r-- and commit the new saved file to git'''
+ filepath = Path(filepath)
+ cwd = filepath.parent
+ filename = filepath.name
+ git = settings.GIT
+
+ try:
+ with open(filepath, "w") as f:
+ os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
+ f.write(filecontent)
+ print(f'WRITING{cwd}---{filename} ')
+ call([git, "add", filename], cwd=cwd)
+ call([git, "commit", "-m", 'Online cave or entrance edit'], cwd=cwd)
+ except PermissionError:
+ message = f'CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {filename}. Ask a nerd to fix this.'
+ return render(request,'errors/generic.html', {'message': message})
+ except:
+ message = f'CANNOT git on server for this file {filename}. Edits not saved.\nAsk a nerd to fix this.'
+ return render(request,'errors/generic.html', {'message': message})
+
+
class Area(TroggleModel):
short_name = models.CharField(max_length=100)
name = models.CharField(max_length=200, blank=True, null=True)
@@ -202,19 +224,15 @@ class Cave(TroggleModel):
return res
def writeDataFile(self):
- try:
- f = open(os.path.join(settings.CAVEDESCRIPTIONS, self.filename), "w")
- except:
- subprocess.call(settings.FIX_PERMISSIONS)
- f = open(os.path.join(settings.CAVEDESCRIPTIONS, self.filename), "w")
+ filepath = os.path.join(settings.CAVEDESCRIPTIONS, self.filename)
+
t = loader.get_template('dataformat/cave.xml')
#c = Context({'cave': self})
c = dict({'cave': self})
- u = t.render(c)
- # u8 = u.encode("utf-8")
- # f.write(u8)
- f.write(u)
- f.close()
+ u = t.render(c)
+ writetrogglefile(filepath, u)
+ return
+
def getArea(self):
areas = self.area.all()
@@ -382,18 +400,14 @@ class Entrance(TroggleModel):
return Path(settings.ENTRANCEDESCRIPTIONS, self.filename)
def writeDataFile(self):
- try:
- f = open(os.path.join(settings.ENTRANCEDESCRIPTIONS, self.filename), "w")
- except:
- subprocess.call(settings.FIX_PERMISSIONS)
- f = open(os.path.join(settings.ENTRANCEDESCRIPTIONS, self.filename), "w")
+ filepath = os.path.join(settings.ENTRANCEDESCRIPTIONS, self.filename)
+
t = loader.get_template('dataformat/entrance.xml')
c = dict({'entrance': self})
u = t.render(c)
- # u8 = u.encode("utf-8")
- # f.write(u8)
- f.write(u)
- f.close()
+ writetrogglefile(filepath, u)
+ return
+
class LogbookEntry(TroggleModel):
"""Single parsed entry from Logbook