def get(self, payroll_user=None, week=None): if self.user is not None: start_date = utils.get_last_monday(datetime.date.today()) end_date = start_date + datetime.timedelta(days=6) if week: start_date = utils.get_last_monday(datetime.date.fromtimestamp(float(week))) end_date = start_date + datetime.timedelta(days=6) records = TimeRecord.get_current_week(payroll_user or self.user.username, start_date) else: records = TimeRecord.get_current_week(payroll_user or self.user.username) if not records: return abort(404) next_date = start_date + datetime.timedelta(days=7) prev_date = start_date - datetime.timedelta(days=7) context = { 'nav': 'payroll', 'user': self.user, 'table_rows': records, 'payroll_username': payroll_user or self.user.username, 'start_date': start_date, 'end_date': end_date, 'prev_timestamp': time.mktime(prev_date.timetuple()), 'next_timestamp': time.mktime(next_date.timetuple()), } return render_template('payroll.html', **context) else: flash("Please log in before accessing the payroll system") return render_template('index.html')
def get(self, payroll_user=None, week=None): start_date = utils.get_last_monday(datetime.date.today()) end_date = start_date + datetime.timedelta(days=6) if week: start_date = utils.get_last_monday( datetime.date.fromtimestamp(float(week))) end_date = start_date + datetime.timedelta(days=6) records = TimeRecord.get_current_week( payroll_user or self.user.username, start_date) else: records = TimeRecord.get_current_week(payroll_user or self.user.username) if not records: return abort(404) next_date = start_date + datetime.timedelta(days=7) prev_date = start_date - datetime.timedelta(days=7) context = { 'nav': 'payroll', 'user': self.user, 'table_rows': records, 'payroll_username': payroll_user or self.user.username, 'start_date': start_date, 'end_date': end_date, 'prev_timestamp': time.mktime(prev_date.timetuple()), 'next_timestamp': time.mktime(next_date.timetuple()), } return render_template('payroll.html', **context)
def get(self, username): days = int(request.args.get('days', 14)) user = User.get_user_by_username(username) if not user: abort(404) records = TimeRecord.get_approved_records_by_username(username, num_days=days) record_list = [] for record in records: record_list.append({ 'date': record.date.strftime('%B %d'), 'clock-in': record.clock_in.strftime('%I:%M %p'), 'clock-out': record.clock_out.strftime('%I:%M %p'), 'approved': record.approved, 'approved-by': record.approved_by }) response = { 'username': user.username, 'ssn': user.ssn, 'wage': user.wage, 'records': record_list } return json.dumps(response)
def post(self, payroll_user=None, week=None): if self.user is not None: for input, value in request.form.iteritems(): if value: punch_type, input_id = input.split('-') current_record = TimeRecord.objects(id=input_id).get() try: time = datetime.datetime.strptime(value, '%I:%M %p') day = current_record.date timestamp = datetime.datetime.combine(day, time.time()) except ValueError, e: pass if punch_type == 'clockin': current_record.clock_in = timestamp else: current_record.clock_out = timestamp if current_record.clock_in and current_record.clock_out: current_record.set_hours() current_record.save() if payroll_user and week: return redirect((url_for('payroll', payroll_user=payroll_user, week=week))) return redirect(url_for('payroll'))
def get(self, username): if self.user is not None and self.user.is_admin: days = int(request.args.get('days', 14)) user = User.get_user_by_username(username) if not user: abort(404) records = TimeRecord.get_approved_records_by_username(username, num_days=days) record_list = [] for record in records: record_list.append({ 'date': record.date.strftime('%B %d'), 'clock-in': record.clock_in.strftime('%I:%M %p'), 'clock-out': record.clock_out.strftime('%I:%M %p'), 'approved': record.approved, 'approved-by': record.approved_by }) response = { 'username': user.username, 'ssn': user.ssn, 'wage': user.wage, 'records': record_list } else: response = { 'msg': 'You are not authenticated, or you do not have permission to use this action' } return json.dumps(response)
def get(self): context = {'nav': 'approve', 'user': self.user} records = TimeRecord.get_unapproved_records() context['records'] = records return render_template('approve.html', **context)
def get(self): context = { 'nav': 'approve', 'user': self.user } records = TimeRecord.get_unapproved_records() context['records'] = records return render_template('approve.html', **context)
def get(self, payroll_user=None, week=None): # check logged in if not self.user or not self.user.username or not self.user.is_authenticated: return redirect('/logout?byebye=yes') # if a payroll user is specified, the logged in user must be an approver (or it must be thier own account) if payroll_user: payroll_user = crypto.encrypt(payroll_user) if not self.user.is_approver: if not payroll_user == self.user.username: return redirect('/logout?byebye=yes') # sanitize input for week parameter if week: if not utils.sanitize_number_input(week): return redirect('/logout?byebye=yes') start_date = utils.get_last_monday(datetime.date.today()) end_date = start_date + datetime.timedelta(days=6) if week: start_date = utils.get_last_monday(datetime.date.fromtimestamp(float(week))) end_date = start_date + datetime.timedelta(days=6) records = TimeRecord.get_current_week(payroll_user or self.user.username, start_date) else: records = TimeRecord.get_current_week(payroll_user or self.user.username) if not records: return abort(404) next_date = start_date + datetime.timedelta(days=7) prev_date = start_date - datetime.timedelta(days=7) context = { 'user': self.user, 'table_rows': records, 'payroll_username' : payroll_user or self.user.username, 'start_date': start_date, 'end_date': end_date, 'prev_timestamp': time.mktime(prev_date.timetuple()), 'next_timestamp': time.mktime(next_date.timetuple()), } return render_template('payroll.html', **context)
def post(self): id = None approver = None if 'id' in request.form: approve, id = request.form['id'].split('-') if 'approver' in request.form: approver = request.form['approver'] if not id or not approver: return "error" time_record = TimeRecord.objects(id=id).get() time_record.approved = True time_record.approved_by = approver time_record.save() return approver
def get(self): if self.user is not None: if self.user.is_approver: context = {'nav': 'approve','user': self.user} records = TimeRecord.get_unapproved_records() context['records'] = records return render_template('approve.html', **context) else: flash("You are not an approver!") return render_template('index.html') else: flash("Please log in before accessing the payroll system") return render_template('index.html')
def get(self): # check logged in if not self.user or not self.user.username or not self.user.is_authenticated: return redirect('/logout?byebye=yes') # check user is an approver if not self.user.is_approver: return redirect('/logout?byebye=yes') context = { 'user': self.user } records = TimeRecord.get_unapproved_records() context['records'] = records return render_template('approve.html', **context)
def post(self): if self.user is not None and self.user.is_approver: id = None approver = None if 'id' in request.form: approve, id = request.form['id'].split('-') if 'approver' in request.form: approver = request.form['approver'] if not id or not approver: return "error" time_record = TimeRecord.objects(id=id).get() time_record.approved = True time_record.approved_by = approver time_record.save() return approver else: flash("You are not an approver!") return render_template('index.html')
def post(self): # check logged in if not self.user or not self.user.username or not self.user.is_authenticated: return "error: not authenticated" # check user is an approver if not self.user.is_approver: return "error: permission denied" id = None if 'id' in request.form: approve, id = request.form['id'].split('-') if not id: return "error" time_record = TimeRecord.objects(id=id).get() time_record.approved = True time_record.approved_by = self.user.username time_record.save() return "success"
def post(self, payroll_user=None, week=None): for input, value in request.form.iteritems(): if value: punch_type, input_id = input.split('-') current_record = TimeRecord.objects(id=input_id).get() try: time = datetime.datetime.strptime(value, '%I:%M %p') day = current_record.date timestamp = datetime.datetime.combine(day, time.time()) except ValueError, e: pass if punch_type == 'clockin': current_record.clock_in = timestamp else: current_record.clock_out = timestamp if current_record.clock_in and current_record.clock_out: current_record.set_hours() current_record.save()
def get(self, username): # check logged in if not self.user or not self.user.username or not self.user.is_authenticated: return redirect('/logout?byebye=yes') # check user is an admin if not self.user.is_admin: return redirect('/logout?byebye=yes') # set the default user if /export was called if not username: username = self.user.username else: username = crypto.encrypt(username) days = 14 user = User.get_user_by_username(username) if not user: abort(404) # create workbook wb = xlwt.Workbook() ws = wb.add_sheet('Sheet 1') # write user ws.write(0,0,'User') ws.write(0,1,crypto.decrypt(user.username)) # write SSN ws.write(1,0,'SSN') ws.write(1,1,crypto.decrypt(user.ssn)) # write table headers ws.write(3,0,'Date') ws.write(3,1,'Clock In') ws.write(3,2,'Clock Out') ws.write(3,3,'Approved?') ws.write(3,4,'Approved By') # write out table entries records = TimeRecord.get_approved_records_by_username(username, num_days=days) row = 4 for record in records: ws.write(row,0,record.date.strftime('%B %d')) ws.write(row,1,record.clock_in.strftime('%I:%M %p')) ws.write(row,2,record.clock_out.strftime('%I:%M %p')) ws.write(row,3,record.approved) ws.write(row,4,crypto.decrypt(record.approved_by)) row = row + 1 # create IO buffer output = StringIO.StringIO() # save workbook into buffer wb.save(output) # reset buffer pointer and trigger response output.seek(0) return send_file(output, attachment_filename=crypto.decrypt(user.username) + ".xls", as_attachment=True)
def post(self, payroll_user=None, week=None): # check logged in if not self.user or not self.user.username or not self.user.is_authenticated: return redirect('/logout?byebye=yes') # make sure someone isn't trying to set someone else's payroll info... if payroll_user: if not payroll_user == crypto.decrypt(self.user.username): print "INVALID USER REQUEST: ", payroll_user return redirect('/logout?byebye=yes') # sanitize input for week parameter if week: if not utils.sanitize_number_input(week): print "INVALID WEEK PARAMETER: ", week return redirect('/logout?byebye=yes') for input, value in request.form.iteritems(): if value: punch_type, input_id = input.split('-') # check punch type if not punch_type == 'clockin': if not punch_type == 'clockout': print "INVALID PUNCH TYPE: ", punch_type return redirect('/logout?byebye=yes') # check record id input if not utils.sanitize_mongo_hash(input_id): print "INVALID RECORD ID: ", input_id return redirect('/logout?byebye=yes') current_record = TimeRecord.objects(id=input_id).get() # only update the record if the current user actually owns it # users can only update their own records... if current_record.username == self.user.username: # only let the user update the record if it hasn't been approved (no after the fact modifications) if not current_record.approved: # check time value if not utils.sanitize_time_input(value): print "INVALID TIME ENTRY: ", value return redirect('/logout?byebye=yes') try: time = datetime.datetime.strptime(value, '%I:%M %p') day = current_record.date timestamp = datetime.datetime.combine(day, time.time()) except ValueError, e: pass if punch_type == 'clockin': current_record.clock_in = timestamp else: current_record.clock_out = timestamp if current_record.clock_in and current_record.clock_out: current_record.set_hours() current_record.save()