def printRunnerOverview(): badge = toInt(getParameter('Badge')) summaryChecksum = toInt(getParameter('SummaryChecksum')) summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.ERROR, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error('printRunnerOverview: Reconciliation data changed.') return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.RECONCILIATION_DATA_CHANGED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) else: runnerItems = summary[SummaryField.AVAILABLE_UNSOLD_ITEMS] + summary[ SummaryField.AVAILABLE_BOUGHT_ITEMS] runnerItems.sort(key=lambda item: item[ItemField.SORT_CODE]) return respondHtml( 'runneroverview', flask.g.userGroup, flask.g.language, { 'badge': badge, 'items': runnerItems, 'summaryChecksum': summaryChecksum, 'printedTarget': flask.url_for('.continueReconciliation'), 'cancelledTarget': flask.url_for('.continueReconciliation') })
def startReconciliation(): badge = getParameter('Badge') if toInt(badge) is None: return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.INVALID_BADGE, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) else: summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.ERROR, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) elif len(summary[SummaryField.AVAILABLE_UNSOLD_ITEMS]) == 0 and len( summary[SummaryField.AVAILABLE_BOUGHT_ITEMS]) == 0 and len( summary[SummaryField.DELIVERED_SOLD_ITEMS]) == 0 and len( summary[SummaryField.PENDING_SOLD_ITEMS]) == 0: return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.BADGE_ALREADY_RECONCILIATED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) else: return respondReconciliation(badge, summary, Summary.calculateChecksum(summary))
def printReconciliation(): badge = toInt(getParameter('Badge')) summaryChecksum = toInt(getParameter('SummaryChecksum')) language = getParameter('Language') or flask.g.language summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: logging.error( 'printReconciliation: No summary data available for badge {0}.'. format(badge)) return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.ERROR, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error( 'printReconciliation: Reconciliation data changed for badge {0}.'. format(badge)) return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.RECONCILIATION_DATA_CHANGED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) else: return respondHtml( 'receipt', flask.g.userGroup, language, { 'badge': badge, 'summary': summary, 'summaryChecksum': summaryChecksum, 'datetime': datetime.datetime.now(), 'printedTarget': flask.url_for('.finalizeReconciliation'), 'notprintedTarget': flask.url_for('.continueReconciliation'), 'cancelledTarget': flask.url_for('.selectBadgeToReconciliate') })
def continueReconciliation(): badge = toInt(getParameter("Badge")) summaryChecksum = toInt(getParameter("SummaryChecksum")) summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: return respondHtml( "message", flask.g.userGroup, flask.g.language, {"message": Result.ERROR, "okTarget": flask.url_for(".selectBadgeToReconciliate")}, ) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error("continueReconciliation: Reconciliation data changed.") return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.RECONCILIATION_DATA_CHANGED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, ) else: return respondReconciliation(badge, summary, summaryChecksum)
def finalizeReconciliation(): badge = toInt(getParameter("Badge")) summaryChecksum = toInt(getParameter("SummaryChecksum")) summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: logging.error("finalizeReconciliation: No summary data available for badge {0}.".format(badge)) return respondHtml( "message", flask.g.userGroup, flask.g.language, {"message": Result.ERROR, "okTarget": flask.url_for(".selectBadgeToReconciliate")}, ) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error("finalizeReconciliation: Reconciliation data changed for badge {0}.".format(badge)) return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.RECONCILIATION_DATA_CHANGED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, ) elif not flask.g.model.reconciliateBadge(badge): logging.error("reconciliate: Reconciliation failed for badge {0}.") return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.BADGE_RECONCILIATION_FAILED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, ) else: logging.info("reconciliate: Reconciliation succeeded for badge {0}.") return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.BADGE_RECONCILIATION_SUCCEEDED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, )
def continueReconciliation(): badge = toInt(getParameter('Badge')) summaryChecksum = toInt(getParameter('SummaryChecksum')) summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.ERROR, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error('continueReconciliation: Reconciliation data changed.') return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.RECONCILIATION_DATA_CHANGED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) else: return respondReconciliation(badge, summary, summaryChecksum)
def printReconciliation(): badge = toInt(getParameter("Badge")) summaryChecksum = toInt(getParameter("SummaryChecksum")) language = getParameter("Language") or flask.g.language summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: logging.error("printReconciliation: No summary data available for badge {0}.".format(badge)) return respondHtml( "message", flask.g.userGroup, flask.g.language, {"message": Result.ERROR, "okTarget": flask.url_for(".selectBadgeToReconciliate")}, ) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error("printReconciliation: Reconciliation data changed for badge {0}.".format(badge)) return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.RECONCILIATION_DATA_CHANGED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, ) else: return respondHtml( "receipt", flask.g.userGroup, language, { "badge": badge, "summary": summary, "summaryChecksum": summaryChecksum, "datetime": datetime.datetime.now(), "printedTarget": flask.url_for(".finalizeReconciliation"), "notprintedTarget": flask.url_for(".continueReconciliation"), "cancelledTarget": flask.url_for(".selectBadgeToReconciliate"), }, )
def finalizeReconciliation(): badge = toInt(getParameter('Badge')) summaryChecksum = toInt(getParameter('SummaryChecksum')) summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: logging.error( 'finalizeReconciliation: No summary data available for badge {0}.'. format(badge)) return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.ERROR, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error( 'finalizeReconciliation: Reconciliation data changed for badge {0}.' .format(badge)) return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.RECONCILIATION_DATA_CHANGED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) elif not flask.g.model.reconciliateBadge(badge): logging.error('reconciliate: Reconciliation failed for badge {0}.') return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.BADGE_RECONCILIATION_FAILED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') }) else: logging.info('reconciliate: Reconciliation succeeded for badge {0}.') return respondHtml( 'message', flask.g.userGroup, flask.g.language, { 'message': Result.BADGE_RECONCILIATION_SUCCEEDED, 'badge': badge, 'okTarget': flask.url_for('.selectBadgeToReconciliate') })
def printRunnerOverview(): badge = toInt(getParameter("Badge")) summaryChecksum = toInt(getParameter("SummaryChecksum")) summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: return respondHtml( "message", flask.g.userGroup, flask.g.language, {"message": Result.ERROR, "okTarget": flask.url_for(".selectBadgeToReconciliate")}, ) elif summaryChecksum != Summary.calculateChecksum(summary): logging.error("printRunnerOverview: Reconciliation data changed.") return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.RECONCILIATION_DATA_CHANGED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, ) else: runnerItems = summary[SummaryField.AVAILABLE_UNSOLD_ITEMS] + summary[SummaryField.AVAILABLE_BOUGHT_ITEMS] runnerItems.sort(key=lambda item: item[ItemField.SORT_CODE]) return respondHtml( "runneroverview", flask.g.userGroup, flask.g.language, { "badge": badge, "items": runnerItems, "summaryChecksum": summaryChecksum, "printedTarget": flask.url_for(".continueReconciliation"), "cancelledTarget": flask.url_for(".continueReconciliation"), }, )
def startReconciliation(): badge = getParameter("Badge") if toInt(badge) is None: return respondHtml( "message", flask.g.userGroup, flask.g.language, {"message": Result.INVALID_BADGE, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate")}, ) else: summary = flask.g.model.getBadgeReconciliationSummary(badge) if summary is None: return respondHtml( "message", flask.g.userGroup, flask.g.language, {"message": Result.ERROR, "okTarget": flask.url_for(".selectBadgeToReconciliate")}, ) elif ( len(summary[SummaryField.AVAILABLE_UNSOLD_ITEMS]) == 0 and len(summary[SummaryField.AVAILABLE_BOUGHT_ITEMS]) == 0 and len(summary[SummaryField.DELIVERED_SOLD_ITEMS]) == 0 and len(summary[SummaryField.PENDING_SOLD_ITEMS]) == 0 ): return respondHtml( "message", flask.g.userGroup, flask.g.language, { "message": Result.BADGE_ALREADY_RECONCILIATED, "badge": badge, "okTarget": flask.url_for(".selectBadgeToReconciliate"), }, ) else: return respondReconciliation(badge, summary, Summary.calculateChecksum(summary))
def test_summaryChecksum(self): summaryA = self.model.getBadgeReconciliationSummary(1) summaryB = self.model.getBadgeReconciliationSummary(11) self.assertNotEqual(Summary.calculateChecksum(summaryA), Summary.calculateChecksum(summaryB))