prevent samefagging, show user votes on pageload, add todo list

This commit is contained in:
iou1name 2018-09-04 08:30:20 -04:00
parent a485a36897
commit 1652b23590
6 changed files with 72 additions and 6 deletions

View File

@ -11,6 +11,7 @@ import types
import random import random
import bleach import bleach
from django.db import IntegrityError
from django.utils.timezone import localtime from django.utils.timezone import localtime
from quest.models import * from quest.models import *
@ -341,12 +342,15 @@ def vote(socket, data):
) )
if user.username: if user.username:
v.user = user v.user = user
v.save() try:
v.save()
except IntegrityError: # shouldn't we check this first?
return
data = {} data = {}
data['option_id'] = option_id data['option_id'] = option_id
data['polarity'] = polarity data['polarity'] = polarity
socket.send('vote', data) socket.send('vote', data)
events = {} events = {}

View File

@ -71,7 +71,7 @@
{% for option in poll_options.filter(poll=post.poll).order_by("id") %} {% for option in poll_options.filter(poll=post.poll).order_by("id") %}
<tr id="optionRow-{{ option.id }}"> <tr id="optionRow-{{ option.id }}">
<td class="pollCheckBox"> <td class="pollCheckBox">
<input type="checkbox" {# if ip_address in poll_votes.get(option.id) %}checked="true"{% endif #} id="pollInput-{{ option.id }}" onchange="vote({{ post.id }}, {{ option.id }})"{% if not post.poll.open %} disabled{% endif %}/> <input type="checkbox" {% if poll_votes.filter(option=option, ip_address=ip_address) %}checked="true"{% endif %} id="pollInput-{{ option.id }}" onchange="vote({{ post.id }}, {{ option.id }})"{% if not post.poll.open %} disabled{% endif %}/>
<label for="pollInput-{{ option.id }}"></label> <label for="pollInput-{{ option.id }}"></label>
</td> </td>
<td class="option_text">{{ option.text }}</td> <td class="option_text">{{ option.text }}</td>

View File

@ -0,0 +1,17 @@
# Generated by Django 2.1 on 2018-09-04 11:32
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('quest', '0011_auto_20180902_2007'),
]
operations = [
migrations.AlterUniqueTogether(
name='pollvote',
unique_together={('option', 'ip_address')},
),
]

View File

@ -126,6 +126,9 @@ class PollVote(models.Model):
null=True) null=True)
ip_address = models.GenericIPAddressField() ip_address = models.GenericIPAddressField()
class Meta:
unique_together = ('option', 'ip_address')
class PageTitle(models.Model): class PageTitle(models.Model):
""" """

View File

@ -140,6 +140,14 @@ function vote(post_id, option_id) {
let polarity = document.getElementById('pollInput-' + option_id).checked; let polarity = document.getElementById('pollInput-' + option_id).checked;
socket.send('vote', {post_id: post_id, option_id: option_id, polarity: polarity, quest_id: quest_id}); socket.send('vote', {post_id: post_id, option_id: option_id, polarity: polarity, quest_id: quest_id});
} }
function submitWritein(post_id) {
let writeinInput = document.getElementById('writeinInput');
if (!writeinInput) { return; }
let option_text = writeinInput.value;
writeinInput.value = '';
if (!option_text) { return; }
socket.emit('write_in', {option_text: option_text, post_id: post_id, room: room_id});
}
/* Helpers */ /* Helpers */
function padToTwo(number) { function padToTwo(number) {

34
todo Normal file
View File

@ -0,0 +1,34 @@
New Features:
Pages/appendixes
Live indicator/countdown
Notifications
Anonymous names
Banner images
Search page
Front page to show new quests
Webm posting
(you) counter
Enable namefagging
Account managament/logout
Display profile link in header bar
Tagging system
Quote backlinks
Make chat hideable
Improvements:
Revamp post editing
More options for text posts (lists and so on)
More rigorous input checking in events.py
New post displays chat message
Record email on signup
Change urls
Poll vote highlights entire option
Poll vote doesn't disappear checkbox
Total voters per poll
Chat archives
Only last 100 (50?) chat messages are loaded on page load
Adjust quote preview postioning
Port from old code:
Edit post
Writein