Example #1
0
def design(request, pk):
    try:
        item = DesignModel.objects.get(user=UserProfile.get_profile(
            request.user),
                                       pk=pk)
        current = item.get_latest_revision()
    except ObjectDoesNotExist:
        return render_queryset_to_response_error(request,
                                                 error=404,
                                                 msg="Model not found")

    try:
        revision = request.GET["revision"]
        try:
            revision = Revision.objects.get(model=item, pk=revision)
        except ObjectDoesNotExist:
            return render_queryset_to_response_error(request,
                                                     error=404,
                                                     msg="Revision not found")
    except KeyError:
        revision = current

    data = {
        "pk": pk,
        "name": item.name,
        "revision": None if current.pk == revision.pk else revision,
        "save_form": SaveModelForm(None),
        "saveas_form": SaveModelAsForm(None)
    }

    return render_queryset_to_response(request,
                                       template="cyanodesign/design.html",
                                       data=data)
Example #2
0
def design(request, pk):
    try:
        item = DesignModel.objects.get(user=UserProfile.get_profile(request.user), pk=pk)
        current = item.get_latest_revision()
    except ObjectDoesNotExist:
        return render_queryset_to_response_error(request, error=404, msg="Model not found")

    try:
        revision = request.GET["revision"]
        try:
            revision = Revision.objects.get(model=item, pk=revision)
        except ObjectDoesNotExist:
            return render_queryset_to_response_error(request, error=404, msg="Revision not found")
    except KeyError:
        revision = current

    data = {
        "pk": pk,
        "name": item.name,
        "revision": None if current.pk == revision.pk else revision,
        "save_form": SaveModelForm(None),
        "saveas_form": SaveModelAsForm(None)
    }

    return render_queryset_to_response(request, template="cyanodesign/design.html", data=data)
Example #3
0
def history(request, pk):
    try:
        model = DesignModel.objects.get(user=UserProfile.get_profile(
            request.user),
                                        pk=pk)
        revisions = model.revisions.all()
    except ObjectDoesNotExist:
        return render_queryset_to_response_error(request,
                                                 error=404,
                                                 msg="Model not found")

    entries = []

    from itertools import groupby
    for k, v in groupby(revisions, key=lambda x: x.date.date()):
        v = list(v)[::-1]
        for vv in v:
            try:
                vv.changes = json.dumps(vv.changes["changes"])
            except KeyError:
                vv.changes = json.dumps({})

        entries.append([k, list(v)[::-1]])

    data = {"model": model, "revisions": entries}

    return render_queryset_to_response(request,
                                       template="cyanodesign/history.html",
                                       data=data)
Example #4
0
def history(request, pk):
    try:
        model = DesignModel.objects.get(user=UserProfile.get_profile(request.user), pk=pk)
        revisions = model.revisions.all()
    except ObjectDoesNotExist:
        return render_queryset_to_response_error(request, error=404, msg="Model not found")

    entries = []

    from itertools import groupby
    for k,v in groupby(revisions, key=lambda x: x.date.date()):
        v = list(v)[::-1]
        for vv in v:
            try:
                vv.changes = json.dumps(vv.changes["changes"])
            except KeyError:
                vv.changes = json.dumps({})

        entries.append([k, list(v)[::-1]])

    data = {"model": model, "revisions": entries}

    return render_queryset_to_response(request, template="cyanodesign/history.html", data=data)
    def wrapper(request, *args, **kw):
        # False instead of None, None is default value for passed but not set
        species_wid = kw.pop("species_wid", False)
        model_type = kw.pop("model_type", False)
        wid = kw.pop("wid", False)

        species = False
        model = False
        item = False

        if species_wid:
            species = models.Species.objects.for_wid(species_wid, get=False)
            try:
                species = species.get()
            except ObjectDoesNotExist as e:
                return render_queryset_to_response_error(
                    request,
                    error=404,
                    msg="The requested species \"{}\" was not found.".format(
                        species_wid),
                    msg_debug=repr(e))
            except MultipleObjectsReturned as e:
                return render_queryset_to_response_error(
                    request,
                    error=500,
                    msg=
                    "Database error for species \"{}\". Please report this to an administrator!."
                    .format(species_wid),
                    msg_debug=repr(e))
        if model_type:
            model = getModel(model_type)
            # issubclass test needed to allow /add/Species/ but not /species_wid/Species/
            if model is None or (species_wid and not issubclass(
                    model, models.SpeciesComponent)):
                return render_queryset_to_response_error(
                    request,
                    species=species,
                    error=404,
                    msg="The requested species \"{}\" has no model \"{}\".".
                    format(species_wid, model_type))
        if model and wid:
            item = model.objects.for_species(species).for_wid(wid, get=False)
            try:
                item = item.get()
            except ObjectDoesNotExist as e:
                return render_queryset_to_response_error(
                    request,
                    error=404,
                    species=species,
                    model=model,
                    msg=
                    "The requested species \"{}\" has no item \"{}\" of type \"{}\"."
                    .format(species_wid, wid, model_type),
                    msg_debug=repr(e))
            except MultipleObjectsReturned as e:
                return render_queryset_to_response_error(
                    request,
                    error=500,
                    species=species,
                    model=model,
                    msg=
                    "Database error for species \"{}\" accessing item \"{}\" of type \"{}\"."
                    " Please report this to an administrator!".format(
                        species_wid, wid, model_type),
                    msg_debug=repr(e))

        # Prepare keyword arguments
        __assign_if_not_false(kw, "species", species)
        __assign_if_not_false(kw, "model", model)
        __assign_if_not_false(kw, "item", item)

        return function(request, *args, **kw)
    def wrapper(request, *args, **kw):
        # False instead of None, None is default value for passed but not set
        species_wid = kw.pop("species_wid", False)
        model_type = kw.pop("model_type", False)
        wid = kw.pop("wid", False)

        species = False
        model = False
        item = False

        if species_wid:
            species = models.Species.objects.for_wid(species_wid, get=False)
            try:
                species = species.get()
            except ObjectDoesNotExist as e:
                return render_queryset_to_response_error(
                    request,
                    error=404,
                    msg="The requested species \"{}\" was not found.".format(species_wid),
                    msg_debug=repr(e))
            except MultipleObjectsReturned as e:
                return render_queryset_to_response_error(
                    request,
                    error=500,
                    msg="Database error for species \"{}\". Please report this to an administrator!.".format(
                        species_wid),
                    msg_debug=repr(e))
        if model_type:
            model = getModel(model_type)
            # issubclass test needed to allow /add/Species/ but not /species_wid/Species/
            if model is None or (species_wid and not issubclass(model, models.SpeciesComponent)):
                return render_queryset_to_response_error(
                    request,
                    species=species,
                    error=404,
                    msg="The requested species \"{}\" has no model \"{}\".".format(species_wid, model_type))
        if model and wid:
            item = model.objects.for_species(species).for_wid(wid, get=False)
            try:
                item = item.get()
            except ObjectDoesNotExist as e:
                return render_queryset_to_response_error(
                    request,
                    error=404,
                    species=species,
                    model=model,
                    msg="The requested species \"{}\" has no item \"{}\" of type \"{}\".".format(species_wid, wid,
                                                                                                 model_type),
                    msg_debug=repr(e))
            except MultipleObjectsReturned as e:
                return render_queryset_to_response_error(
                    request,
                    error=500,
                    species=species,
                    model=model,
                    msg="Database error for species \"{}\" accessing item \"{}\" of type \"{}\"."
                        " Please report this to an administrator!".format(
                        species_wid, wid, model_type),
                    msg_debug=repr(e))

        # Prepare keyword arguments
        __assign_if_not_false(kw, "species", species)
        __assign_if_not_false(kw, "model", model)
        __assign_if_not_false(kw, "item", item)

        return function(request, *args, **kw)