class Task(db.Model): __bind_key__ = 'goalsheet' id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) description = db.Column(db.String(1000), nullable=False) dtAssigned = db.Column(db.DateTime) dtCompleted = db.Column(db.DateTime) dateStart = db.Column(db.DateTime) dateEnd = db.Column(db.DateTime) manadator = db.Column(db.Boolean(), default=True) midyearSelfAssessment = db.Column(db.String(500)) endyearSelfAssessment = db.Column(db.String(500)) completionstatus = db.Column(db.String(40)) personalNotes = db.Column(db.String(1000)) goalId = db.Column(db.Integer, db.ForeignKey("goal.id")) goalSheetId = db.Column( db.Integer, db.ForeignKey("goal_sheet.id") ) # # Only for convenience, we can always traverse via the goal-section selfRating = db.Column(db.Integer, default=0) #Self selfAssessment = db.Column(db.Integer, default=0) #Self l1Rating = db.Column(db.Integer, default=0) #L1 Manager l1Assessment = db.Column(db.Integer, default=0) l2Rating = db.Column(db.Integer, default=0) #L2 - DC-Lead l2Assessment = db.Column(db.Integer, default=0) l3Rating = db.Column(db.Integer, default=0) #L3 - mgmt - Sridhar/Sriram/Suresh l3Assessment = db.Column(db.Integer, default=0) pubRating = db.Column( db.Integer, default=0) #What is show to the end user and/or used for calculation pubAssessment = db.Column( db.Integer, default=0) #pub* may not be used, putting it just to be sure weight = db.Column(db.FLOAT, default=0) score = db.Column(db.FLOAT, default=0)
class AssignmentTemplate(db.Model): __bind_key__ = 'goalsheet' id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) title = db.Column( db.String(240), nullable=False ) # Name of the template .e.g. Principal Consultant Goals description = db.Column(db.String(1000), nullable=False) # Description of the template finalized = db.Column(db.Boolean(), default=False)
class HrmsDocument(db.Model): __bind_key__ = 'hrmsdocuments' id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) empEmail = db.Column( db.String(200)) #Employee email, after look-up by name fileName = db.Column( db.String(256)) # FileName as given by the user (for downloading) storedFileName = db.Column(db.String(1024)) # FileName as stored on disk dateStored = db.Column(db.DateTime) retentionDays = db.Column(db.Integer, default=0) # number of days to keep encrypted = db.Column(db.Boolean(), default=False) archived = db.Column(db.Boolean(), default=False) #Lets store the linking information along with the file-data instead of the element data #This allows for adding file-attachments to existing elements without modifying them #Defined types: Task = 1, Comments = 2 linkedToType = db.Column(db.Integer, default=0) # Task, Comment, etc. linkedToId = db.Column(db.Integer, default=0) # Id of Task, comment, etc.
class FeedbackFromAnyone(db.Model): __bind_key__ = 'goalsheet' #Generic ID id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) #About which Item? elementId = db.Column(db.Integer, nullable=False) # ID of the Sheet, goal, task elementType = db.Column(db.Integer, nullable=False) # Is it a Sheet, goal, task Id? # Who, to Whom? giverEmail = db.Column(db.String(200), nullable=False) # Emp giving the feedback receiverEmail = db.Column(db.String(200), nullable=False) # Emp getting the feedback # Role of the giver e.g.: Project Manager, team member, etc. role = db.Column(db.String(200), nullable=True) # Relationship of the giver with the receiver e.g. colleague, direct reportee, reported directly, etc. relationship = db.Column(db.String(200), nullable=False) comment = db.Column( db.String(1000), nullable=False) # Entered by person requesting feedback feedback = db.Column(db.String(1000), nullable=False) # Entered by person giving feedback status = db.Column(db.String(30), nullable=False) # Requested, Given, withdrawn? # Who can see this? visibleToEmp = db.Column(db.Boolean(), default=True) # Is it visible to employee? visiblityLevel = db.Column( db.Integer, default=0) # At what level can an employee see this? #When dateRecorded = db.Column( db.DateTime, nullable=False) # Date/Time when the feedback was given #Which Assessment Year? assessmentYear = db.Column(db.String(10), nullable=False) #Notification flags, needed as notifications will go in batchs empNotified = db.Column(db.Boolean(), default=False) # Employee has been notified empNotifiedTime = db.Column(db.DateTime) # Employee last notified l1Notified = db.Column(db.Boolean(), default=False) # Manager/DC has been notified l2Notified = db.Column(db.Boolean(), default=False) # 2nd-line has been notified l3pNotified = db.Column(db.Boolean(), default=False) # HR has been notified renotifyEmp = db.Column(db.Boolean(), default=False) # Resend emails to employee renotifyNonEmp = db.Column( db.Boolean(), default=False) # Resend emails to managers/others
class Goal(db.Model): __bind_key__ = 'goalsheet' id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) title = db.Column(db.String(240), nullable=False) description = db.Column(db.String(1000), nullable=False) empId = db.Column( db.Integer ) # # Only for convenience, we can always traverse via the goal-sheet->section targetSet = db.Column(db.String(500)) midYearTargetAchieved = db.Column(db.String(500)) midyearSelfAssessment = db.Column(db.String(500)) midYearManagerFeedback = db.Column(db.String(500)) midYeardcFeedback = db.Column(db.String(500)) midYearFinalFeedback = db.Column(db.String(500)) selfRating = db.Column(db.Integer) managerRating = db.Column(db.Integer) dcLeadRating = db.Column(db.Integer) finalRating = db.Column(db.Integer) endYearTargetAchieved = db.Column(db.String(500)) endyearSelfAssessment = db.Column(db.String(500)) endYearManagerFeedback = db.Column(db.String(500)) endYeardcFeedback = db.Column(db.String(500)) endYearFinalFeedback = db.Column(db.String(500)) managerFeedback = db.Column(db.String(500)) dcFeedback = db.Column(db.String(500)) dateStart = db.Column(db.DateTime) dateEnd = db.Column(db.DateTime) manadator = db.Column(db.Boolean(), default=True) masterGoalId = db.Column(db.Integer) dtAssigned = db.Column(db.DateTime) dtCompleted = db.Column(db.DateTime) dcapprovalstatus = db.Column(db.String(40)) hrintimationstatus = db.Column(db.String(40)) completionstatus = db.Column(db.String(40)) goalSectionId = db.Column(db.Integer, db.ForeignKey("goal_section.id")) goalSheetId = db.Column( db.Integer, db.ForeignKey("goal_sheet.id") ) # Only for convenience, we can always traverse via the goal-section weight = db.Column(db.FLOAT, default=0) score = db.Column(db.FLOAT, default=0)
class GoalFeedback(db.Model): __bind_key__ = 'goalsheet' #Generic ID id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) #About which Item? elementId = db.Column(db.Integer, nullable=False) # ID of the Sheet, goal, task elementType = db.Column(db.Integer, nullable=False) # Is it a Sheet, goal, task Id? # Who, to Whom? giverEmpId = db.Column(db.Integer, nullable=False) # Emp giving the feedback receiverEmpId = db.Column(db.Integer, nullable=False) # Emp getting the feedback #What feedback = db.Column(db.String(1000), nullable=False) # Who can see this? visibleToEmp = db.Column(db.Boolean(), default=False) # Is it visible to employee? visiblityLevel = db.Column( db.Integer, nullable=False) # At what level can an employee see this? #When dateRecorded = db.Column( db.DateTime, nullable=False) # Date/Time when the feedback was given # phaseId = db.Column(db.Integer) # Phase ID - How can we find this?, Is it relavent? #Which Assessment Year? assessmentYear = db.Column(db.String(10), nullable=False) #Notification flags, needed as notifications will go in batchs empNotified = db.Column(db.Boolean(), default=False) # Employee has been notified l1Notified = db.Column(db.Boolean(), default=False) # Manager/DC has been notified l2Notified = db.Column(db.Boolean(), default=False) # 2nd-line has been notified l3pNotified = db.Column(db.Boolean(), default=False) # HR has been notified renotifyEmp = db.Column(db.Boolean(), default=False) # Resend emails to employee renotifyNonEmp = db.Column( db.Boolean(), default=False) # Resend emails to managers/others
class GoalCalendar(db.Model): __bind_key__ = 'goalsheet' id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True) phase = db.Column(db.String(80), nullable=False) # Phase name phaseType = db.Column( db.Integer, default=0 ) # Phase TYPE: Data-entry, Feedback, Feedback+Review, Review, Emp.Specific sheetStatus = db.Column(db.String(40), nullable=False, default="Assigned") actionString = db.Column(db.String(80), nullable=False, default="No Action Required") actionId = db.Column(db.Integer, default=0) # 0 = Do nothing empEmail = db.Column( db.Integer, default=0 ) # Non-Zero Number referres to an employee specific Phase, to handle exceptions description = db.Column(db.String(500), nullable=False) assessmentYear = db.Column(db.String(10), nullable=False) dateStart = db.Column(db.DateTime) # Both days are INCLUSIVE dateEnd = db.Column(db.DateTime) authlevel = db.Column(db.Integer, default=0) gs_enable_assignment = db.Column(db.Boolean(), default=False) # Sheet-Flags gs_enable_self = db.Column(db.Boolean(), default=False) gs_enable_approve = db.Column(db.Boolean(), default=False) gs_enable_end_year_self = db.Column(db.Boolean(), default=False) gs_enable_end_year_dc_approve = db.Column(db.Boolean(), default=False) gs_enable_end_year_closure = db.Column(db.Boolean(), default=False) # Goal-Flags goal_enable_task_approve = db.Column(db.Boolean(), default=False) goal_enable_edit = db.Column(db.Boolean(), default=False) goal_enable_approve = db.Column(db.Boolean(), default=False) # Task-Flags task_enable_update = db.Column(db.Boolean(), default=False) task_enable_delete = db.Column(db.Boolean(), default=False) task_enable_activity_edit = db.Column( db.Boolean(), default=False) # Also allows for marking it as complete #Task File -upload, ask-feedback flags, default set to true file_upload_enable = db.Column(db.Boolean(), default=True) # Enable File-Upload Button task_file_download_enable = db.Column( db.Boolean(), default=False) # Enable File-Upload Button ask_feedback_enable = db.Column( db.Boolean(), default=True) # Enable Ask-For-Feeback button task_enable_status_change = db.Column(db.Boolean(), default=False)