示例#1
0
 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
示例#2
0
    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')
示例#3
0
 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')
示例#4
0
 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')
示例#5
0
    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')


        
        
        
        
        
示例#6
0
    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')  
示例#7
0
 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')
示例#8
0
 def archive_date(cls):
     return datetime.datetime.strptime(Properties.get('LEADERBOARD_ARCHIVE_DATE'), '%Y-%m-%d')
     
     
示例#9
0
 def leaderboard_top_scores(self):
     self.response['hofs'] = json.loads(Properties.get('LEADERBOARD_HOF','[]'))
     return self.template('leaderboard_top.pt')
示例#10
0
 def active_base_theme(self):
     return Properties.get('ACTIVE_THEME','Original')
示例#11
0
 def help(self):
     self.response['help_address'] = Properties.get('MAILER_HELP_ADDRESS',default='')
     return self.template('help.pt')
示例#12
0
 def credits(self):
     self.response['credits'] = json.loads(Properties.get('CREDITS','[]'))
     return self.template('credits.pt')
示例#13
0
 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')}