src/metadatacomposer/views.py
author Anthony Ly <anthonyly.com@gmail.com>
Fri, 24 May 2013 17:24:11 +0200
changeset 37 d6fa8041a90b
parent 30 ebecbb4597cc
child 40 e817af4f68ee
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
     1
from django.conf import settings
08d053be2440 First home view
cavaliet
parents:
diff changeset
     2
from django.contrib.auth.decorators import login_required
08d053be2440 First home view
cavaliet
parents:
diff changeset
     3
from django.core.paginator import Paginator, InvalidPage, EmptyPage
08d053be2440 First home view
cavaliet
parents:
diff changeset
     4
from django.shortcuts import redirect
08d053be2440 First home view
cavaliet
parents:
diff changeset
     5
from django.utils.decorators import method_decorator
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
     6
from django.views.decorators.cache import never_cache
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
     7
from django.views.generic.base import View, TemplateResponseMixin
08d053be2440 First home view
cavaliet
parents:
diff changeset
     8
from ldt.ldt_utils.models import Project, Content
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
     9
from ldt.ldt_utils.views.content import write_content_base
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
    10
from ldt.ldt_utils.utils import generate_uuid
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
    11
from metadatacomposer.forms import ImageUploadModelForm
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
    12
from metadatacomposer.models import Image
15
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
    13
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
    14
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
    15
import logging #@UnresolvedImport
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
    16
logger = logging.getLogger(__name__)
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
    17
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    18
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    19
class MetadataComposerContextView(View):
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    20
    
08d053be2440 First home view
cavaliet
parents:
diff changeset
    21
    branding = "iri"
08d053be2440 First home view
cavaliet
parents:
diff changeset
    22
    
08d053be2440 First home view
cavaliet
parents:
diff changeset
    23
    def get_context_dict(self, request):
08d053be2440 First home view
cavaliet
parents:
diff changeset
    24
        context = {}
08d053be2440 First home view
cavaliet
parents:
diff changeset
    25
        context["branding"] = self.branding
30
ebecbb4597cc more intelligent management of branding templates
cavaliet
parents: 27
diff changeset
    26
        context["top_header_css"] = "metadatacomposer/%s/composer_header_css.html" % self.branding
ebecbb4597cc more intelligent management of branding templates
cavaliet
parents: 27
diff changeset
    27
        context["top_header_partial"] = "metadatacomposer/%s/composer_header.html" % self.branding
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    28
        return context
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    29
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    30
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    31
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    32
class MetadataComposerHome(TemplateResponseMixin, MetadataComposerContextView):
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    33
    
08d053be2440 First home view
cavaliet
parents:
diff changeset
    34
    def get_template_names(self):
08d053be2440 First home view
cavaliet
parents:
diff changeset
    35
        return "metadatacomposer_home.html"
08d053be2440 First home view
cavaliet
parents:
diff changeset
    36
    
08d053be2440 First home view
cavaliet
parents:
diff changeset
    37
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
    38
    @method_decorator(never_cache)
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    39
    def dispatch(self, *args, **kwargs):
08d053be2440 First home view
cavaliet
parents:
diff changeset
    40
        return super(MetadataComposerHome, self).dispatch(*args, **kwargs)
08d053be2440 First home view
cavaliet
parents:
diff changeset
    41
    
08d053be2440 First home view
cavaliet
parents:
diff changeset
    42
    def get(self, request, branding="iri", **kwargs):
08d053be2440 First home view
cavaliet
parents:
diff changeset
    43
        self.branding = branding
08d053be2440 First home view
cavaliet
parents:
diff changeset
    44
        
08d053be2440 First home view
cavaliet
parents:
diff changeset
    45
        projects = Project.safe_objects.filter(owner=request.user).order_by('-modification_date')[:6]
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
    46
        images = Image.objects.order_by('-modification_date')[:6]
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    47
        contents = Content.safe_objects.order_by('-update_date')[:6]
08d053be2440 First home view
cavaliet
parents:
diff changeset
    48
        
08d053be2440 First home view
cavaliet
parents:
diff changeset
    49
        context = self.get_context_dict(request)
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
    50
        context.update({"projects":projects, "images": images, "contents": contents})
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    51
        return self.render_to_response(context)
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    52
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    53
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    54
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    55
class MetadataComposerProjectList(TemplateResponseMixin, MetadataComposerContextView):
4
08d053be2440 First home view
cavaliet
parents:
diff changeset
    56
    
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    57
    def get_template_names(self):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    58
        return "metadatacomposer_project_list.html"
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    59
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    60
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
    61
    @method_decorator(never_cache)
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    62
    def dispatch(self, *args, **kwargs):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    63
        return super(MetadataComposerProjectList, self).dispatch(*args, **kwargs)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    64
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    65
    def get(self, request, branding="iri", **kwargs):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    66
        self.branding = branding
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    67
        page = request.GET.get("page") or 1
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    68
        
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    69
        projects = Project.safe_objects.prefetch_related("contents").order_by('-modification_date').filter(owner=request.user)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    70
        nb = getattr(settings, 'METADATACOMPOSER_ELEMENTS_PER_PAGE', 9)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    71
        if page=="x":
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    72
            nb = projects.count()
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    73
        
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    74
        paginator = Paginator(projects, nb)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    75
        try:
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    76
            results = paginator.page(page)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    77
        except (EmptyPage, InvalidPage):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    78
            results = paginator.page(paginator.num_pages)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    79
        
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    80
        context = self.get_context_dict(request)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    81
        context.update({"results":results})
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    82
        return self.render_to_response(context)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    83
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    84
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    85
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    86
class MetadataComposerResourceList(TemplateResponseMixin, MetadataComposerContextView):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    87
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    88
    def get_template_names(self):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    89
        return "metadatacomposer_resource_list.html"
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    90
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    91
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
    92
    @method_decorator(never_cache)
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    93
    def dispatch(self, *args, **kwargs):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    94
        return super(MetadataComposerResourceList, self).dispatch(*args, **kwargs)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    95
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    96
    def get(self, request, branding="iri", **kwargs):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    97
        self.branding = branding
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
    98
        
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
    99
        # We get the first page of images
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   100
        image_results = get_images(1)
15
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
   101
        # We get the first contents page and theirs projects
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   102
        content_results = get_contents_and_projects(1, request.user)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   103
        
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   104
        context = self.get_context_dict(request)
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   105
        context.update({"image_results":image_results, "content_results":content_results})
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   106
        return self.render_to_response(context)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   107
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   108
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   109
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   110
class MetadataComposerImagePagination(TemplateResponseMixin, MetadataComposerContextView):
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   111
    
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   112
    def get_template_names(self):
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   113
        return "partial/resource_image_list.html"
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   114
    
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   115
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   116
    @method_decorator(never_cache)
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   117
    def dispatch(self, *args, **kwargs):
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   118
        return super(MetadataComposerImagePagination, self).dispatch(*args, **kwargs)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   119
    
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   120
    def get(self, request, branding="iri", **kwargs):
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   121
        self.branding = branding
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   122
        page = request.GET.get("page") or 1
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   123
        # Get current contents page and theirs projects
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   124
        image_results = get_images(page)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   125
        
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   126
        context = self.get_context_dict(request)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   127
        context.update({"image_results":image_results})
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   128
        return self.render_to_response(context)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   129
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   130
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   131
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   132
class MetadataComposerContentPagination(TemplateResponseMixin, MetadataComposerContextView):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   133
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   134
    def get_template_names(self):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   135
        return "partial/resource_content_list.html"
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   136
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   137
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   138
    @method_decorator(never_cache)
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   139
    def dispatch(self, *args, **kwargs):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   140
        return super(MetadataComposerContentPagination, self).dispatch(*args, **kwargs)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   141
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   142
    def get(self, request, branding="iri", **kwargs):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   143
        self.branding = branding
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   144
        page = request.GET.get("page") or 1
15
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
   145
        # Get current contents page and theirs projects
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   146
        content_results = get_contents_and_projects(page, request.user)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   147
        
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   148
        context = self.get_context_dict(request)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   149
        context.update({"content_results":content_results})
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   150
        return self.render_to_response(context)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   151
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   152
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   153
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   154
def get_images(page):
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   155
    
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   156
    # We get the current's page images
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   157
    images = Image.objects.order_by('-modification_date')
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   158
    #nb = getattr(settings, 'METADATACOMPOSER_ELEMENTS_PER_PAGE', 9)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   159
    nb = 2
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   160
    if page=="x":
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   161
        nb = images.count()
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   162
    paginator = Paginator(images, nb)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   163
    try:
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   164
        results = paginator.page(page)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   165
    except (EmptyPage, InvalidPage):
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   166
        results = paginator.page(paginator.num_pages)
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   167
    
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   168
    return results
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   169
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   170
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   171
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   172
def get_contents_and_projects(page, user):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   173
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   174
    # We get the current's page contents
15
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
   175
    # prefetch_related("project_set") is unfortunately useless because we have to filter the project queryset later
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   176
    contents = Content.safe_objects.order_by('-update_date')
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   177
    nb = getattr(settings, 'METADATACOMPOSER_ELEMENTS_PER_PAGE', 9)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   178
    if page=="x":
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   179
        nb = contents.count()
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   180
    paginator = Paginator(contents, nb)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   181
    try:
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   182
        results = paginator.page(page)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   183
    except (EmptyPage, InvalidPage):
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   184
        results = paginator.page(paginator.num_pages)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   185
    
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   186
    # We add the user's projects for each content
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   187
    results_object_list = []
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   188
    for content in results.object_list:
15
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
   189
        # We filter the content's projects with the user's ones
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   190
        projects = content.project_set.all().filter(owner=user)
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   191
        results_object_list.append({"content":content, "projects":projects})
15
fd8af0251cee pagination for contents in resources page
cavaliet
parents: 5
diff changeset
   192
    
5
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   193
    results.object_list = results_object_list
d0447a83ca2b projet list view and resource list view.
cavaliet
parents: 4
diff changeset
   194
    return results
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   195
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   196
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   197
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   198
class MetadataComposerModalVideo(TemplateResponseMixin, MetadataComposerContextView):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   199
    
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   200
    def get_template_names(self):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   201
        return "metadatacomposer_modal_video.html"
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   202
    
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   203
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   204
    @method_decorator(never_cache)
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   205
    def dispatch(self, *args, **kwargs):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   206
        return super(MetadataComposerModalVideo, self).dispatch(*args, **kwargs)
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   207
    
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   208
    def get(self, request, branding="iri", iri_id=None, **kwargs):
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   209
        self.branding = branding
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   210
        
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   211
        # Generate fake id to validate ContentForm
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   212
        if not iri_id:
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   213
            iri_id = generate_uuid()
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   214
            content = None
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   215
        else:
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   216
            content = Content.safe_objects.select_related("media_obj").get(iri_id=iri_id)
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   217
        
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   218
        context = self.get_context_dict(request)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   219
        context.update({"iri_id":iri_id, "content":content})
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   220
        return self.render_to_response(context)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   221
    
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   222
    def post(self, request, branding="iri", iri_id=None, **kwargs):
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   223
        self.branding = branding
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   224
        
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   225
        # We create the media
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   226
        content_form, media_form, picture_form, form_status, _, current_front_project, e, traceback = write_content_base(request, iri_id)
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   227
        # And test creation
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   228
        if (content_form == False and media_form == False and picture_form == False and form_status == False and current_front_project == False):
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   229
            #message=_("An error occurred - Please try again or contact webmaster")
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   230
            #title = _("Error")
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   231
            raise e, None, traceback
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   232
        return redirect(request.META['HTTP_REFERER'])
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   233
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   234
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   235
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   236
class MetadataComposerModalImage(TemplateResponseMixin, MetadataComposerContextView):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   237
    
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   238
    def get_template_names(self):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   239
        return "metadatacomposer_modal_image.html"
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   240
    
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   241
    @method_decorator(login_required)
27
badc36cf05d2 load and modify image. create and modify content.
cavaliet
parents: 26
diff changeset
   242
    @method_decorator(never_cache)
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   243
    def dispatch(self, *args, **kwargs):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   244
        return super(MetadataComposerModalImage, self).dispatch(*args, **kwargs)
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   245
    
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   246
    def get(self, request, branding="iri", **kwargs):
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   247
        self.branding = branding
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   248
        image_pk = request.GET.get("image") or None
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   249
        
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   250
        # Add form
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   251
        if image_pk:
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   252
            form = ImageUploadModelForm(instance=Image.objects.get(pk=image_pk))
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   253
        else:
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   254
            form = ImageUploadModelForm()
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   255
        
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   256
        context = self.get_context_dict(request)
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   257
        context.update({"form":form, "image_pk":image_pk})
19
6a3d8d05e3fb update js and modal views
cavaliet
parents: 15
diff changeset
   258
        return self.render_to_response(context)
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   259
    
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   260
    def post(self, request, branding="iri", **kwargs):
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   261
        self.branding = branding
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   262
        
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   263
        # Check form
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   264
        if 'image_pk' in request.POST:
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   265
            form = ImageUploadModelForm(request.POST, request.FILES, instance=Image.objects.get(pk=request.POST['image_pk']))
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   266
        else:
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   267
            form = ImageUploadModelForm(request.POST, request.FILES)
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   268
        if form.is_valid():
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   269
            # If an image id was in the form, we update the existing image
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   270
            form.save()
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   271
            return redirect(request.META['HTTP_REFERER'])
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   272
        else:
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   273
            context = self.get_context_dict(request)
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   274
            context.update({"form":form})
26
ff669687a0d2 enhance image management.
cavaliet
parents: 20
diff changeset
   275
            return redirect("composer_modal_image", branding=branding)
20
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   276
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   277
64a77e529f23 first image model and upload form.
cavaliet
parents: 19
diff changeset
   278