You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@steve.apache.org by hu...@apache.org on 2015/03/20 22:34:51 UTC

svn commit: r1668159 - in /steve/trunk/pytest/www: cgi-bin/lib/voter.py cgi-bin/rest_voter.py htdocs/js/steve_rest.js

Author: humbedooh
Date: Fri Mar 20 21:34:50 2015
New Revision: 1668159

URL: http://svn.apache.org/r1668159
Log:
detect if an issue has already been voted on once, dim the issue if so.

Modified:
    steve/trunk/pytest/www/cgi-bin/lib/voter.py
    steve/trunk/pytest/www/cgi-bin/rest_voter.py
    steve/trunk/pytest/www/htdocs/js/steve_rest.js

Modified: steve/trunk/pytest/www/cgi-bin/lib/voter.py
URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/cgi-bin/lib/voter.py?rev=1668159&r1=1668158&r2=1668159&view=diff
==============================================================================
--- steve/trunk/pytest/www/cgi-bin/lib/voter.py (original)
+++ steve/trunk/pytest/www/cgi-bin/lib/voter.py Fri Mar 20 21:34:50 2015
@@ -46,6 +46,16 @@ def remove(election, basedata, email):
         f.close()
     return uid, xhash
 
+def hasVoted(election, issue, uid):
+    issue = issue.strip(".json")
+    path = os.path.join(homedir, "issues", election, issue)
+    votes = {}
+    if os.path.isfile(path + ".json.votes"):
+        with open(path + ".json.votes", "r") as f:
+            votes = json.loads(f.read())
+            f.close()
+    return True if uid in votes else False
+
 def email(rcpt, subject, message):
     sender = config.get("email", "sender")
     signature = config.get("email", "signature")

Modified: steve/trunk/pytest/www/cgi-bin/rest_voter.py
URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/cgi-bin/rest_voter.py?rev=1668159&r1=1668158&r2=1668159&view=diff
==============================================================================
--- steve/trunk/pytest/www/cgi-bin/rest_voter.py (original)
+++ steve/trunk/pytest/www/cgi-bin/rest_voter.py Fri Mar 20 21:34:50 2015
@@ -67,10 +67,6 @@ if pathinfo:
                     with open(elpath + "/basedata.json", "r") as f:
                         basedata = json.loads(f.read())
                         f.close()
-                        
-                    if 'hash' in basedata:
-                        del basedata['hash']
-                        
                     issues = [ f for f in listdir(elpath) if os.path.isfile(os.path.join(elpath,f)) and f != "basedata.json" and f != "voters.json" and f.endswith(".json")]
                     for issue in issues:
                         try:
@@ -80,11 +76,14 @@ if pathinfo:
                                 entry['id'] = issue.strip(".json")
                                 entry['APIURL'] = "https://%s/steve/voter/view/%s/%s" % (os.environ['SERVER_NAME'], election, issue.strip(".json"))
                                 entry['prettyURL'] = "https://%s/steve/ballot?%s/%s" % (os.environ['SERVER_NAME'], election, issue.strip(".json"))
+                                entry['hasVoted'] = voter.hasVoted(election, issue, voterid)
                                 js.append(entry)
                         except Exception as err:
                             response.respond(500, {'message': 'Could not load issues: %s' % err})
                 except Exception as err:
                     response.respond(500, {'message': 'Could not load base data: %s' % err})
+                if 'hash' in basedata:
+                    del basedata['hash']
                 response.respond(200, {'base_data': basedata, 'issues': js, 'baseurl': "https://%s/steve/election?%s" % (os.environ['SERVER_NAME'], election)})
             else:
                 response.respond(404, {'message': 'No such election'})

Modified: steve/trunk/pytest/www/htdocs/js/steve_rest.js
URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/htdocs/js/steve_rest.js?rev=1668159&r1=1668158&r2=1668159&view=diff
==============================================================================
--- steve/trunk/pytest/www/htdocs/js/steve_rest.js (original)
+++ steve/trunk/pytest/www/htdocs/js/steve_rest.js Fri Mar 20 21:34:50 2015
@@ -240,6 +240,13 @@ function renderElectionFrontpage(respons
 		no.setAttribute("class", "issueNumber")
 		no.innerHTML = (s)
 		
+		if (issue.hasVoted) {
+			outer.setAttribute("style", "background: linear-gradient(to bottom, #d8d8d8 0%,#aaaaaa 100%);")
+			outer.setAttribute("title", "Notice: You have already voted once on this issue")
+		} else {
+			outer.setAttribute("title", "You have not yet voted on this issue");
+		}
+		
 		// Add issue
 		var inner = document.createElement('span')
 		inner.innerHTML = issue.id + ": " + issue.title;
@@ -302,6 +309,12 @@ function renderElectionBulk(response, el
 			outer.style.marginBottom = "15px"
 			
 			// details
+			if (issue.hasVoted) {
+				outer.setAttribute("style", "background: linear-gradient(to bottom, #d8d8d8 0%,#aaaaaa 100%);")
+				outer.setAttribute("title", "Notice: You have already voted once on this issue")
+			} else {
+				outer.setAttribute("title", "You have not yet voted on this issue");
+			}
 			
 			var statement = document.createElement('div')
             statement.setAttribute("class", "statement_marker")
@@ -403,6 +416,6 @@ function castVoteCallback(code, response
 	if (code == 200) {
 		//code
 	} else {
-		//alert(response.message)
+		alert(response.message)
 	}
 }
\ No newline at end of file



Re: svn commit: r1668159 - in /steve/trunk/pytest/www: cgi-bin/lib/voter.py cgi-bin/rest_voter.py htdocs/js/steve_rest.js

Posted by Daniel Gruno <hu...@apache.org>.

On 2015-03-23 22:03, Jim Jagielski wrote:
> Does it just dim it? People can vote more than once...
They can vote as many times as they like, that will just override their 
previous vote.
This is just a helpful display tweak, it doesn't prevent anything.

Essentially, this just sets a hasVoted boolean for when you fetch the 
issue data via the API, it doesn't do much else.

With regards,
Daniel.
> Thx
>> On Mar 20, 2015, at 5:34 PM, humbedooh@apache.org wrote:
>>
>> Author: humbedooh
>> Date: Fri Mar 20 21:34:50 2015
>> New Revision: 1668159
>>
>> URL: http://svn.apache.org/r1668159
>> Log:
>> detect if an issue has already been voted on once, dim the issue if so.
>>
>> Modified:
>>     steve/trunk/pytest/www/cgi-bin/lib/voter.py
>>     steve/trunk/pytest/www/cgi-bin/rest_voter.py
>>     steve/trunk/pytest/www/htdocs/js/steve_rest.js
>>
>> Modified: steve/trunk/pytest/www/cgi-bin/lib/voter.py
>> URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/cgi-bin/lib/voter.py?rev=1668159&r1=1668158&r2=1668159&view=diff
>> ==============================================================================
>> --- steve/trunk/pytest/www/cgi-bin/lib/voter.py (original)
>> +++ steve/trunk/pytest/www/cgi-bin/lib/voter.py Fri Mar 20 21:34:50 2015
>> @@ -46,6 +46,16 @@ def remove(election, basedata, email):
>>          f.close()
>>      return uid, xhash
>>
>> +def hasVoted(election, issue, uid):
>> +    issue = issue.strip(".json")
>> +    path = os.path.join(homedir, "issues", election, issue)
>> +    votes = {}
>> +    if os.path.isfile(path + ".json.votes"):
>> +        with open(path + ".json.votes", "r") as f:
>> +            votes = json.loads(f.read())
>> +            f.close()
>> +    return True if uid in votes else False
>> +
>> def email(rcpt, subject, message):
>>      sender = config.get("email", "sender")
>>      signature = config.get("email", "signature")
>>
>> Modified: steve/trunk/pytest/www/cgi-bin/rest_voter.py
>> URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/cgi-bin/rest_voter.py?rev=1668159&r1=1668158&r2=1668159&view=diff
>> ==============================================================================
>> --- steve/trunk/pytest/www/cgi-bin/rest_voter.py (original)
>> +++ steve/trunk/pytest/www/cgi-bin/rest_voter.py Fri Mar 20 21:34:50 2015
>> @@ -67,10 +67,6 @@ if pathinfo:
>>                      with open(elpath + "/basedata.json", "r") as f:
>>                          basedata = json.loads(f.read())
>>                          f.close()
>> -
>> -                    if 'hash' in basedata:
>> -                        del basedata['hash']
>> -
>>                      issues = [ f for f in listdir(elpath) if os.path.isfile(os.path.join(elpath,f)) and f != "basedata.json" and f != "voters.json" and f.endswith(".json")]
>>                      for issue in issues:
>>                          try:
>> @@ -80,11 +76,14 @@ if pathinfo:
>>                                  entry['id'] = issue.strip(".json")
>>                                  entry['APIURL'] = "https://%s/steve/voter/view/%s/%s" % (os.environ['SERVER_NAME'], election, issue.strip(".json"))
>>                                  entry['prettyURL'] = "https://%s/steve/ballot?%s/%s" % (os.environ['SERVER_NAME'], election, issue.strip(".json"))
>> +                                entry['hasVoted'] = voter.hasVoted(election, issue, voterid)
>>                                  js.append(entry)
>>                          except Exception as err:
>>                              response.respond(500, {'message': 'Could not load issues: %s' % err})
>>                  except Exception as err:
>>                      response.respond(500, {'message': 'Could not load base data: %s' % err})
>> +                if 'hash' in basedata:
>> +                    del basedata['hash']
>>                  response.respond(200, {'base_data': basedata, 'issues': js, 'baseurl': "https://%s/steve/election?%s" % (os.environ['SERVER_NAME'], election)})
>>              else:
>>                  response.respond(404, {'message': 'No such election'})
>>
>> Modified: steve/trunk/pytest/www/htdocs/js/steve_rest.js
>> URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/htdocs/js/steve_rest.js?rev=1668159&r1=1668158&r2=1668159&view=diff
>> ==============================================================================
>> --- steve/trunk/pytest/www/htdocs/js/steve_rest.js (original)
>> +++ steve/trunk/pytest/www/htdocs/js/steve_rest.js Fri Mar 20 21:34:50 2015
>> @@ -240,6 +240,13 @@ function renderElectionFrontpage(respons
>> 		no.setAttribute("class", "issueNumber")
>> 		no.innerHTML = (s)
>> 		
>> +		if (issue.hasVoted) {
>> +			outer.setAttribute("style", "background: linear-gradient(to bottom, #d8d8d8 0%,#aaaaaa 100%);")
>> +			outer.setAttribute("title", "Notice: You have already voted once on this issue")
>> +		} else {
>> +			outer.setAttribute("title", "You have not yet voted on this issue");
>> +		}
>> +		
>> 		// Add issue
>> 		var inner = document.createElement('span')
>> 		inner.innerHTML = issue.id + ": " + issue.title;
>> @@ -302,6 +309,12 @@ function renderElectionBulk(response, el
>> 			outer.style.marginBottom = "15px"
>> 			
>> 			// details
>> +			if (issue.hasVoted) {
>> +				outer.setAttribute("style", "background: linear-gradient(to bottom, #d8d8d8 0%,#aaaaaa 100%);")
>> +				outer.setAttribute("title", "Notice: You have already voted once on this issue")
>> +			} else {
>> +				outer.setAttribute("title", "You have not yet voted on this issue");
>> +			}
>> 			
>> 			var statement = document.createElement('div')
>>              statement.setAttribute("class", "statement_marker")
>> @@ -403,6 +416,6 @@ function castVoteCallback(code, response
>> 	if (code == 200) {
>> 		//code
>> 	} else {
>> -		//alert(response.message)
>> +		alert(response.message)
>> 	}
>> }
>> \ No newline at end of file
>>
>>


Re: svn commit: r1668159 - in /steve/trunk/pytest/www: cgi-bin/lib/voter.py cgi-bin/rest_voter.py htdocs/js/steve_rest.js

Posted by Jim Jagielski <ji...@jaguNET.com>.
Does it just dim it? People can vote more than once...
Thx
> On Mar 20, 2015, at 5:34 PM, humbedooh@apache.org wrote:
> 
> Author: humbedooh
> Date: Fri Mar 20 21:34:50 2015
> New Revision: 1668159
> 
> URL: http://svn.apache.org/r1668159
> Log:
> detect if an issue has already been voted on once, dim the issue if so.
> 
> Modified:
>    steve/trunk/pytest/www/cgi-bin/lib/voter.py
>    steve/trunk/pytest/www/cgi-bin/rest_voter.py
>    steve/trunk/pytest/www/htdocs/js/steve_rest.js
> 
> Modified: steve/trunk/pytest/www/cgi-bin/lib/voter.py
> URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/cgi-bin/lib/voter.py?rev=1668159&r1=1668158&r2=1668159&view=diff
> ==============================================================================
> --- steve/trunk/pytest/www/cgi-bin/lib/voter.py (original)
> +++ steve/trunk/pytest/www/cgi-bin/lib/voter.py Fri Mar 20 21:34:50 2015
> @@ -46,6 +46,16 @@ def remove(election, basedata, email):
>         f.close()
>     return uid, xhash
> 
> +def hasVoted(election, issue, uid):
> +    issue = issue.strip(".json")
> +    path = os.path.join(homedir, "issues", election, issue)
> +    votes = {}
> +    if os.path.isfile(path + ".json.votes"):
> +        with open(path + ".json.votes", "r") as f:
> +            votes = json.loads(f.read())
> +            f.close()
> +    return True if uid in votes else False
> +
> def email(rcpt, subject, message):
>     sender = config.get("email", "sender")
>     signature = config.get("email", "signature")
> 
> Modified: steve/trunk/pytest/www/cgi-bin/rest_voter.py
> URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/cgi-bin/rest_voter.py?rev=1668159&r1=1668158&r2=1668159&view=diff
> ==============================================================================
> --- steve/trunk/pytest/www/cgi-bin/rest_voter.py (original)
> +++ steve/trunk/pytest/www/cgi-bin/rest_voter.py Fri Mar 20 21:34:50 2015
> @@ -67,10 +67,6 @@ if pathinfo:
>                     with open(elpath + "/basedata.json", "r") as f:
>                         basedata = json.loads(f.read())
>                         f.close()
> -                        
> -                    if 'hash' in basedata:
> -                        del basedata['hash']
> -                        
>                     issues = [ f for f in listdir(elpath) if os.path.isfile(os.path.join(elpath,f)) and f != "basedata.json" and f != "voters.json" and f.endswith(".json")]
>                     for issue in issues:
>                         try:
> @@ -80,11 +76,14 @@ if pathinfo:
>                                 entry['id'] = issue.strip(".json")
>                                 entry['APIURL'] = "https://%s/steve/voter/view/%s/%s" % (os.environ['SERVER_NAME'], election, issue.strip(".json"))
>                                 entry['prettyURL'] = "https://%s/steve/ballot?%s/%s" % (os.environ['SERVER_NAME'], election, issue.strip(".json"))
> +                                entry['hasVoted'] = voter.hasVoted(election, issue, voterid)
>                                 js.append(entry)
>                         except Exception as err:
>                             response.respond(500, {'message': 'Could not load issues: %s' % err})
>                 except Exception as err:
>                     response.respond(500, {'message': 'Could not load base data: %s' % err})
> +                if 'hash' in basedata:
> +                    del basedata['hash']
>                 response.respond(200, {'base_data': basedata, 'issues': js, 'baseurl': "https://%s/steve/election?%s" % (os.environ['SERVER_NAME'], election)})
>             else:
>                 response.respond(404, {'message': 'No such election'})
> 
> Modified: steve/trunk/pytest/www/htdocs/js/steve_rest.js
> URL: http://svn.apache.org/viewvc/steve/trunk/pytest/www/htdocs/js/steve_rest.js?rev=1668159&r1=1668158&r2=1668159&view=diff
> ==============================================================================
> --- steve/trunk/pytest/www/htdocs/js/steve_rest.js (original)
> +++ steve/trunk/pytest/www/htdocs/js/steve_rest.js Fri Mar 20 21:34:50 2015
> @@ -240,6 +240,13 @@ function renderElectionFrontpage(respons
> 		no.setAttribute("class", "issueNumber")
> 		no.innerHTML = (s)
> 		
> +		if (issue.hasVoted) {
> +			outer.setAttribute("style", "background: linear-gradient(to bottom, #d8d8d8 0%,#aaaaaa 100%);")
> +			outer.setAttribute("title", "Notice: You have already voted once on this issue")
> +		} else {
> +			outer.setAttribute("title", "You have not yet voted on this issue");
> +		}
> +		
> 		// Add issue
> 		var inner = document.createElement('span')
> 		inner.innerHTML = issue.id + ": " + issue.title;
> @@ -302,6 +309,12 @@ function renderElectionBulk(response, el
> 			outer.style.marginBottom = "15px"
> 			
> 			// details
> +			if (issue.hasVoted) {
> +				outer.setAttribute("style", "background: linear-gradient(to bottom, #d8d8d8 0%,#aaaaaa 100%);")
> +				outer.setAttribute("title", "Notice: You have already voted once on this issue")
> +			} else {
> +				outer.setAttribute("title", "You have not yet voted on this issue");
> +			}
> 			
> 			var statement = document.createElement('div')
>             statement.setAttribute("class", "statement_marker")
> @@ -403,6 +416,6 @@ function castVoteCallback(code, response
> 	if (code == 200) {
> 		//code
> 	} else {
> -		//alert(response.message)
> +		alert(response.message)
> 	}
> }
> \ No newline at end of file
> 
>