# HG changeset patch # User ymh # Date 1414212273 -7200 # Node ID 7db9c7ec691a14b69a0745ca81cbb6d7514a5dc0 # Parent 658561ea9e6574b6512eb734b40ab4765cb0128a correct getting duration from content. try to improve error management diff -r 658561ea9e65 -r 7db9c7ec691a annot-server/utils.py --- a/annot-server/utils.py Sat Oct 25 05:43:01 2014 +0200 +++ b/annot-server/utils.py Sat Oct 25 06:44:33 2014 +0200 @@ -117,19 +117,6 @@ self.end_date= self.parse_date(str(end_date)) elif self.start_date and self.duration: self.end_date = self.start_date + datetime.timedelta(seconds=self.duration) - elif self.start_date and self.base_url: - # get duration from api - content_url = self.base_url + AnnotationsSynchronizer.LDT_CONTENT_REST_API_PATH + content_id + "/?format=json" - self.logger.debug("get duration " + content_url) #@UndefinedVariable - r = requests.get(content_url, params=self.post_param) - self.logger.debug("get duration resp " + repr(r)) #@UndefinedVariable - self.duration = int(r.json()['duration']) - self.logger.debug("get duration " + repr(self.duration)) #@UndefinedVariable - - self.end_date = self.start_date + datetime.timedelta(seconds=int(self.duration/1000)) - - if self.end_date and self.deltas: - self.end_date = self.end_date + datetime.timedelta(milliseconds=self.deltas[-1][1]) self.content_file = content_file self.project_id = project_id @@ -239,8 +226,8 @@ if ensemble_parent is None: - self.logger.error("Can not process file") #@UndefinedVariable - sys.exit() + self.logger.error("Ensemble parent is None - Can not process file") #@UndefinedVariable + raise Exception("Ensemble parent is None - can not process file") if self.replace: for ens in ensemble_parent.iterchildren(tag=u"ensemble"): @@ -278,6 +265,25 @@ decoupage_id = decoupage.get('id', '') if decoupage is not None else None + if self.end_date is None and self.start_date and self.base_url: + # get duration from api + content_url = self.base_url + AnnotationsSynchronizer.LDT_CONTENT_REST_API_PATH + content_id + "/?format=json" + self.logger.debug("get duration " + content_url) #@UndefinedVariable + r = requests.get(content_url, params=self.post_param) + self.logger.debug("get duration resp " + repr(r)) #@UndefinedVariable + if r.status_code == requests.codes.ok: + self.duration = int(r.json()['duration']) + else: + self.logger.error("Can not get duration form content : %r " % r) + r.raise_for_status() + self.logger.debug("get duration " + repr(self.duration)) #@UndefinedVariable + + self.end_date = self.start_date + datetime.timedelta(seconds=int(self.duration/1000)) + + if self.end_date and self.deltas: + self.end_date = self.end_date + datetime.timedelta(milliseconds=self.deltas[-1][1]) + + filters = self.get_filter() diff -r 658561ea9e65 -r 7db9c7ec691a annot-server/webapp/admin.py --- a/annot-server/webapp/admin.py Sat Oct 25 05:43:01 2014 +0200 +++ b/annot-server/webapp/admin.py Sat Oct 25 06:44:33 2014 +0200 @@ -189,11 +189,16 @@ 'logger' : logger, } - sync = utils.AnnotationsSynchronizer(**sync_args) - sync.export_annotations() + error = None + try: + sync = utils.AnnotationsSynchronizer(**sync_args) + sync.export_annotations() + except Exception as e: + error = repr(e) + " - " + str(e) + logs = [ line for line in stream.getvalue().split("\n")] - return self.render('admin/sync_event_session.html', event_session=event_session, sync_args=repr(sync_args), logs=logs) + return self.render('admin/sync_event_session.html', event_session=event_session, sync_args=repr(sync_args), error=error, logs=logs) admin.add_view(EventView(database.db_session)) diff -r 658561ea9e65 -r 7db9c7ec691a annot-server/webapp/templates/admin/sync_event_session.html --- a/annot-server/webapp/templates/admin/sync_event_session.html Sat Oct 25 05:43:01 2014 +0200 +++ b/annot-server/webapp/templates/admin/sync_event_session.html Sat Oct 25 06:44:33 2014 +0200 @@ -2,6 +2,13 @@ {% block body %}

Sync on project {{event_session.project_id}}

+ {% if error %} +

KO

+
{{error}}
+ {% else %} +

Ok

+ {% endif %} +

Sync arguments

         {{sync_args}}