X-Git-Url: https://code.grnet.gr/git/snf-cloudcms/blobdiff_plain/59ab14be5245da4b7d06656c543fe2ae818b632c..9c910f81b66aff37fe5bf79a164049f3ad817570:/cloudcms/forms.py diff --git a/cloudcms/forms.py b/cloudcms/forms.py index cee9d5b..e5cc0dc 100644 --- a/cloudcms/forms.py +++ b/cloudcms/forms.py @@ -23,6 +23,9 @@ from feincms.content.raw.models import RawContent logger = logging.getLogger('cloudcms.rstimport') +def slugify(title): + return title[:90] + # base filename to service slug map DEFAULT_SERVICE_MAP = { 'cyclades':'cyclades', @@ -46,7 +49,7 @@ RESIZE_GEOMETRY = getattr(settings, 'CMS_RST_IMPORT_RESIZE_GEOMETRY', def service_from_filename(rst): fname = os.path.basename(rst).replace(".rst","") - service_slug = DEFAULT_SERVICE_MAP.get(fname, None) + service_slug = SERVICE_MAP.get(fname, None) if not service_slug: return None @@ -145,7 +148,11 @@ class RstZipImportForm(forms.Form): logger.warning("Removing exising entries") self.clean_existing_data() except Exception, e: - transaction.savepoint_rollback(sid) + try: + transaction.savepoint_rollback(sid) + transaction.rollback() + except Exception, e: + logger.exception("Can not rollback") logger.exception("Failed to clean existing data") logger.removeHandler(stream_handler) logger.setLevel(old_level) @@ -192,7 +199,8 @@ class RstZipImportForm(forms.Form): # the faq/guide content if data_type == 'faq': logger.info('Processing FAQ entry, %s, %s, %s', service, slug, title) - cat = add_or_update_faq_category(category[0], category[1]) + cat = add_or_update_faq_category(unicode(category[0]), + unicode(category[1])) question = add_or_update_faq_question(user, service, cat, slug, \ title, html_content) @@ -203,15 +211,25 @@ class RstZipImportForm(forms.Form): except Exception, e: - print e + print e, "EXCEPTION" logger.exception("RST import failed") logger.removeHandler(stream_handler) logger.setLevel(old_level) - transaction.savepoint_rollback(sid) + try: + transaction.savepoint_rollback(sid) + transaction.rollback() + except Exception, e: + logger.exception("Can not rollback") + return False, stream.getvalue() if dry_run: - transaction.savepoint_rollback(sid) + try: + transaction.savepoint_rollback(sid) + transaction.rollback() + except Exception, e: + logger.exception("Can not rollback") + else: transaction.savepoint_commit(sid) @@ -272,9 +290,10 @@ def add_or_update_faq_question(author, service, category, slug,\ q.is_active = True q.category = category q.service = service - q.slug = slug - q.title = title + q.slug = slugify(slug) + q.title = unicode(title) q.save() + q.application = [Application.current()] q.save() @@ -302,8 +321,8 @@ def add_or_update_guide_entry(author, service, slug, title, html_content): guide.author = author guide.is_active = True guide.service = service - guide.slug = slug - guide.title = title + guide.slug = slugify(slug) + guide.title = unicode(title) guide.save() RawContentModel = UserGuideEntry.content_type_for(RawContent)