def media_edit(blog_id, media_id, status=None): ''' UI for editing a given media entry ''' user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id, blog) permission = auth.is_media_owner(user, media) from core.ui import kv kv_ui_data = kv.ui(media.kv_list()) tags = template_tags( blog=blog, media=media, status=status, user=user, ) tags.sidebar = sidebar.render_sidebar(panel_set='edit_media', status_badge=status_badge, kv_object='Media', kv_objectid=media.id, kv_ui=kv_ui_data) return media_edit_output(tags)
def media_edit(blog_id, media_id, status=None): ''' UI for editing a given media entry ''' user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id, blog) permission = auth.is_media_owner(user, media) from core.ui import kv kv_ui_data = kv.ui(media.kv_list()) tags = template_tags(blog=blog, media=media, status=status, user=user, ) tags.sidebar = sidebar.render_sidebar( panel_set='edit_media', status_badge=status_badge, kv_object='Media', kv_objectid=media.id, kv_ui=kv_ui_data) return media_edit_output(tags)
def tag_make_for_media(media_id=None, tag=None): user = auth.is_logged_in(request) media = Media.load(media_id) permission = auth.is_media_owner(user, media) if tag == None: tag_name = request.forms.getunicode('tag') else: tag_name = tag if len(tag_name) < 1: return None # Note that this is a single tag only! tag = Tag.add_or_create((tag_name,), media=media) if len(tag[0]) > 0: tpl = template(tag[0][0].new_tag_for_display) else: tpl = template(tag[1][0].for_display) return tpl
def media_edit_save(blog_id, media_id): ''' Save changes to a media entry. ''' user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id) permission = auth.is_media_owner(user, media) friendly_name = request.forms.getunicode('media_friendly_name') changes = False if friendly_name != media.friendly_name: changes = True media.friendly_name = friendly_name import datetime if changes is True: media.modified_date = datetime.datetime.utcnow() media.save() status = utils.Status( type='success', message='Changes to media <b>{}</b> saved successfully.'.format( media.for_display) ) else: status = utils.Status( type='warning', no_sure=True, message='No discernible changes submitted for media <b>{}</b>.'.format( media.id, media.for_display) ) logger.info("Media {} edited by user {}.".format( media.for_log, user.for_log)) from core.ui import kv kv_ui_data = kv.ui(media.kv_list()) tags = template_tags(blog=blog, media=media, status=status, user=user) tags.sidebar = sidebar.render_sidebar( panel_set='edit_media', status_badge=status_badge, kv_object='Media', kv_objectid=media.id, kv_ui=kv_ui_data) return media_edit_output(tags)
def media_preview(media_id): media = Media.load(media_id) try: root = media.path.rsplit(_sep, 1)[0] except: root = '' preview = static_file(media.filename, root=root) return preview
def media_preview(media_id): media = Media.load(media_id) try: root = media.path.rsplit(_sep, 1)[0] except: root = '' preview = static_file(media.filename, root=root) return preview
def media_edit_save(blog_id, media_id): ''' Save changes to a media entry. ''' user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id) permission = auth.is_media_owner(user, media) friendly_name = request.forms.getunicode('media_friendly_name') changes = False if friendly_name != media.friendly_name: changes = True media.friendly_name = friendly_name import datetime if changes is True: media.modified_date = datetime.datetime.utcnow() media.save() status = utils.Status( type='success', message='Changes to media <b>{}</b> saved successfully.'.format( media.for_display)) else: status = utils.Status( type='warning', no_sure=True, message='No discernible changes submitted for media <b>{}</b>.'. format(media.id, media.for_display)) logger.info("Media {} edited by user {}.".format(media.for_log, user.for_log)) from core.ui import kv kv_ui_data = kv.ui(media.kv_list()) tags = template_tags(blog=blog, media=media, status=status, user=user) tags.sidebar = sidebar.render_sidebar(panel_set='edit_media', status_badge=status_badge, kv_object='Media', kv_objectid=media.id, kv_ui=kv_ui_data) return media_edit_output(tags)
def media_pages(blog_id, media_id): user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id, blog) return listing(request, media, media.pages.order_by(Page.publication_date.desc()), 'blog', 'blog_media_pages', user=user, search_ui='blog_media_pages', search_context=media_search_results, tags_data={'blog':blog} )
def page_media_delete(page_id, media_id): user = auth.is_logged_in(request) page = Page.load(page_id) permission = auth.is_page_editor(user, page) media = Media.load(media_id) media_reference = MediaAssociation.get(MediaAssociation.page == page, MediaAssociation.media == media) media_reference.delete_instance(recursive=True, delete_nullable=True) tags = template_tags(page=page) return template('edit/page_media_list.tpl', **tags.__dict__)
def media_pages(blog_id, media_id): user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id, blog) return listing(request, media, media.pages.order_by(Page.publication_date.desc()), 'blog', 'blog_media_pages', user=user, search_ui='blog_media_pages', search_context=media_search_results, tags_data={'blog': blog})
def page_media_delete(page_id, media_id): user = auth.is_logged_in(request) page = Page.load(page_id) permission = auth.is_page_editor(user, page) media = Media.load(media_id) media_reference = MediaAssociation.get( MediaAssociation.page == page, MediaAssociation.media == media) media_reference.delete_instance(recursive=True, delete_nullable=True) tags = template_tags(page=page) return template('edit/page_media_list.tpl', **tags.__dict__)
def page_add_media_with_template(page_id, media_id, template_id): user = auth.is_logged_in(request) page = Page.load(page_id) permission = auth.is_page_editor(user, page) media = Media.load(media_id, page.blog) media_template = Template.get(Template.id == template_id) from core.template import tpl generated_template = tpl(media_template.body, blog=page.blog, media=media) if media not in page.media: media.associate(page) return generated_template
def page_add_media_with_template(page_id, media_id, template_id): user = auth.is_logged_in(request) page = Page.load(page_id) permission = auth.is_page_editor(user, page) media = Media.load(media_id, page.blog) media_template = Template.get( Template.id == template_id) from core.template import tpl generated_template = tpl(media_template.body, blog=page.blog, media=media) if media not in page.media: media.associate(page) return generated_template
def page_get_media_templates(page_id, media_id): user = auth.is_logged_in(request) page = Page.load(page_id) permission = auth.is_page_editor(user, page) media = Media.load(media_id, page.blog) media_templates = Template.select().where( Template.blog == page.blog, Template.template_type == template_type.media).order_by(Template.title) buttons = media_buttons.format('onclick="add_template();"', 'Apply') tpl = template('modal/modal_image_templates', media=media, templates=media_templates, buttons=buttons, title='Choose a template for {}'.format(media.for_log)) return tpl
def page_get_media_templates(page_id, media_id): user = auth.is_logged_in(request) page = Page.load(page_id) permission = auth.is_page_editor(user, page) media = Media.load(media_id, page.blog) media_templates = Template.select().where( Template.blog == page.blog, Template.template_type == template_type.media).order_by(Template.title) buttons = media_buttons.format( 'onclick="add_template();"', 'Apply') tpl = template('modal/modal_image_templates', media=media, templates=media_templates, buttons=buttons, title='Choose a template for {}'.format( media.for_log)) return tpl
def tag_make_for_media(media_id=None, tag=None): user = auth.is_logged_in(request) media = Media.load(media_id) permission = auth.is_media_owner(user, media) if tag == None: tag_name = request.forms.getunicode('tag') else: tag_name = tag if len(tag_name) < 1: return None # Note that this is a single tag only! tag = Tag.add_or_create((tag_name, ), media=media) if len(tag[0]) > 0: tpl = template(tag[0][0].new_tag_for_display) else: tpl = template(tag[1][0].for_display) return tpl
def media_delete(blog_id, media_id, confirm='N'): user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id, blog) permission = auth.is_media_owner(user, media) tags = template_tags(blog=blog, media=media, user=user) # report_txt = [] from core.utils import Status if request.forms.getunicode('confirm') == user.logout_nonce: from os import remove try: remove(media.path) except: pass media.delete_instance(recursive=True, delete_nullable=True) confirmed = Struct() confirmed.message = 'Media {} successfully deleted'.format( media.for_log) confirmed.url = '{}/blog/{}/media'.format(BASE_URL, blog.id) confirmed.action = 'Return to the media listing' tags.status = Status(type='success', message=confirmed.message, action=confirmed.action, url=confirmed.url, close=False) else: s1 = ( 'You are about to delete media object <b>{}</b> from blog <b>{}</b>.' .format(media.for_display, blog.for_display)) # used_in = [] # # for n in media.pages: # used_in.append("<li>{}</li>".format(n.for_display)) media_page_count = media.pages.count() if media_page_count > 0: s2 = ''' <p><b>There are still <a target="_blank" href="{}/blog/{}/media/{}/pages">{} pages</a> associated with this tag.</b></p> <p>Deleting the object will remove it from these pages as well.</p> <p>Any references to these images in text will show as broken.</p> '''.format(BASE_URL, blog.id, media.id, media_page_count) else: s2 = ''' <p>This media object is not currently used in any pages.</p> <p>However, if it is linked directly in a page without a media reference, any such links will break.</p> ''' yes = { 'label': 'Yes, delete this media', 'id': 'delete', 'name': 'confirm', 'value': user.logout_nonce } no = { 'label': 'No, return to media properties', 'url': '../{}/edit'.format(media.id) } tags.status = Status(type='warning', close=False, message=s1 + '<hr>' + s2, yes=yes, no=no) tags.icons = icons return report(tags, 'blog_delete_media', media)
def media_delete(blog_id, media_id, confirm='N'): user = auth.is_logged_in(request) blog = Blog.load(blog_id) is_member = auth.is_blog_member(user, blog) media = Media.load(media_id, blog) permission = auth.is_media_owner(user, media) tags = template_tags(blog=blog, media=media, user=user) # report_txt = [] from core.utils import Status if request.forms.getunicode('confirm') == user.logout_nonce: from os import remove try: remove(media.path) except: pass media.delete_instance(recursive=True, delete_nullable=True) confirmed = Struct() confirmed.message = 'Media {} successfully deleted'.format( media.for_log) confirmed.url = '{}/blog/{}/media'.format(BASE_URL, blog.id) confirmed.action = 'Return to the media listing' tags.status = Status( type='success', message=confirmed.message, action=confirmed.action, url=confirmed.url, close=False) else: s1 = ('You are about to delete media object <b>{}</b> from blog <b>{}</b>.'.format( media.for_display, blog.for_display)) # used_in = [] # # for n in media.pages: # used_in.append("<li>{}</li>".format(n.for_display)) media_page_count = media.pages.count() if media_page_count > 0: s2 = ''' <p><b>There are still <a target="_blank" href="{}/blog/{}/media/{}/pages">{} pages</a> associated with this tag.</b></p> <p>Deleting the object will remove it from these pages as well.</p> <p>Any references to these images in text will show as broken.</p> '''.format(BASE_URL, blog.id, media.id, media_page_count) else: s2 = ''' <p>This media object is not currently used in any pages.</p> <p>However, if it is linked directly in a page without a media reference, any such links will break.</p> ''' yes = { 'label':'Yes, delete this media', 'id':'delete', 'name':'confirm', 'value':user.logout_nonce } no = { 'label':'No, return to media properties', 'url':'../{}/edit'.format(media.id) } tags.status = Status( type='warning', close=False, message=s1 + '<hr>' + s2, yes=yes, no=no ) tags.icons = icons return report(tags, 'blog_delete_media', media)