Handle follow media when rename room
This commit is contained in:
+34
-10
@@ -89,8 +89,39 @@ class MediaPath():
|
|||||||
filelist.append(tmpurl)
|
filelist.append(tmpurl)
|
||||||
return filelist
|
return filelist
|
||||||
|
|
||||||
def get_mediapath(self, media_table, linked_id, name):
|
def move_mediapath(self, media_table, from_id, to_id):
|
||||||
|
"""
|
||||||
|
Move target media folder to follow database
|
||||||
|
:param media_table: type of media
|
||||||
|
:param from_id: source
|
||||||
|
:param to_id: destination
|
||||||
|
:return: Error if any
|
||||||
|
"""
|
||||||
|
if media_table in ['tiers', 'place', 'salle', 'users']:
|
||||||
|
src = IMAGEPATH + [ media_table, from_id ]
|
||||||
|
dst = IMAGEPATH + [ media_table, to_id ]
|
||||||
|
else:
|
||||||
|
raise RuntimeError("Sorry, Media '%s' not supported yet for move." % media_table)
|
||||||
|
|
||||||
|
src_path = os.path.join('jm2l/upload', *src)
|
||||||
|
dst_path = os.path.join('jm2l/upload', *dst)
|
||||||
|
if not os.path.isdir(src_path):
|
||||||
|
# Nothing to do ...
|
||||||
|
return False
|
||||||
|
if os.path.isdir(dst_path):
|
||||||
|
raise RuntimeError('Destination path already exist')
|
||||||
|
|
||||||
|
shutil.move(src_path, dst_path)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def get_mediapath(self, media_table, linked_id, name):
|
||||||
|
"""
|
||||||
|
:param media_table: type of media
|
||||||
|
:param linked_id: id of media
|
||||||
|
:param name: filename
|
||||||
|
:return: full relative path on server side
|
||||||
|
"""
|
||||||
linked_id = str(linked_id)
|
linked_id = str(linked_id)
|
||||||
if media_table in ['tiers', 'place', 'salle']:
|
if media_table in ['tiers', 'place', 'salle']:
|
||||||
# Retrieve Slug
|
# Retrieve Slug
|
||||||
@@ -113,20 +144,13 @@ class MediaPath():
|
|||||||
elif media_table in ['RIB', 'Justif']:
|
elif media_table in ['RIB', 'Justif']:
|
||||||
slug = User.by_id(linked_id).slug
|
slug = User.by_id(linked_id).slug
|
||||||
p = IMAGEPATH + ['users', slug , media_table ]
|
p = IMAGEPATH + ['users', slug , media_table ]
|
||||||
elif media_table=='users':
|
elif media_table in ['users', 'badge']:
|
||||||
user = User.by_id(linked_id)
|
user = User.by_id(linked_id)
|
||||||
if not user:
|
if not user:
|
||||||
raise HTTPNotFound()
|
raise HTTPNotFound()
|
||||||
else:
|
else:
|
||||||
slug = user.slug
|
slug = user.slug
|
||||||
p = IMAGEPATH + ['users', slug ]
|
p = IMAGEPATH + [media_table, slug ]
|
||||||
elif media_table=='badge':
|
|
||||||
user = User.by_id(linked_id)
|
|
||||||
if not user:
|
|
||||||
raise HTTPNotFound()
|
|
||||||
else:
|
|
||||||
slug = user.slug
|
|
||||||
p = IMAGEPATH + ['badge', slug ]
|
|
||||||
elif media_table=='event':
|
elif media_table=='event':
|
||||||
ev = Event.by_id(linked_id)
|
ev = Event.by_id(linked_id)
|
||||||
slug = ev.slug
|
slug = ev.slug
|
||||||
|
|||||||
+12
-1
@@ -7,7 +7,7 @@ from pyramid.view import view_config
|
|||||||
from pyramid.response import Response
|
from pyramid.response import Response
|
||||||
from mako.template import Template
|
from mako.template import Template
|
||||||
from pyramid_mailer.message import Message
|
from pyramid_mailer.message import Message
|
||||||
from .upload import IMAGEPATH
|
from .upload import IMAGEPATH, MediaPath
|
||||||
# Import Web Forms
|
# Import Web Forms
|
||||||
from .forms import *
|
from .forms import *
|
||||||
# Database access imports
|
# Database access imports
|
||||||
@@ -739,16 +739,27 @@ def handle_salle_phy(request):
|
|||||||
salle_id = request.matchdict.get('salle_id')
|
salle_id = request.matchdict.get('salle_id')
|
||||||
if salle_id:
|
if salle_id:
|
||||||
Salle = SallePhy.by_id(int(salle_id))
|
Salle = SallePhy.by_id(int(salle_id))
|
||||||
|
orig_slug = Salle.slug
|
||||||
if not Salle:
|
if not Salle:
|
||||||
raise HTTPNotFound()
|
raise HTTPNotFound()
|
||||||
form = EditSallePhyForm(request.POST, Salle, meta={'csrf_context': request.session})
|
form = EditSallePhyForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
else:
|
else:
|
||||||
Salle = SallePhy()
|
Salle = SallePhy()
|
||||||
|
orig_slug = None
|
||||||
form = SallePhyForm(request.POST, Salle, meta={'csrf_context': request.session})
|
form = SallePhyForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
|
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
form.populate_obj(Salle)
|
form.populate_obj(Salle)
|
||||||
|
dest_slug = slugify(Salle.name)
|
||||||
|
# Do a check in order to move attached files if any
|
||||||
|
if orig_slug and orig_slug!=dest_slug:
|
||||||
|
try:
|
||||||
|
mp = MediaPath().move_mediapath('salle', orig_slug, dest_slug)
|
||||||
|
except RuntimeError, err:
|
||||||
|
request.session.flash(('error', "Le nom de cette salle est déjà utilisé : " + err.message))
|
||||||
|
return {'form': form}
|
||||||
Salle.slug = slugify(Salle.name)
|
Salle.slug = slugify(Salle.name)
|
||||||
|
|
||||||
if 'uid' in form._fields.keys():
|
if 'uid' in form._fields.keys():
|
||||||
DBSession.merge(Salle)
|
DBSession.merge(Salle)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user