--- a/src/ldtplatform/management/commands/replacedelete.py Thu Mar 30 16:17:24 2017 +0200
+++ b/src/ldtplatform/management/commands/replacedelete.py Fri Mar 31 17:15:17 2017 +0200
@@ -67,7 +67,7 @@
'''
if re.match(r".*feature=player_embedded.+", source) != None:
return "http://www.youtube.com/oembed?url=http://youtube.com/watch?v="\
- + source[len(source)-11:] +"&format=json"
+ + source[len(source)-11:] +"&format=json"
return "http://www.youtube.com/oembed?url=" + source + "&format=json"
class Command(BaseCommand):
@@ -80,16 +80,18 @@
'''
add arguments
'''
- parser.add_argument('-f',
- '--force',
- dest='force',
- action='store_true'
- )
- parser.add_argument('-p',
- '--path',
- dest='path',
- default=None
- )
+ parser.add_argument(
+ '-f',
+ '--force',
+ dest='force',
+ action='store_true'
+ )
+ parser.add_argument(
+ '-p',
+ '--path',
+ dest='path',
+ default=None
+ )
def construct_ldt_embed(self, ldtid):
@@ -101,17 +103,17 @@
"player_id=player_project_{ldt_id}&" \
"ldt_id={ldt_id}".format(base_url=self.base_url, ldt_id=ldtid)
- def clean_media_project(self, element, force, newsrc=None):
+ def clean_media_project(self, element, newsrc=None):
'''
change media objects' videopath and source if necessary
change project .ldt
'''
basesrc = element.src
- if force:
+ if self.force:
element.videopath = ''
element.save()
if newsrc != None:
- if force:
+ if self.force:
element.src = newsrc
element.save()
self.mycsvfile.writerow([
@@ -128,7 +130,7 @@
"Yes",
"initializing object(no project)"
])
- if force:
+ if self.force:
mycontentid = models.Content.objects.filter(media_obj_id=element.id)[0].iri_id
try:
management.call_command('initfrontproject', mycontentid)
@@ -144,8 +146,9 @@
else:
self.stdout.write(" Project has to be initialized ", ending='')
return
- ldtproj = models.Project.objects.filter\
- (content=models.Content.objects.filter(media_obj_id=element.id)[0])
+ ldtproj = models.Project.objects.filter(
+ content=models.Content.objects.filter(media_obj_id=element.id)[0]
+ )
for singleproject in ldtproj:
root = etree.XML(singleproject.ldt.encode('utf-8'), self.parser)
if root.xpath('medias/media') == []:
@@ -153,7 +156,7 @@
continue
if root.xpath('medias/media')[0].get("video") != '':
embedurl = self.construct_ldt_embed(singleproject.ldt_id)
- if force:
+ if self.force:
root.xpath('medias/media')[0].set("video", '')
self.stdout.write(" changing videopath arg in .ldt ", ending='')
self.mycsvfile.writerow([
@@ -169,16 +172,21 @@
element.save()
+ def __init__(self, *args, **kwargs):
+ super(Command, self).__init__(*args, **kwargs)
+ self.base_url = Site.objects.get_current().domain + settings.BASE_URL
+ self.parser = etree.XMLParser(encoding='utf-8')
+ self.logger = logging.getLogger(__name__)
+ self.force = False
+ self.mycsvfile = None
+
def handle(self, *args, **options):
'''
handle
'''
- self.base_url = Site.objects.get_current().domain + settings.BASE_URL
- self.parser = etree.XMLParser(encoding='utf-8')
- self.logger = logging.getLogger(__name__)
path = options['path']
- force = options['force']
+ self.force = options['force']
if not path:
path = 'mediaInformations.csv'
try:
@@ -199,7 +207,7 @@
files1 = models.Media.objects.all() #this list contains every media
for elem1 in files1:
if number_of_contents(elem1) == 0:
- if force:
+ if self.force:
elem1.delete() #if there is no content
#linked to the media, the media is removed for the database
self.stdout.write(" No content found, media has been removed")
@@ -214,19 +222,23 @@
j += 1
continue
if elem1.src.lower() == to_https(elem1.src, elem1.videopath).lower():
- self.clean_media_project(elem1, force)
- if re.match(r".*\.youtube\.com.*", elem1.src) != None\
- or re.match(r".*youtu\.be.+", elem1.src) != None:
+ self.clean_media_project(elem1)
+ if re.match(r".*\.youtube\.com.*", elem1.src) != None \
+ or re.match(r".*youtu\.be.+", elem1.src) != None:
myembed = construct_youtube_embed(elem1.src)
if requests.get(myembed).status_code == 404:
self.stdout.write("%s : Video doesn't exists"% elem1.src)
if number_of_projects(elem1) > 0:
- ldtproj = models.Project.objects.get(id=models.Content.objects.filter\
- (media_obj_id=elem1.id)[0].front_project_id).ldt
+ ldtproj = models.Project.objects.get(
+ id=models.Content.objects.filter(
+ media_obj_id=elem1.id
+ )[0].front_project_id
+ ).ldt
root = etree.XML(ldtproj.encode('utf-8'), self.parser)
- if root.xpath('annotations/content/ensemble/decoupage/elements/element')\
- == []:
- if force:
+ if root.xpath(
+ 'annotations/content/ensemble/decoupage/elements/element'
+ ) == []:
+ if self.force:
elem1.delete()
self.stdout.write("video doesn't exist anymore : media deleted")
self.mycsvfile.writerow([
@@ -237,8 +249,8 @@
])
j += 1
else:
- self.clean_media_project(elem1, force)
- if force:
+ self.clean_media_project(elem1)
+ if self.force:
self.stdout.write("%s files deleted"%j)
else:
self.stdout.write("%s files to delete"%j)
@@ -325,8 +337,10 @@
continue
if res > 400:
try:
- ressrc = requests.head(to_https(elem.src, elem.videopath, 0),\
- timeout=10).status_code
+ ressrc = requests.head(
+ to_https(elem.src, elem.videopath, 0),
+ timeout=10
+ ).status_code
except (requests.exceptions.Timeout, requests.ConnectionError):
self.stdout.write(" can't access source/new files", ending='')
self.logger.warning("can't access %s", elem.title)
@@ -352,7 +366,7 @@
elif ressrc == 200:
self.stdout.write(
" file not transcoded yet :"
- "keep source extension or wait transcoding to be done",\
+ "keep source extension or wait transcoding to be done",
ending='')
self.logger.warning("%s not transcoded yet", elem.title)
self.mycsvfile.writerow([
@@ -379,5 +393,5 @@
"new source already in table"
])
continue
- self.clean_media_project(elem, force, newsource)
+ self.clean_media_project(elem, newsource)
csvfile.close()