def post(self):

        try:
            role = Role(value='manager')
            role.put()
            role = Role(value='employee')
            role.put()
            role = Role(value='hr')
            role.put()
        except:
            self.response.out.write('error')
            return
Beispiel #2
0
    def get(self):

        user = self.request.environ['current_user']

        prs = PerformanceReview.gql("WHERE employee = :user ORDER BY date DESC", user = user)
        prs = prs.fetch(1000)

        user_is_manager = 0
        for role in user.role:
            if Role.get(role).value == "manager":
                user_is_manager = 1
                break

        current_pr = None

        comments = None

        if not user_is_manager:
            comments = CommentToForm.gql("WHERE manager = :manager AND comment = NULL", manager = user).fetch(1000)
            comments = filter(lambda x: x.pr.period.is_open, comments)
        if prs:
            if prs[0].period.is_open:
                current_pr = prs[0]
                prs.remove(prs[0])

        template_values = {'current_pr': current_pr,
                           'prs': prs,
                           'user': user,
                           'comments': comments
                        }

        path = 'templates/api.employee.html'
        self.response.out.write(template.render(path, template_values))
Beispiel #3
0
    def post(self):

        key = self.request.get('key')

        email = self.request.get('email').strip()

        user = User.get(key)

        user.email = email

        first_name = self.request.get('first_name').strip()
        user.first_name = first_name

        last_name = self.request.get('last_name').strip()
        user.last_name = last_name

        position = self.request.get('position')
        user.position = position

        first_date =  self.request.get('first_date')
        try:
            first_date = datetime.datetime.strptime(first_date, '%Y-%m-%d').date()
        except ValueError:
            first_date = None
        user.first_date = first_date

        dept = self.request.get('dept')
        dept_ref = Dept.all().filter('name', dept).get()

        if dept_ref is None:
            dept_ref = Dept(name=dept)
            dept_ref.put()

        user.dept = dept_ref
        try:
            manager = Model.get(self.request.get('manager'))
        except BadKeyError:
            manager = None
        user.manager = manager

        roles = self.request.get('role')[:-1].split(',')

        user.role = []
        for role in roles:
                role_key = Role.gql("WHERE value = :role",
                                    role=role).get().key()
                user.role.append(role_key)
        user.put()

        self.response.out.write('You have successfully updated user info')
Beispiel #4
0
    def post(self):

        user = self.request.environ['current_user']

        role_key = Role.gql("WHERE value = :hr", hr='hr').get().key()

        if role_key not in user.role:
            self.error(403)
            return

        start_str = self.request.get('start')
        finish_str = self.request.get('finish')
        type = self.request.get('type')

        event = Event.all().filter('type', type).get()
        try:
            first_date = event.first_effective_date
        except AttributeError:
            first_date = None

        employees = self.request.get('employees')[:-1].split(',')

        try:
            start = datetime.datetime.strptime(start_str, '%Y-%m-%d').date()
            finish = datetime.datetime.strptime(finish_str, '%Y-%m-%d').date()
        except ValueError:
            self.response.out.write('incorrect date')
            self.error(403)
            return

        description = "PR %s: %s-%s" % (type, start_str, finish_str)

        period = PerformanceReviewPeriod(type=type,
                                         description=description,
                                         start_date=start,
                                         finish_date=finish)
        period.put()

        for employee in employees:
            if employee != '':
                user = Model.get(employee)
                pr = PerformanceReview(employee=user,
                                       first_effective_date=first_date,
                                       manager=user.manager,
                                       period=period,
                                       date=start)
                pr.put()

        self.response.out.write(period.key())
Beispiel #5
0
    def get(self, key):

        users = User.all()
        managers = []
        for user in users:
            for role in user.role:
                if Model.get(role).value == 'manager':
                    managers.append(user)

        roles = []
        if key:
            user = User.get(key)
            for role in user.role:
                roles.append(Role.get(role).value)
        else:
            user = None

        template_values = {'managers': managers,
                           'user': user,
                           'roles': roles}

        path = 'templates/new_user.html'
        self.response.out.write(template.render(path, template_values))
Beispiel #6
0
    def get(self):

        file_key = ContactXlsFile.all().get().file_key
        blob_info = blobstore.BlobInfo.get(file_key)
        file = blob_info.open().read()

        wb = xlrd.open_workbook(file_contents=file)
        wb.sheet_names()
        sh = wb.sheet_by_index(0)

        cols_dict = {'first_name': 1,
                     'last_name': 0,
                     'dept': 2,
                     'position': 3,
                     'email': 4,
                     'manager': 12}
        manager_dict = {}

        reg = "^\s+|\n|\r|\s+$"

        employee_role = Role.all().filter('value', 'employee').get().key()

        for rownum in range(sh.nrows)[6:]:
            email = sh.cell_value(rownum, cols_dict['email']).strip()
            user = User.all().filter('email', email).get()
            if user is None:
                user = User(email=email)
                user.put()

            if not user.role:
                user.role.append(employee_role)

            string_fields = ['first_name',
                             'last_name',
                             'position',
                             ]

            for field in string_fields:
                value = re.sub(reg,
                               '',
                               sh.cell_value(rownum, cols_dict[field]))
                setattr(user, field, value)

            department_str = re.sub(reg,
                                    '',
                                    sh.cell_value(rownum, cols_dict['dept']))
            department = Dept.all().filter('name', department_str).get()
            if department is None:
                department = Dept(name=department_str)
                department.put()
            user.dept = department

            user.put()

            manager_str = re.sub(reg,
                                 '',
                                 sh.cell_value(rownum, cols_dict['manager']))
            manager_dict[user.key()] = manager_str

        manager_role = Role.all().filter('value', 'manager').get().key()

        for user_key in manager_dict:

            manager_str = manager_dict[user_key].replace('  ', ' ')

            if manager_str:
                last_name, first_name = manager_str.split(' ')[:2]
                manager = User.all().filter('last_name',
                                            last_name).filter('first_name',
                                                              first_name).get()
            else:
                manager = None

            if manager is not None:
                if manager_role not in manager.role:
                    manager.role.append(manager_role)
                    manager.put()

            user = User.get(user_key)
            user.manager = manager
            user.put()

        self.redirect('/users')