def on_desktop_deleted(sender, **kwargs): """ Deletes cache entries for a given desktop. """ desktop = kwargs.get("instance") username = desktop.owner.username desktop_slug = desktop.slug clear_desktop_cached_views(username, desktop_slug) DesktopAPI.clear_desktop_cache(username, desktop_slug) Desktop.delete_revision_id(username, desktop_slug)
def on_desktop_saved(sender, **kwargs): if sender is not Desktop: return if not kwargs.get("created"): desktop = kwargs.get("instance") username = desktop.owner.username slug = desktop.slug DesktopAPI.set_desktop_cache(username, slug, desktop.definition_json) clear_desktop_cached_views(username, slug) Desktop.update_revision_id(username, slug)
def desktop(request, username, desktop_slug): """ Generates the desktop, for editing. """ if not (request.user.is_authenticated or username == "test"): return HttpResponseRedirect("/login/?next=%s" % request.path) try: desktop = Desktop.objects.get(owner__username=username, slug=desktop_slug) except Desktop.DoesNotExist: raise Http404 if not request.user.is_staff and username != "test": # If this isn't the users desktop and the desktop is private if request.user != desktop.owner: raise Http404 td = {} td["desktop_name"] = desktop.name td["user"] = request.user td["username"] = username td["desktop_slug"] = desktop_slug td["initial_dialog"] = request.GET.get("dialog", "") td["desktop_private"] = "1" if desktop.private else "0" stack_icon = Icon.lookup(settings.DEFAULT_STACK_ICON) td["stack_icon_key"] = settings.DEFAULT_STACK_ICON td["stack_icon_sizes"] = stack_icon.sizes td["stack_icon_url"] = os.path.join(settings.MEDIA_URL, stack_icon.img_url) td["view_url"] = desktop.get_absolute_url() td["definition_json"] = DesktopAPI.get_desktop_definition(username, desktop_slug) td["theme"] = desktop.theme return td