def feedback(self): self.response['sent_status'] = 0 if 'feedback.message' in self.request.params: msg = Validate.sanatize_textsafe(self.request.params.get('feedback.message','')) msg = msg + "\n\n ---------- \n" msg = msg + "Player: " + self.request.params.get('feedback.player','error') + "\n" msg = msg + "Category: " + self.request.params.get('feedback.category','error') + "\n" msg = msg + "From: " + self.request.params.get('feedback.from','error') + "\n" try: # Send to emails = Properties.get('MAILER_FEEDBACK_ADDRESS').replace(' ','').split(',') message = Message(subject="Feedback - " + datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"), sender=self.request.user.email, recipients=emails, body=msg ) mailer = get_mailer(self.request) mailer.send(message) # Receipt message_receipt = Message(subject="Feedback - Receipt", sender=Properties.get('MAILER_GLOBAL_FROM_ADDRESS'), recipients=[self.request.user.email], body="Thank you for submitting feedback. \n\n ---- \n" + Validate.sanatize_textsafe(self.request.params.get('feedback.message','')) ) mailer.send(message_receipt) self.response['sent_status'] = 2 except Exception as e: self.response['sent_status'] = 1 return self.response
def email(self): id = self.request.matchdict['id'] test = Tests.by({'id':id,'alias':self.request.user.alias}).first() if not test: raise HTTPForbidden() file = self._generate_pdf(id) self.response['id'] = id self.response['emails'] = self.request.params.get('email.addresses',None) if 'form.submitted' in self.request.params: if self.request.params['email.ok'] == '1': emails = self.request.params['email.addresses'].replace(' ','').split(',') for email in emails: if not Validate.email(email): self.notify('Invalid email address',warn=True) return self.template('email.pt') try: message = Message(subject=self._email_fmt(id, str(Properties.get('MAILER_TO_SUBJECT','Submission'))), sender=str(Properties.get('MAILER_GLOBAL_FROM_ADDRESS','System')), recipients=emails, body=self._email_fmt(id, str(Properties.get('MAILER_BODY','Submission')))) attachment = Attachment('submission_' + str(id) + '.pdf', 'application/pdf', file) message.attach(attachment) mailer = get_mailer(self.request) mailer.send(message) self.notify('Email sent!') except Exception as e: print "ERROR: " + str(e) self.notify('Unable to send email!',warn=True) else: self.notify('Unable to send example email!',warn=True) return self.template('email.pt')
def edit_credits(self): if 'edit.credits.submit' in self.request.params: i = 0 results = [] for k in self.request.params: if 'data_' in k: p = k.split('_') d = { 'id':int(p[1]) } exists = False for r in results: if r['id'] == int(p[1]): d = r exists = True if '_type' in k: d['type'] = self.request.params.get(k) if '_val' in k: d['value'] = self.request.params.get(k) if not exists: results.append(d) results = sorted(results,key=itemgetter('id')) properties = Properties.by({'prop_name':'CREDITS'}).first() properties.prop_value = json.dumps(results) transaction.commit() self.notify('Changes saved!') self.response['credits'] = json.loads(Properties.get('CREDITS','[]')) return self.template('/edit-credits.pt', theme='AdminPanel')
def edit_leaderboard(self): if 'edit.leaderboard.submit' in self.request.params: archive_date = Properties.by({'prop_name':'LEADERBOARD_ARCHIVE_DATE'}).first() archive_date.prop_value = self.request.params.get('edit.leaderboard.archive_date','2013-1-1') transaction.commit() self.response['message'] = "Leaderboard Settings Changed" self.response['message_class'] = "info" self.response['leaderboard'] = {'archive_date': Properties.get('LEADERBOARD_ARCHIVE_DATE','2013-1-1'), } return self.template('/edit-leaderboard.pt', theme='AdminPanel')
def edit_leaderboard(self): if 'edit.leaderboard.submit' in self.request.params: archive_date = Properties.by({'prop_name':'LEADERBOARD_ARCHIVE_DATE'}).first() archive_date.prop_value = self.request.params.get('edit.leaderboard.archive_date','2013-1-1') hall_of_fame = Properties.by({'prop_name':'LEADERBOARD_HOF'}).first() results = [] for sections in range(int(self.request.params.get('hofs_sections',0))): s = str(sections) data = {'title':self.request.params.get('hofs_' + s + '_title',''), 'index':int(self.request.params.get('hofs_' + s + '_index','0')), 'players':[]} for rows in range(int(self.request.params.get('hofs_' + s + '_rows',0))): r = str(rows) pdata = {'name':self.request.params.get('hofs_' + s + '_' + r + '_name',''), 'score':self.request.params.get('hofs_' + s + '_' + r + '_score',''), 'index':rows} data['players'].append(pdata) data['players'] = sorted(data['players'],key=itemgetter('index')) results.append(data) results = sorted(results,key=itemgetter('index')) hall_of_fame.prop_value = json.dumps(results) transaction.commit() self.notify('Changes saved!') self.response['leaderboard'] = {'archive_date': Properties.get('LEADERBOARD_ARCHIVE_DATE','2013-1-1')} self.response['hofs'] = json.loads(Properties.get('LEADERBOARD_HOF','[]')) return self.template('/edit-leaderboard.pt', theme='AdminPanel')
def edit_mailer(self): if 'edit.mailer.submit' in self.request.params: msubject = Properties.by({'prop_name':'MAILER_TO_SUBJECT'}).first() msubject.prop_value = self.request.params.get('edit.mailer.subject','') mfrom = Properties.by({'prop_name':'MAILER_GLOBAL_FROM_ADDRESS'}).first() mfrom.prop_value = self.request.params.get('edit.mailer.from','') mfeedback = Properties.by({'prop_name':'MAILER_FEEDBACK_ADDRESS'}).first() mfeedback.prop_value = self.request.params.get('edit.mailer.feedback','') mbody = Properties.by({'prop_name':'MAILER_BODY'}).first() mbody.prop_value = self.request.params.get('edit.mailer.body','') transaction.commit() self.response['message'] = "Mailer Settings Changed" self.response['message_class'] = "info" self.response['mailer'] = {'subject': Properties.get('MAILER_TO_SUBJECT',''), 'from_address': Properties.get('MAILER_GLOBAL_FROM_ADDRESS',''), 'feedback_address': Properties.get('MAILER_FEEDBACK_ADDRESS',''), 'body': Properties.get('MAILER_BODY',''), } return self.template('/edit-mailer.pt', theme='AdminPanel')
def edit_info(self): # Analytics if 'edit.info.analytics.submit' in self.request.params: value = self.request.params.get('edit.info.analytics','') analytics = Properties.by({'prop_name':'ANALYTICS'}).first() analytics.prop_value = value transaction.commit() self.notify('Changes saved!') self.response['analytics'] = Properties.get('ANALYTICS',default='') # Site User Information users = Users.by(None,sort='last_active desc') self.response['users_last_active'] = users.all()[0:5] self.response['users_local_count'] = users.filter(getattr(Users,'is_local')==True).count() self.response['users_non_local_count'] = users.filter(getattr(Users,'is_local')==False).count() self.response['users_total_count'] = users.count() return self.template('/edit-info.pt', theme='AdminPanel')
def archive_date(cls): return datetime.datetime.strptime(Properties.get('LEADERBOARD_ARCHIVE_DATE'), '%Y-%m-%d')
def leaderboard_top_scores(self): self.response['hofs'] = json.loads(Properties.get('LEADERBOARD_HOF','[]')) return self.template('leaderboard_top.pt')
def active_base_theme(self): return Properties.get('ACTIVE_THEME','Original')
def help(self): self.response['help_address'] = Properties.get('MAILER_HELP_ADDRESS',default='') return self.template('help.pt')
def credits(self): self.response['credits'] = json.loads(Properties.get('CREDITS','[]')) return self.template('credits.pt')
def __init__(self, request): self.request = request self.context = request.context self.theme = self.request.active_base_theme self.response = {'instance_id' : 'default', 'analytics' : Properties.get('ANALYTICS')}