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)
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)
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 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)