コード例 #1
0
ファイル: list_detail.py プロジェクト: avastjohn/maventy_old
def object_detail(request, queryset, object_id=None, slug=None,
        slug_field='slug', template_name=None, template_name_field=None,
        template_loader=loader, extra_context=None,
        context_processors=None, template_object_name='object',
        mimetype=None):
    """
    Generic detail of an object.

    Templates: ``<app_label>/<model_name>_detail.html``
    Context:
        object
            the object
    """
    if extra_context is None: extra_context = {}
    model = queryset.model
    obj = lookup_object(model, object_id, slug, slug_field, queryset)
    if not template_name:
        template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
    if template_name_field:
        template_name_list = [getattr(obj, template_name_field), template_name]
        t = template_loader.select_template(template_name_list)
    else:
        t = template_loader.get_template(template_name)
    c = RequestContext(request, {
        template_object_name: obj,
    }, context_processors)
    for key, value in extra_context.items():
        if callable(value):
            c[key] = value()
        else:
            c[key] = value
    response = HttpResponse(t.render(c), mimetype=mimetype)
    populate_xheaders(request, response, model, obj.key())
    return response
コード例 #2
0
ファイル: delete.py プロジェクト: ankitjainin/schools-2
def delete_object(request, model, post_delete_redirect, object_id=None,
        slug=None, slug_field='slug', template_name=None,
        template_loader=loader, extra_context=None, login_required=False,
        context_processors=None, template_object_name='object', post_delete_redirect_args=()):
    '''
        Uses generic view. Only difference is that instead of 
        post_delete_redirect, this will reverse the url at first
        
        original:
        def delete_object(request, model, post_delete_redirect, object_id=None,
            slug=None, slug_field='slug', template_name=None,
            template_loader=loader, extra_context=None, login_required=False,
            context_processors=None, template_object_name='object')
    '''
    post_delete_redirect = reverse(post_delete_redirect, args=post_delete_redirect_args)
    obj = lookup_object(model, object_id, slug, slug_field)
    if hasattr(obj, 'can_remove'):
        if not obj.can_remove():
            if request.user.is_authenticated():
                request.user.message_set.create(message=ugettext("Object %(verbose_name)s can't be removed.") % {"verbose_name": model._meta.verbose_name})
            return HttpResponseRedirect(post_delete_redirect)
    return _delete_object(request, model=model, post_delete_redirect=post_delete_redirect, object_id=object_id,
        slug=slug, slug_field=slug_field, template_name=template_name,
        template_loader=template_loader, extra_context=extra_context, login_required=login_required,
        context_processors=context_processors, template_object_name=template_object_name)
コード例 #3
0
def course_request_create(request, slug):
    """
    File a :model:`tiger.CourseRequest` for a given :model:`tiger.Course`
    """

    initial_form_data = {}

    if not request.user.is_authenticated():
        request.flash["messages"] = [
            ("S Please login or create an account to request this course")
        ]
        return HttpResponseRedirect('/login/?next=%s' % request.path)

    course = lookup_object(Course, None, slug, 'slug')
    initial_form_data['course'] = course.id

    # Lookup profile or redirect to create_profile
    try:
        person = request.user.get_profile()
        initial_form_data['person'] = person.id
    except:
        request.flash["messages"] = [(
            "S First, we'll need some contact information to contact you about your request"
        )]
        return create_profile(request,
                              success_url=reverse('course_request_create',
                                                  args=[course.slug]))

    model, form_class = CourseRequest, CourseRequestForm

    if request.method == 'POST':
        form = form_class(request.POST,
                          request.FILES,
                          initial=initial_form_data,
                          min_students=course.min_required_students)

        if form.is_valid():
            new_course_request = form.save(commit=False)
            new_course_request.person = person
            new_course_request.course = course
            new_course_request.save()

            request.user.message_set.create(
                message=_("S The %(verbose_name)s was created successfully.") %
                {"verbose_name": model._meta.verbose_name})
            return redirect_to(
                request,
                reverse('course_request_detail', args=[new_course_request.id]))
    else:
        form = form_class(initial=initial_form_data)

    # Create the template, context, response
    template_name = "%s/%s_form.html" % (model._meta.app_label,
                                         model._meta.object_name.lower())
    t = loader.get_template(template_name)
    c = RequestContext(request, {'form': form, 'object': course})
    return HttpResponse(t.render(c))
コード例 #4
0
ファイル: util.py プロジェクト: antonis-m/synnefo
def _update_object(request, model=None, object_id=None, slug=None,
                   slug_field='slug', template_name=None,
                   template_loader=template_loader, extra_context=None,
                   post_save_redirect=None, login_required=False,
                   context_processors=None, template_object_name='object',
                   form_class=None, msg=None, summary_template_name=None):
    """
    Based of django.views.generic.create_update.update_object which displays a
    summary page before updating the object.
    """

    if extra_context is None:
        extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)

    model, form_class = get_model_and_form_class(model, form_class)
    obj = lookup_object(model, object_id, slug, slug_field)

    if request.method == 'POST':
        form = form_class(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            verify = request.GET.get('verify')
            edit = request.GET.get('edit')
            if verify == '1':
                extra_context['show_form'] = False
                extra_context['form_data'] = form.cleaned_data
                template_name = summary_template_name
            elif edit == '1':
                extra_context['show_form'] = True
            else:
                obj = form.save()
                if not msg:
                    msg = _(
                        "The %(verbose_name)s was created successfully.")
                msg = msg % model._meta.__dict__
                messages.success(request, msg, fail_silently=True)
                return redirect(post_save_redirect, obj)
    else:
        form = form_class(instance=obj)

    if not template_name:
        template_name = "%s/%s_form.html" % \
            (model._meta.app_label, model._meta.object_name.lower())
    t = template_loader.get_template(template_name)
    c = RequestContext(request, {
        'form': form,
        template_object_name: obj,
    }, context_processors)
    apply_extra_context(extra_context, c)
    response = HttpResponse(t.render(c))
    populate_xheaders(request, response, model,
                      getattr(obj, obj._meta.pk.attname))
    return response
コード例 #5
0
ファイル: util.py プロジェクト: mpastyl/websocket-console
def _update_object(request,
                   model=None,
                   object_id=None,
                   slug=None,
                   slug_field='slug',
                   template_name=None,
                   template_loader=template_loader,
                   extra_context=None,
                   post_save_redirect=None,
                   login_required=False,
                   context_processors=None,
                   template_object_name='object',
                   form_class=None,
                   msg=None):
    """
    Based of django.views.generic.create_update.update_object which displays a
    summary page before updating the object.
    """
    response = None

    if extra_context is None: extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)

    try:
        model, form_class = get_model_and_form_class(model, form_class)
        obj = lookup_object(model, object_id, slug, slug_field)

        if request.method == 'POST':
            form = form_class(request.POST, request.FILES, instance=obj)
            if form.is_valid():
                verify = request.GET.get('verify')
                edit = request.GET.get('edit')
                if verify == '1':
                    extra_context['show_form'] = False
                    extra_context['form_data'] = form.cleaned_data
                elif edit == '1':
                    extra_context['show_form'] = True
                else:
                    obj = form.save()
                    if not msg:
                        msg = _(
                            "The %(verbose_name)s was created successfully.")
                    msg = msg % model._meta.__dict__
                    messages.success(request, msg, fail_silently=True)
                    response = redirect(post_save_redirect, obj)
        else:
            form = form_class(instance=obj)
    except (IOError, PermissionDenied), e:
        messages.error(request, e)
        return None
コード例 #6
0
ファイル: create_update.py プロジェクト: kawazrepos/Kawaz2nd
def update_object(request, model=None, object_id=None, slug=None,
        slug_field='slug', template_name=None, template_loader=loader,
        extra_context=None, post_save_redirect=None, login_required=False,
        context_processors=None, template_object_name='object',
        form_class=None, initial=None):
    """
    Generic object-update function.

    Templates: ``<app_label>/<model_name>_form.html``
    Context:
        form
            the form for the object
        object
            the original object being edited
    """
    if extra_context is None: extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)

    model, form_class = get_model_and_form_class(model, form_class)
    obj = lookup_object(model, object_id, slug, slug_field)

    if request.method == 'POST':
        if issubclass(form_class, ModelFormWithRequest):
            form = form_class(request, request.POST, request.FILES, instance=obj)
        else:
            form = form_class(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            obj = form.save()
            msg = ugettext("The %(verbose_name)s was updated successfully.") %\
                                    {"verbose_name": model._meta.verbose_name}
            messages.success(request, msg, fail_silently=True)
            return redirect(post_save_redirect, obj)
    else:
        if issubclass(form_class, ModelFormWithRequest):
            form = form_class(request, instance=obj, initial=initial)
        else:
            form = form_class(instance=obj, initial=initial)

    if not template_name:
        template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
    t = template_loader.get_template(template_name)
    c = RequestContext(request, {
        'form': form,
        template_object_name: obj,
    }, context_processors)
    apply_extra_context(extra_context, c)
    response = HttpResponse(t.render(c))
    populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.attname))
    return response
コード例 #7
0
def change_muaccount(request, instance_id, form_exclude=None, *args, **kwargs):
    obj = lookup_object(MUAccount, instance_id, None, None)
    if obj.owner != request.user:
        return HttpResponseForbidden()
    
    form_exclude = [] if form_exclude is None else list(form_exclude)
    if not request.user.has_perm('muaccounts.can_set_analytics_code'):
        form_exclude.append('analytics_code')
    if not request.user.has_perm('muaccounts.can_set_custom_domain'):
        form_exclude.append('domain')
    if not request.user.has_perm('muaccounts.can_set_public_status'):
        form_exclude.append('is_public')
    if not request.user.has_perm('muaccounts.can_set_bounty_status'):
        form_exclude.append('is_bounty')
    
    return frontend_edit(request, instance_id=instance_id, form_exclude=form_exclude, *args, **kwargs)
コード例 #8
0
ファイル: create_update.py プロジェクト: idlweb/djangobile
def delete_object(request, model, post_delete_redirect, object_id=None,
        slug=None, slug_field='slug', template_name=None,
        template_loader=loader, extra_context=None, login_required=False,
        context_processors=None, template_object_name='object'):
    """
    Generic object-delete function.

    The given template will be used to confirm deletetion if this view is
    fetched using GET; for safty, deletion will only be performed if this
    view is POSTed.

    Templates: ``<app_label>/<model_name>_confirm_delete.html``
    Context:
        object
            the original object being deleted
    """
    if extra_context is None: extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)

    obj = lookup_object(model, object_id, slug, slug_field)

    if request.method == 'POST':
        obj.delete()
        if request.user.is_authenticated():
            request.user.message_set.create(message=ugettext("The %(verbose_name)s was deleted.") % {"verbose_name": model._meta.verbose_name})
        return HttpResponseRedirect(post_delete_redirect)
    else:
        if not template_name:
            template_name = "%s/%s_confirm_delete.html" % (model._meta.app_label, model._meta.object_name.lower())
        if hasattr(request, 'device'):
            d = getattr(request, 'device', {})
            t = template_loader.get_template(template_name, d)
        else:
            t = template_loader.get_template(template_name)
        c = RequestContext(request, {
            template_object_name: obj,
        }, context_processors)
        apply_extra_context(extra_context, c)
        response = HttpResponse(t.render(c))
        populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.attname))
        return response
コード例 #9
0
ファイル: util.py プロジェクト: cstavr/synnefo
def _update_object(request, model=None, object_id=None, slug=None,
        slug_field='slug', template_name=None, template_loader=template_loader,
        extra_context=None, post_save_redirect=None, login_required=False,
        context_processors=None, template_object_name='object',
        form_class=None, msg=None, summary_template_name=None):
    """
    Based of django.views.generic.create_update.update_object which displays a
    summary page before updating the object.
    """
    response = None

    if extra_context is None: extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)

    try:
        model, form_class = get_model_and_form_class(model, form_class)
        obj = lookup_object(model, object_id, slug, slug_field)

        if request.method == 'POST':
            form = form_class(request.POST, request.FILES, instance=obj)
            if form.is_valid():
                verify = request.GET.get('verify')
                edit = request.GET.get('edit')
                if verify == '1':
                    extra_context['show_form'] = False
                    extra_context['form_data'] = form.cleaned_data
                    template_name = summary_template_name
                elif edit == '1':
                    extra_context['show_form'] = True
                else:
                    obj = form.save()
                    if not msg:
                        msg = _("The %(verbose_name)s was created successfully.")
                    msg = msg % model._meta.__dict__
                    messages.success(request, msg, fail_silently=True)
                    response = redirect(post_save_redirect, obj)
        else:
            form = form_class(instance=obj)
    except (IOError, PermissionDenied), e:
        messages.error(request, e)
        return None
コード例 #10
0
def task_update(
    request,
    model=None,
    object_id=None,
    slug=None,
    slug_field="slug",
    template_name=None,
    extra_context=None,
    post_save_redirect=None,
    login_required=False,
    context_processors=None,
    template_object_name="object",
    form_class=None,
):
    if extra_context is None:
        extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)
    model, form_class = get_model_and_form_class(model, form_class)
    obj = lookup_object(model, object_id, slug, slug_field)

    if request.method == "POST":
        # ~ recuperar o crear el proyecto
        p = Project.objects.get_or_create_by_owner_and_title(request.user, request.POST.get("project_title"))
        form = form_class(request.POST, request.FILES, instance=obj)
        del form.fields["project"]
        if form.is_valid():
            obj = form.save(commit=False)
            obj.project = p
            obj.save()
            msg = ugettext("The %(verbose_name)s was updated successfully.") % {
                "verbose_name": model._meta.verbose_name
            }
            messages.success(request, msg, fail_silently=True)
            if "_continue" not in request.POST:
                return redirect(post_save_redirect, obj)
    else:
        form = form_class(instance=obj)
    if not template_name:
        template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
    return render_to_response(template_name, {"form": form, "object": obj}, RequestContext(request))
コード例 #11
0
def course_request_cancel(request, id):
    """
    Update a :model:`tiger.CourseRequest` object
    """
    course_request = lookup_object(CourseRequest, id, None, None)

    if course_request.session:
        request.flash["messages"] = [
            _("S This course is scheduled. Please contact us")
        ]
    else:
        # Set status to cancelled - by client
        course_request.status = -2
        course_request.save()
        request.flash["messages"] = [
            _("S Your course request has been cancelled")
        ]

    # TODO: Confirm CSRF

    return HttpResponseRedirect(
        reverse('profiles.views.profile_detail', args=[request.user.username]))
コード例 #12
0
def update_object(request, model=None, object_id=None, slug=None,
        slug_field='slug', template_name=None, template_loader=loader,
        extra_context=None, post_save_redirect=None, login_required=False,
        context_processors=None, template_object_name='object',
        form_class=None, inlines=None):
    """
    Generic object-update function with inlines.

    Templates: ``<app_label>/<model_name>_form.html``
    Context:
        form
            the form for the object
        object
            the original object being edited
        xxx_formset
            ModelFormSet for model classes in ``inlines`` argument.
    """
    if extra_context is None:
        extra_context = {}
    if inlines is None:
        inlines = ()
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)
    formset_classes = []
    formsets = []

    model, form_class = get_model_and_form_class(model, form_class)
    obj = lookup_object(model, object_id, slug, slug_field)

    for inline in inlines:
        formset_classes.append(inlineformset_factory(model, **inline))

    if request.method == 'POST':
        form = form_class(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            form_validated = True
            new_object = form.save()
        else:
            form_validated = False
            new_object = obj

        for klass in formset_classes:
            formset = klass(request.POST, request.FILES, instance=new_object)
            formsets.append(formset)

        if all_valid(formsets) and form_validated:
            new_object.save()
            for formset in formsets:
                formset.save()

            if request.user.is_authenticated():
                request.user.message_set.create(message=ugettext("The "
                    "%(verbose_name)s was updated successfully.") % 
                        {"verbose_name": model._meta.verbose_name})
            return redirect(post_save_redirect, new_object)
    else:
        form = form_class(instance=obj)
        for klass in formset_classes:
            formset = klass(instance=obj)
            formsets.append(formset)

    if not template_name:
        template_name = "%s/%s_form.html" % (model._meta.app_label,
            model._meta.object_name.lower())
    template = template_loader.get_template(template_name)
    context = RequestContext(request, {
        'form': form,
        template_object_name: obj,
    }, context_processors)
    apply_extra_context(extra_context, context)
    for formset in formsets:
        key = '%s_formset' % formset.model._meta.object_name.lower()
        context[key] = formset
    response = http.HttpResponse(template.render(context))
    populate_xheaders(request, response, model, getattr(obj,
        obj._meta.pk.name))
    return response
コード例 #13
0
def delete_muaccount(request, instance_id, *args, **kwargs):
    obj = lookup_object(MUAccount, instance_id, None, None)
    if obj.owner != request.user:
        return HttpResponseForbidden()
    
    return frontend_del(request, instance_id=instance_id, *args, **kwargs)
コード例 #14
0
ファイル: util.py プロジェクト: kins299/mycloud
def _update_object(request,
                   model=None,
                   object_id=None,
                   slug=None,
                   slug_field='slug',
                   template_name=None,
                   template_loader=template_loader,
                   extra_context=None,
                   post_save_redirect=None,
                   login_required=False,
                   context_processors=None,
                   template_object_name='object',
                   form_class=None,
                   msg=None,
                   summary_template_name=None):
    """
    Based of django.views.generic.create_update.update_object which displays a
    summary page before updating the object.
    """

    if extra_context is None:
        extra_context = {}
    if login_required and not request.user.is_authenticated():
        return redirect_to_login(request.path)

    model, form_class = get_model_and_form_class(model, form_class)
    obj = lookup_object(model, object_id, slug, slug_field)

    if request.method == 'POST':
        form = form_class(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            verify = request.GET.get('verify')
            edit = request.GET.get('edit')
            if verify == '1':
                extra_context['show_form'] = False
                extra_context['form_data'] = form.cleaned_data
                template_name = summary_template_name
            elif edit == '1':
                extra_context['show_form'] = True
            else:
                obj = form.save()
                if not msg:
                    msg = _("The %(verbose_name)s was created successfully.")
                msg = msg % model._meta.__dict__
                messages.success(request, msg, fail_silently=True)
                return redirect(post_save_redirect, obj)
    else:
        form = form_class(instance=obj)

    if not template_name:
        template_name = "%s/%s_form.html" % \
            (model._meta.app_label, model._meta.object_name.lower())
    t = template_loader.get_template(template_name)
    c = RequestContext(request, {
        'form': form,
        template_object_name: obj,
    }, context_processors)
    apply_extra_context(extra_context, c)
    response = HttpResponse(t.render(c))
    populate_xheaders(request, response, model,
                      getattr(obj, obj._meta.pk.attname))
    return response