Revision 9024ed2e snf-astakos-app/astakos/im/views/util.py

b/snf-astakos-app/astakos/im/views/util.py
33 33

  
34 34
from django.contrib import messages
35 35
from django.contrib.auth.views import redirect_to_login
36
from django.core.exceptions import PermissionDenied
37 36
from django.core.xheaders import populate_xheaders
38 37
from django.http import HttpResponse
39 38
from django.shortcuts import redirect
......
86 85
    return response
87 86

  
88 87

  
89
@commit_on_success_strict()
90 88
def _create_object(request, model=None, template_name=None,
91 89
                   template_loader=template_loader, extra_context=None,
92 90
                   post_save_redirect=None, login_required=False,
......
95 93
    Based of django.views.generic.create_update.create_object which displays a
96 94
    summary page before creating the object.
97 95
    """
98
    response = None
99 96

  
100 97
    if extra_context is None:
101 98
        extra_context = {}
102 99
    if login_required and not request.user.is_authenticated():
103 100
        return redirect_to_login(request.path)
104
    try:
105

  
106
        model, form_class = get_model_and_form_class(model, form_class)
107
        extra_context['edit'] = 0
108
        if request.method == 'POST':
109
            form = form_class(request.POST, request.FILES)
110
            if form.is_valid():
111
                verify = request.GET.get('verify')
112
                edit = request.GET.get('edit')
113
                if verify == '1':
114
                    extra_context['show_form'] = False
115
                    extra_context['form_data'] = form.cleaned_data
116
                elif edit == '1':
117
                    extra_context['show_form'] = True
118
                else:
119
                    new_object = form.save()
120
                    if not msg:
121
                        msg = _(
122
                            "The %(verbose_name)s was created successfully.")
123
                    msg = msg % model._meta.__dict__
124
                    messages.success(request, msg, fail_silently=True)
125
                    response = redirect(post_save_redirect, new_object)
126
        else:
127
            form = form_class()
128
    except (IOError, PermissionDenied), e:
129
        messages.error(request, e)
130
        return None
101

  
102
    model, form_class = get_model_and_form_class(model, form_class)
103
    extra_context['edit'] = 0
104
    if request.method == 'POST':
105
        form = form_class(request.POST, request.FILES)
106
        if form.is_valid():
107
            verify = request.GET.get('verify')
108
            edit = request.GET.get('edit')
109
            if verify == '1':
110
                extra_context['show_form'] = False
111
                extra_context['form_data'] = form.cleaned_data
112
            elif edit == '1':
113
                extra_context['show_form'] = True
114
            else:
115
                new_object = form.save()
116
                if not msg:
117
                    msg = _(
118
                        "The %(verbose_name)s was created successfully.")
119
                msg = msg % model._meta.__dict__
120
                messages.success(request, msg, fail_silently=True)
121
                return redirect(post_save_redirect, new_object)
131 122
    else:
132
        if response is None:
133
            # Create the template, context, response
134
            if not template_name:
135
                template_name = "%s/%s_form.html" % \
136
                    (model._meta.app_label, model._meta.object_name.lower())
137
            t = template_loader.get_template(template_name)
138
            c = RequestContext(request, {
139
                'form': form
140
            }, context_processors)
141
            apply_extra_context(extra_context, c)
142
            response = HttpResponse(t.render(c))
143
        return response
144

  
145

  
146
@commit_on_success_strict()
123
        form = form_class()
124

  
125
    # Create the template, context, response
126
    if not template_name:
127
        template_name = "%s/%s_form.html" % \
128
            (model._meta.app_label, model._meta.object_name.lower())
129
    t = template_loader.get_template(template_name)
130
    c = RequestContext(request, {
131
        'form': form
132
    }, context_processors)
133
    apply_extra_context(extra_context, c)
134
    return HttpResponse(t.render(c))
135

  
136

  
147 137
def _update_object(request, model=None, object_id=None, slug=None,
148 138
                   slug_field='slug', template_name=None,
149 139
                   template_loader=template_loader, extra_context=None,
......
154 144
    Based of django.views.generic.create_update.update_object which displays a
155 145
    summary page before updating the object.
156 146
    """
157
    response = None
158 147

  
159 148
    if extra_context is None:
160 149
        extra_context = {}
161 150
    if login_required and not request.user.is_authenticated():
162 151
        return redirect_to_login(request.path)
163 152

  
164
    try:
165
        model, form_class = get_model_and_form_class(model, form_class)
166
        obj = lookup_object(model, object_id, slug, slug_field)
167

  
168
        if request.method == 'POST':
169
            form = form_class(request.POST, request.FILES, instance=obj)
170
            if form.is_valid():
171
                verify = request.GET.get('verify')
172
                edit = request.GET.get('edit')
173
                if verify == '1':
174
                    extra_context['show_form'] = False
175
                    extra_context['form_data'] = form.cleaned_data
176
                elif edit == '1':
177
                    extra_context['show_form'] = True
178
                else:
179
                    obj = form.save()
180
                    if not msg:
181
                        msg = _(
182
                            "The %(verbose_name)s was created successfully.")
183
                    msg = msg % model._meta.__dict__
184
                    messages.success(request, msg, fail_silently=True)
185
                    response = redirect(post_save_redirect, obj)
186
        else:
187
            form = form_class(instance=obj)
188
    except (IOError, PermissionDenied), e:
189
        messages.error(request, e)
190
        return None
153
    model, form_class = get_model_and_form_class(model, form_class)
154
    obj = lookup_object(model, object_id, slug, slug_field)
155

  
156
    if request.method == 'POST':
157
        form = form_class(request.POST, request.FILES, instance=obj)
158
        if form.is_valid():
159
            verify = request.GET.get('verify')
160
            edit = request.GET.get('edit')
161
            if verify == '1':
162
                extra_context['show_form'] = False
163
                extra_context['form_data'] = form.cleaned_data
164
            elif edit == '1':
165
                extra_context['show_form'] = True
166
            else:
167
                obj = form.save()
168
                if not msg:
169
                    msg = _(
170
                        "The %(verbose_name)s was created successfully.")
171
                msg = msg % model._meta.__dict__
172
                messages.success(request, msg, fail_silently=True)
173
                return redirect(post_save_redirect, obj)
191 174
    else:
192
        if response is None:
193
            if not template_name:
194
                template_name = "%s/%s_form.html" % \
195
                    (model._meta.app_label, model._meta.object_name.lower())
196
            t = template_loader.get_template(template_name)
197
            c = RequestContext(request, {
198
                'form': form,
199
                template_object_name: obj,
200
            }, context_processors)
201
            apply_extra_context(extra_context, c)
202
            response = HttpResponse(t.render(c))
203
            populate_xheaders(request, response, model,
204
                              getattr(obj, obj._meta.pk.attname))
205
        return response
175
        form = form_class(instance=obj)
176

  
177
    if not template_name:
178
        template_name = "%s/%s_form.html" % \
179
            (model._meta.app_label, model._meta.object_name.lower())
180
    t = template_loader.get_template(template_name)
181
    c = RequestContext(request, {
182
        'form': form,
183
        template_object_name: obj,
184
    }, context_processors)
185
    apply_extra_context(extra_context, c)
186
    response = HttpResponse(t.render(c))
187
    populate_xheaders(request, response, model,
188
                      getattr(obj, obj._meta.pk.attname))
189
    return response
206 190

  
207 191

  
208 192
def _resources_catalog(for_project=False, for_usage=False):

Also available in: Unified diff