def index(request): """ Displays a list of pages and the sites navigation structure. :param request: HttpRequest object :return: HttpResponse object """ pages = models.Page.objects.filter(content_type=request.model_content_type, object_id=request.site_type.pk) top_nav_items = models.NavigationItem.objects.filter( content_type=request.model_content_type, object_id=request.site_type.pk, top_level_nav__isnull=True) collection_nav_items = models.NavigationItem.get_content_nav_for_journal( request.journal) if request.POST and 'delete' in request.POST: page_id = request.POST.get('delete') page = get_object_or_404(models.Page, pk=page_id, content_type=request.model_content_type, object_id=request.site_type.pk) page.delete() return redirect(reverse('cms_index')) if request.POST: if request.FILES: file = request.FILES.get('xsltfile') files.save_file_to_journal(request, file, 'XSLT File', 'Journal XSLT File', xslt=True) messages.add_message(request, messages.INFO, "XSLT file has been uploaded.") request.journal.has_xslt = True request.journal.save() if 'clear' in request.POST: files.unlink_journal_file(request, file=None, xslt=True) request.journal.has_xslt = False request.journal.save() return redirect(reverse('cms_index')) template = 'cms/index.html' context = { 'journal': request.journal, 'pages': pages, 'top_nav_items': top_nav_items, 'collection_nav_items': collection_nav_items, } return render(request, template, context)
def handle_file(request, setting_value, file): if setting_value.value: file_to_delete = models.File.objects.get(pk=setting_value.value) files.unlink_journal_file(request, file_to_delete) file = files.save_file_to_journal(request, file, setting_value.setting.name, 'A setting file.') return file.pk
def news(request): new_items = models.NewsItem.objects.filter( content_type=request.model_content_type, object_id=request.site_type.pk).order_by('-posted') form = forms.NewsItemForm() new_file = None if 'delete' in request.POST: news_item_pk = request.POST.get('delete') item = get_object_or_404(models.NewsItem, pk=news_item_pk, content_type=request.model_content_type, object_id=request.site_type.pk) item.delete() return redirect(reverse('core_manager_news')) if request.POST: form = forms.NewsItemForm(request.POST) if request.FILES: uploaded_file = request.FILES.get('image_file') if request.model_content_type.name == 'journal': new_file = files.save_file_to_journal(request, uploaded_file, 'News Item', 'News Item', public=True) core_logic.resize_and_crop( new_file.journal_path(request.journal), [750, 324], 'middle') elif request.model_content_type.name == 'press': new_file = files.save_file_to_press(request, uploaded_file, 'News Item', 'News Item', public=True) core_logic.resize_and_crop(new_file.press_path(), [750, 324], 'middle') if form.is_valid(): new_item = form.save(commit=False) new_item.content_type = request.model_content_type new_item.object_id = request.site_type.pk new_item.posted_by = request.user new_item.posted = timezone.now() new_item.large_image_file = new_file new_item.save() return redirect(reverse('core_manager_news')) template = 'core/manager/news/index.html' context = { 'news_items': new_items, 'action': 'new', 'form': form, } return render(request, template, context)
def edit_news(request, news_pk): """ Allows an editor to edit an existing news item :param request: HttpRequest object :param news_pk: PK of an NewsItem object :return: HttpResponse object """ new_items = models.NewsItem.objects.filter(content_type=request.model_content_type, object_id=request.site_type.pk).order_by('-posted') news_item = get_object_or_404(models.NewsItem, pk=news_pk) form = forms.NewsItemForm(instance=news_item) new_file = None if 'delete_image' in request.POST: delete_image_id = request.POST.get('delete_image') file = get_object_or_404(core_models.File, pk=delete_image_id) if file.owner == request.user or request.user.is_staff: file.delete() messages.add_message(request, messages.SUCCESS, 'Image deleted') else: messages.add_message(request, messages.WARNING, 'Only the owner or staff can delete this image.') return redirect(reverse('core_manager_edit_news', kwargs={'news_pk': news_item.pk})) if request.POST: form = forms.NewsItemForm(request.POST, instance=news_item) if request.FILES: uploaded_file = request.FILES.get('image_file') if request.model_content_type.name == 'journal': new_file = files.save_file_to_journal(request, uploaded_file, 'News Item', 'News Item', public=True) core_logic.resize_and_crop(new_file.journal_path(request.journal), [750, 324], 'middle') elif request.model_content_type.name == 'press': new_file = files.save_file_to_press(request, uploaded_file, 'News Item', 'News Item', public=True) core_logic.resize_and_crop(new_file.press_path(), [750, 324], 'middle') if form.is_valid(): item = form.save(commit=False) if new_file: item.large_image_file = new_file item.save() return redirect(reverse('core_manager_news')) template = 'core/manager/news/index.html' context = { 'news_item': news_item, 'news_items': new_items, 'action': 'edit', 'form': form, } return render(request, template, context)
def handle_press_override_image(request, journal, attr_form): if request.FILES.get('press_image_override'): new_file = files.save_file_to_journal(request, request.FILES.get('press_image_override'), 'Press Override', 'default') if journal.press_image_override: journal.press_image_override.unlink_file(journal=journal) journal.press_image_override = new_file journal.save() return new_file return None
def handle_default_thumbnail(request, journal, attr_form): if request.FILES.get('default_thumbnail'): new_file = files.save_file_to_journal(request, request.FILES.get('default_thumbnail'), 'Default Thumb', 'default') if journal.thumbnail_image: journal.thumbnail_image.unlink_file(journal=journal) journal.thumbnail_image = new_file journal.save() return new_file return None