Author: fdesbois Date: 2012-03-28 18:40:09 +0200 (Wed, 28 Mar 2012) New Revision: 3218 Url: http://chorem.org/repositories/revision/pollen/3218 Log: add voteAllowed check for restricted poll Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-03-28 16:40:01 UTC (rev 3217) +++ branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-03-28 16:40:09 UTC (rev 3218) @@ -169,16 +169,12 @@ // -- PollAccount -- // PollAccount pollAccount = vote.getPollAccount(); String pollAccountId = pollAccount.getTopiaId(); - PollAccount pollAccountLoaded = null; + PollAccount pollAccountLoaded; // Load existing account (restricted poll) if (pollAccountId != null) { pollAccountLoaded = getEntityById(PollAccount.class, pollAccountId); - if (pollAccountLoaded == null) { - throw new PollAccountNotFound(); - } - // Create new account } else { PollAccountDAO pollAccountDAO = getDAO(PollAccount.class); @@ -354,6 +350,36 @@ throw new PollenTechnicalException("Could not obtain votes", e); } } + + /** + * Vote is allowed if {@code poll} is running and {@code pollAccount} is + * defined in the {@code poll} restricted list if it's not a {@link PollType#FREE} + * poll. The account must be defined previously using + * {@link PollService#getPollAccountEditable(String, UserAccount, Poll)} to + * have a proper link between userAccount and pollAccount even if not already + * created in dabase. + * + * @param poll Poll + * @param accountEditable Account to check + * @return true if vote is allowed, false otherwise + */ + public boolean isVoteAllowed(Poll poll, PollAccount accountEditable) { + + Preconditions.checkNotNull(poll); + Preconditions.checkNotNull(accountEditable); + + Date now = serviceContext.getCurrentTime(); + + boolean result = poll.isRunning(now); + if (poll.getPollType() != PollType.FREE) { + + PersonToListDAO personToListDAO = getDAO(PersonToList.class); + PersonToList personToList = personToListDAO.findByPollAndAccount(poll, accountEditable); + + result &= personToList != null; + } + return result; + } public boolean isUpdateAllowed(Poll poll, String voteId, String accountId, UserAccount userConnected) { Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-03-28 16:40:01 UTC (rev 3217) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-03-28 16:40:09 UTC (rev 3218) @@ -186,11 +186,6 @@ return poll.isAddChoiceRunning(now); } - public boolean isPollRunning() { - Date now = serviceContext.getCurrentTime(); - return poll.isRunning(now); - } - public String getCreatorName() { return poll.getCreator().getVotingId(); } @@ -320,9 +315,10 @@ resetCommentName(); if (log.isInfoEnabled()) { + Date now = serviceContext.getCurrentTime(); log.info("pollChoiceOrVoteStarted = " + isPollChoiceOrVoteStarted()); log.info("pollChoiceRunning = " + isPollChoiceRunning()); - log.info("pollRunning = " + isPollRunning()); + log.info("pollRunning = " + poll.isRunning(now)); log.info("accountFieldDisplayed = " + isAccountFieldDisplayed()); log.info("creatorUser = " + creatorUser); } @@ -365,6 +361,10 @@ return getVoteService().isUpdateAllowed(getPoll(), voteId, getAccountId(), getPollenUserAccount()); } + public boolean isVoteAllowed() { + return getVoteService().isVoteAllowed(getPoll(), getPollAccount()); + } + public String escapeLineBreak(String text) { return text; } Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp 2012-03-28 16:40:01 UTC (rev 3217) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp 2012-03-28 16:40:09 UTC (rev 3218) @@ -264,7 +264,7 @@ </s:if> </tr> </thead> -<s:if test="pollRunning"> +<s:if test="voteAllowed"> <tfoot> <tr> <s:if test="accountFieldDisplayed"> @@ -416,7 +416,7 @@ <%--<t:errors/>--%> </div> -<s:if test="pollRunning"> +<s:if test="voteAllowed"> <div id="buttons"> <s:if test="poll.anonymousVoteAllowed"> <s:checkbox key="vote.anonymous"/>