def register(request): if request.method == 'POST': if request.POST.get( 'username', None) and request.POST.get( 'password', None) and request.POST.get( 'email', None): user = User.objects.create_user( request.POST['username'], request.POST['email'], None) user.set_password(request.POST['password']) user.save() user = User.objects.get(username=request.POST['username']) si = StreamItem( action_type='C', user=user, content_type=ContentType.objects.get_for_model(User), object_id=user.id) si.save() return HttpResponseRedirect("/~%s" % user.username) else: messages.add_message( request, messages.WARNING, '<div class="failure">Oops! All fields required!</div>') return render(request, "registration/create_user.html", {})
def delete_character(request, character_id): character = get_object_or_404(Character, id=character_id) if (request.user != character.user): # TODO StreamItem flagging user for attempting to delete a character # not theirs messages.add_message( request, messages.ERROR, '<div class="error">You may only delete your own ' 'characters!</div>') return render(request, 'permission_denied.html', {}) if (request.POST.get('confirm', None) is not None): for morph in character.morph_set.all(): for description in morph.description_set.all(): description.delete() morph.delete() character.delete() si = StreamItem( action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=character_id) si.save() return HttpResponseRedirect("/~%s" % request.user.username) else: return render( request, 'characters/character/delete.html', {'character': character})
def attach_character_to_location(request, location_id): location = get_object_or_404(Location, id=location_id) if (request.GET.get('character_id', None) is None): messages.add_message( request, messages.ERROR, '<div class="error">Must attach a character to a location!</div>') return HttpResponseRedirect(request.META['HTTP_REFERER']) character = get_object_or_404(Character, id=request.GET['character_id']) if (request.user != character.user): messages.add_message( request, messages.ERROR, '<div class="error">You may only attach your own ' 'characters!</div>') # TODO flag user return render(request, 'permission_denied.html', {}) if (CharacterLocation.objects.filter(character=character, location=location).count() > 0): messages.add_message( request, messages.ERROR, '<div class="warning">That character is already attached to this ' 'location!</div>') return HttpResponseRedirect(location.get_absolute_url()) cl = CharacterLocation(character=character, location=location, name_at_location=request.GET.get('as', '')) cl.save() si = StreamItem(action_type='LA', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location.id) si.save() return HttpResponseRedirect(location.get_absolute_url())
def edit_morph(request, morph_id): morph = get_object_or_404(Morph, id=morph_id) form = MorphForm(instance=morph) if (request.user != morph.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only edit a morph that you ' 'own!</div>') return HttpResponseRedirect(morph.get_absolute_url()) if (request.method == "POST"): form = MorphForm(request.POST, instance=morph) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph_id) si.save() ajax_list_species(request) ajax_list_genders(request) return HttpResponseRedirect(morph.get_absolute_url()) return render( request, 'characters/morph/edit.html', { 'form': form, 'species_category': _species_select_dropdown( morph.species_category.id)})
def edit_morph(request, morph_id): morph = get_object_or_404(Morph, id=morph_id) form = MorphForm(instance=morph) if (request.user != morph.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only edit a morph that you ' 'own!</div>') return HttpResponseRedirect(morph.get_absolute_url()) if (request.method == "POST"): form = MorphForm(request.POST, instance=morph) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph_id) si.save() ajax_list_species(request) ajax_list_genders(request) return HttpResponseRedirect(morph.get_absolute_url()) return render( request, 'characters/morph/edit.html', { 'form': form, 'species_category': _species_select_dropdown( morph.species_category.id) })
def attach_character_to_location(request, location_id): location = get_object_or_404(Location, id=location_id) if (request.GET.get('character_id', None) is None): messages.add_message( request, messages.ERROR, '<div class="error">Must attach a character to a location!</div>') return HttpResponseRedirect(request.META['HTTP_REFERER']) character = get_object_or_404(Character, id=request.GET['character_id']) if (request.user != character.user): messages.add_message( request, messages.ERROR, '<div class="error">You may only attach your own ' 'characters!</div>') # TODO flag user return render(request, 'permission_denied.html', {}) if (CharacterLocation.objects.filter( character=character, location=location).count() > 0): messages.add_message( request, messages.ERROR, '<div class="warning">That character is already attached to this ' 'location!</div>') return HttpResponseRedirect(location.get_absolute_url()) cl = CharacterLocation( character=character, location=location, name_at_location=request.GET.get('as', '')) cl.save() si = StreamItem( action_type='LA', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location.id) si.save() return HttpResponseRedirect(location.get_absolute_url())
def delete_character(request, character_id): character = get_object_or_404(Character, id=character_id) if (request.user != character.user): # TODO StreamItem flagging user for attempting to delete a character # not theirs messages.add_message( request, messages.ERROR, '<div class="error">You may only delete your own ' 'characters!</div>') return render(request, 'permission_denied.html', {}) if (request.POST.get('confirm', None) is not None): for morph in character.morph_set.all(): for description in morph.description_set.all(): description.delete() morph.delete() character.delete() si = StreamItem( action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=character_id) si.save() return HttpResponseRedirect("/~%s" % request.user.username) else: return render(request, 'characters/character/delete.html', {'character': character})
def create_description(request): form = DescriptionForm() if (request.method == "POST"): form = DescriptionForm(request.POST) if (form.is_valid()): description = form.save(commit=False) if (request.user != description.morph.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only create descriptions for ' 'your morphs!</div>') return render(request, "permission_denied.html", {}) description.user = request.user description.save() form.save_m2m() si = StreamItem( action_type='C', user=request.user, content_type=ContentType.objects.get_for_model(Description), object_id=description.id) si.save() si = StreamItem( action_type='DA', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=description.morph.id) si.save() return HttpResponseRedirect(description.get_absolute_url()) return render(request, "characters/description/edit.html", {'form': form})
def delete_description(request, description_id): description = get_object_or_404(Description, id=description_id) if (request.user != description.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only delete descriptions that belong ' 'to you!</div>') return render(request, "permission_denied.html", {}) if (request.method == "POST" and request.POST.get("confirm", None) is not None): morph = description.morph description.delete() si = StreamItem( action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Description), object_id=description_id) si.save() si = StreamItem(action_type='DD', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph.id) si.save() return HttpResponseRedirect(morph.get_absolute_url()) return render(request, "characters/description/delete.html", {'description': description})
def create_morph(request): form = MorphForm() if (request.method == "POST"): form = MorphForm(request.POST) if (form.is_valid()): morph = form.save(commit=False) if (request.user != morph.character.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only create morphs for your ' 'characters!</div>') return render(request, "permission_denied.html", {}) morph.user = request.user morph.save() form.save_m2m() si = StreamItem( action_type='C', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph.id) si.save() si = StreamItem( action_type='MA', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=morph.character.id) si.save() ajax_list_species(request) ajax_list_genders(request) return HttpResponseRedirect(morph.get_absolute_url()) return render(request, 'characters/morph/edit.html', { 'form': form, 'species_category': _species_select_dropdown() })
def delete_morph(request, morph_id): morph = Morph.objects.get(id=morph_id) if (request.user != morph.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only delete a morph that belongs to ' 'you!</div>') return render(request, "permission_denied.html", {}) if (request.method == "POST" and request.POST.get("confirm", None) is not None): character = morph.character for description in morph.description_set.all(): description.delete() morph.delete() si = StreamItem(action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph_id) si.save() si = StreamItem( action_type='MD', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=character.id) si.save() ajax_list_species(request) ajax_list_genders(request) return HttpResponseRedirect(character.get_absolute_url()) else: return render(request, 'characters/morph/delete.html', {'morph': morph})
def edit_description(request, description_id): description = get_object_or_404(Description, id=description_id) form = DescriptionForm(instance=description) if (request.method == "POST"): form = DescriptionForm(request.POST, instance=description) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(Description), object_id=description_id) si.save() return HttpResponseRedirect(description.get_absolute_url()) return render(request, 'characters/description/edit.html', {'form': form})
def detach_character_from_location(request, characterlocation_id): cl = get_object_or_404(CharacterLocation, id=characterlocation_id) if (request.user != cl.character.user): messages.add_message( request, messages.ERROR, '<div class="error">You may only detach your own ' 'characters!</div>') # TODO flag user return render(request, 'permission_denied.html', {}) location = cl.location cl.delete() si = StreamItem(action_type='LD', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location.id) si.save() return HttpResponseRedirect(location.get_absolute_url())
def create_location(request): form = LocationForm() if (request.method == "POST"): form = LocationForm(request.POST) if (form.is_valid()): location = form.save(commit=False) location.user = request.user location.save() form.save_m2m() si = StreamItem( action_type='C', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location.id) si.save() return HttpResponseRedirect(location.get_absolute_url()) return render(request, "characters/location/edit.html", {'form': form})
def edit_character(request, character_id): c = get_object_or_404(Character, id=character_id) if (request.method == "POST"): if (request.POST.get('name', None) is not None): c.name = request.POST['name'] c.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=character_id) si.save() return HttpResponseRedirect(c.get_absolute_url()) else: messages.add_message( request, messages.ERROR, '<div class="error">You must enter a name!</div>') return render(request, 'characters/character/edit.html', {'character': c})
def detach_character_from_location(request, characterlocation_id): cl = get_object_or_404(CharacterLocation, id=characterlocation_id) if (request.user != cl.character.user): messages.add_message( request, messages.ERROR, '<div class="error">You may only detach your own ' 'characters!</div>') # TODO flag user return render(request, 'permission_denied.html', {}) location = cl.location cl.delete() si = StreamItem( action_type='LD', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location.id) si.save() return HttpResponseRedirect(location.get_absolute_url())
def delete_location(request, location_id): location = get_object_or_404(Location, id=location_id) if (request.user != location.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only delete locations that you are ' 'the owner of!</div>') return render(request, "permission_denied.html", {}) if (request.method == "POST"): location.delete() si = StreamItem( action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location_id) si.save() return HttpResponseRedirect('/') return render(request, "characters/location/delete,html", {})
def edit_user(request, username): if (request.user.username != username): messages.add_message( request, messages.ERROR, '<div class="error">You may only edit yourself!</div>') return render(request, 'permission_denied.html', {}) form = UserForm(instance=request.user) if (request.method == 'POST'): form = UserForm(request.POST, instance=request.user) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(User), object_id=request.user.id) si.save() return HttpResponseRedirect("/~%s" % request.user.username) return render(request, "characters/user/edit.html", {'form': form, 'user_object': request.user})
def delete_image(request, image_id): image = get_object_or_404(Image, id=image_id) if request.user != image.user: messages.add_message( request, messages.ERROR, '<div class="error">You may only delete images that belong to ' "you!</div>" ) return render(request, "permission_denied.html", {}) if request.method == "POST" and request.POST.get("confirm", None) is not None: for ia in image.attachments.all(): ia.delete() image.delete() si = StreamItem( action_type="D", user=request.user, content_type=ContentType.objects.get_for_model(Image), object_id=image_id, ) si.save() messages.add_message(request, messages.SUCCESS, '<div class="success">Image deleted</div>') return HttpResponseRedirect("/~%s" % request.user.username) return render(request, "gallery/image/delete.html", {"image": image})
def create_image(request): form = ImageForm() if (request.method == "POST"): form = ImageForm(request.POST, request.FILES) if (form.is_valid()): image = form.save(commit=False) image.user = request.user image.save() form.save_m2m() si = StreamItem( action_type='C', user=request.user, content_type=ContentType.objects.get_for_model(Image), object_id=image.id) si.save() messages.add_message( request, messages.SUCCESS, '<div class="success">Image created - <a ' 'href="/image/create/">Add another!</a></div>') return HttpResponseRedirect(image.get_absolute_url()) return render(request, 'gallery/image/edit.html', {'form': form})
def register(request): if request.method == 'POST': if request.POST.get('username', None) and request.POST.get( 'password', None) and request.POST.get('email', None): user = User.objects.create_user(request.POST['username'], request.POST['email'], None) user.set_password(request.POST['password']) user.save() user = User.objects.get(username=request.POST['username']) si = StreamItem( action_type='C', user=user, content_type=ContentType.objects.get_for_model(User), object_id=user.id) si.save() return HttpResponseRedirect("/~%s" % user.username) else: messages.add_message( request, messages.WARNING, '<div class="failure">Oops! All fields required!</div>') return render(request, "registration/create_user.html", {})
def delete_description(request, description_id): description = get_object_or_404(Description, id=description_id) if (request.user != description.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only delete descriptions that belong ' 'to you!</div>') return render(request, "permission_denied.html", {}) if (request.method == "POST" and request.POST.get("confirm", None) is not None): morph = description.morph description.delete() si = StreamItem( action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Description), object_id=description_id) si.save() si = StreamItem( action_type='DD', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph.id) si.save() return HttpResponseRedirect(morph.get_absolute_url()) return render( request, "characters/description/delete.html", {'description': description})
def create_morph(request): form = MorphForm() if (request.method == "POST"): form = MorphForm(request.POST) if (form.is_valid()): morph = form.save(commit=False) if (request.user != morph.character.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only create morphs for your ' 'characters!</div>') return render(request, "permission_denied.html", {}) morph.user = request.user morph.save() form.save_m2m() si = StreamItem( action_type='C', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph.id) si.save() si = StreamItem( action_type='MA', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=morph.character.id) si.save() ajax_list_species(request) ajax_list_genders(request) return HttpResponseRedirect(morph.get_absolute_url()) return render( request, 'characters/morph/edit.html', {'form': form, 'species_category': _species_select_dropdown()})
def delete_morph(request, morph_id): morph = Morph.objects.get(id=morph_id) if (request.user != morph.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only delete a morph that belongs to ' 'you!</div>') return render(request, "permission_denied.html", {}) if (request.method == "POST" and request.POST.get("confirm", None) is not None): character = morph.character for description in morph.description_set.all(): description.delete() morph.delete() si = StreamItem( action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Morph), object_id=morph_id) si.save() si = StreamItem( action_type='MD', user=request.user, content_type=ContentType.objects.get_for_model(Character), object_id=character.id) si.save() ajax_list_species(request) ajax_list_genders(request) return HttpResponseRedirect(character.get_absolute_url()) else: return render(request, 'characters/morph/delete.html', {'morph': morph})
def edit_image(request, image_id): image = get_object_or_404(Image, id=image_id) form = ImageForm(instance=image) if request.user != image.user: messages.add_message( request, messages.ERROR, '<div class="error">You may only edit images that belong to ' "you!</div>" ) return render(request, "permission_denied.html", {}) if request.method == "POST": form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() si = StreamItem( action_type="U", user=request.user, content_type=ContentType.objects.get_for_model(Image), object_id=image_id, ) si.save() messages.add_message(request, messages.SUCCESS, '<div class="success">Image updated</div>') return HttpResponseRedirect(image.get_absolute_url()) return render(request, "gallery/image/edit.html", {"form": form})
def edit_location(request, location_id): location = get_object_or_404(Location, id=location_id) if (request.user != location.user): # TODO flag user messages.add_message( request, messages.ERROR, '<div class="error">You may only edit locations that you are the ' 'owner of!</div>') return render(request, "permission_denied.html", {}) form = LocationForm(instance=location) if (request.method == "POST"): form = LocationForm(request.POST, instance=location) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(Location), object_id=location_id) si.save() return HttpResponseRedirect(location.get_absolute_url()) return render(request, 'characters/location/edit.html', {'form': form})
def edit_user(request, username): if (request.user.username != username): messages.add_message( request, messages.ERROR, '<div class="error">You may only edit yourself!</div>') return render(request, 'permission_denied.html', {}) form = UserForm(instance=request.user) if (request.method == 'POST'): form = UserForm(request.POST, instance=request.user) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(User), object_id=request.user.id) si.save() return HttpResponseRedirect("/~%s" % request.user.username) return render(request, "characters/user/edit.html", { 'form': form, 'user_object': request.user })
def delete_image(request, image_id): image = get_object_or_404(Image, id=image_id) if (request.user != image.user): messages.add_message( request, messages.ERROR, '<div class="error">You may only delete images that belong to ' 'you!</div>') return render(request, 'permission_denied.html', {}) if (request.method == "POST" and request.POST.get('confirm', None) is not None): for ia in image.attachments.all(): ia.delete() image.delete() si = StreamItem(action_type='D', user=request.user, content_type=ContentType.objects.get_for_model(Image), object_id=image_id) si.save() messages.add_message(request, messages.SUCCESS, '<div class="success">Image deleted</div>') return HttpResponseRedirect('/~%s' % request.user.username) return render(request, 'gallery/image/delete.html', {'image': image})
def edit_image(request, image_id): image = get_object_or_404(Image, id=image_id) form = ImageForm(instance=image) if (request.user != image.user): messages.add_message( request, messages.ERROR, '<div class="error">You may only edit images that belong to ' 'you!</div>') return render(request, 'permission_denied.html', {}) if (request.method == "POST"): form = ImageForm(request.POST, request.FILES, instance=image) if (form.is_valid()): form.save() si = StreamItem( action_type='U', user=request.user, content_type=ContentType.objects.get_for_model(Image), object_id=image_id) si.save() messages.add_message(request, messages.SUCCESS, '<div class="success">Image updated</div>') return HttpResponseRedirect(image.get_absolute_url()) return render(request, 'gallery/image/edit.html', {'form': form})
def create_image(request): form = ImageForm() if request.method == "POST": form = ImageForm(request.POST, request.FILES) if form.is_valid(): image = form.save(commit=False) image.user = request.user image.save() form.save_m2m() si = StreamItem( action_type="C", user=request.user, content_type=ContentType.objects.get_for_model(Image), object_id=image.id, ) si.save() messages.add_message( request, messages.SUCCESS, '<div class="success">Image created - <a ' 'href="/image/create/">Add another!</a></div>', ) return HttpResponseRedirect(image.get_absolute_url()) return render(request, "gallery/image/edit.html", {"form": form})