Kategorier
blandet

Danmarks nemmeste(?) ønskeseddelservice

Måske har du fulgt med i medierne omkring ønskeseddeltjenesten Ønskeskyen og deres uheldige/ulovlige omgang med persondata? Eller synes at andre tjenester er for kommercielle, mangler basal sikkerhed i form af krypteret forbindelse, eller bare er for besværlige til dig (og især ældre familiemedlemmer) med krav om brugeroprettelse?

Tja: Nu har jeg i hvert fald lavet et bud på en gratis, ukommerciel, overvågningsfri og frem for alt: let ønskeseddelservice på https://wallnot.dk/wish.

Som sædvanlig er siden udviklet med Django i Python og selve datamodellen er enkel og gemmer så få oplysninger som muligt om brugeren af siden:

class Wishlist(models.Model):
	title = models.CharField('Titel', max_length=500)
	emailconfirmationstatus = models.BooleanField('Bekræftet e-mail', default=False)
	emailconfirmationtoken = models.CharField('E-mailbekræftelseskode', max_length=32)
	editwishlisttoken = models.CharField('Redigeringskode', max_length=32)
	readwishlisttoken = models.CharField('Læsningskode', max_length=32)
	created_at = models.DateTimeField('Oprettet den', default=timezone.now, editable=False)

class Wish(models.Model):
	wishlist = models.ForeignKey(Wishlist, on_delete=models.CASCADE)
	title = models.CharField('Ønske', max_length=500)
	description = models.CharField('Beskrivelse', max_length=500, blank=True)
	shopurl = models.URLField('Link til ønske', max_length=500, blank=True)
	imageurl = models.URLField('Link til foto', max_length=500, blank=True) 
	price = models.DecimalField('Pris', max_digits=20, decimal_places=2, validators=[MinValueValidator(0, message="Må ikke være et negativt tal")], blank=True, null=True)
	reserved = models.BooleanField('Reserveret', default=False)
	reservation_note = models.CharField('Giver', max_length=500, blank=True)
	sort_order = models.PositiveIntegerField('Sortering', null=True, blank=True, default=0)

Ønskesedler kan tilgås med koder i webadressen. Der er en kode, der giver adgang til at redigere ønskesedlen, en der giver adgang til at se ønskesedlen og reservere ønsker, og en der bruges til at bekræfte, at man har modtaget en e-mailnotifikation med link til ønskesedlen. E-mailen bruges til at brugerne kan finde ønskesedlen igen og som en lille-bitte sikkerhedsforanstaltning, idet man først kan dele sin ønskeseddel med andre, når man har bekræftet sin mailadresse. Koderne genereres med Python-modulet Secrets og kan fx være g_q-3bTURYWYCwq6rH1Vu06tumI.

Sådan her ser det ud i Djangos views.py, når en bruger har indtastet en titel på en ønskeseddel og sin mailadresse og systemet bag skal oprette en ønskeseddel:

if request.method == 'POST':
	form = CreateWishlistForm(request.POST)
	if form.is_valid():
		# Create wishlist
		emailconfirmationtoken = secrets.token_urlsafe(20)
		editwishlisttoken = secrets.token_urlsafe(20)
		readwishlisttoken = secrets.token_urlsafe(20)
		wishlist = Wishlist(title = form.cleaned_data['title'], emailconfirmationtoken = emailconfirmationtoken, editwishlisttoken = editwishlisttoken, readwishlisttoken = readwishlisttoken)
		wishlist.save()

Lidt ligesom med kortlinksgeneratorer, kan man godt have flertallet af danske webudviklere mistænkt for at have udviklet deres eget bud på en ønskeseddelservice – der dukker i hvert fald en del op, når man søger. Nu har jeg lavet mit bud på danmarks nemmeste ønskeseddel.