Esempio n. 1
0
    def add_update(self):
        method = ['POST', 'PATCH'][self.ids['btn_positive'].text == 'Update']
        data = dict()
        data['mat_no'] = self.ids.mat_no.text
        data['surname'] = self.ids.surname.text.upper()
        data['othernames'] = ' '.join([self.ids.fname.text.capitalize(), self.ids.mname.text.capitalize()])
        try:
            data['mode_of_entry'] = MODES_OF_ENTRY.index(self.ids.mode_of_entry.text) + 1
        except ValueError:
            self.show_input_error()
            return
        data['session_admitted'] = int(self.ids.session_admit.text)
        data['level'] = int(self.ids.level.text)
        data['transfer'] = int(self.ids.transfer.text == 'Yes')
        data['sex'] = ['M', 'F'][self.ids.sex.text != 'Male']
        data['date_of_birth'] = self.ids.dob.text
        data['state_of_origin'] = self.ids.state_of_origin.text
        data['lga'] = self.ids.lga_of_origin.text
        data['phone_no'] = self.ids.phone_no.text
        data['email_address'] = self.ids.email.text
        data['sponsor_phone_no'] = self.ids.s_phone_no.text
        data['sponsor_email_address'] = self.ids.s_email.text
        data['grad_status'] = int(self.ids.grad.text == 'YES')

        url = urlTo('personal_info')
        params = {'superuser': True} if root.sm.is_admin else None
        AsyncRequest(url, method=method, data=data, params=params, on_success=self.record_added, on_failure=self.show_add_error)
Esempio n. 2
0
 def get(self):
     url = urlTo('level_gpa_cards')
     params = {'level': int(self.ids['level'].text)}
     AsyncRequest(url,
                  params=params,
                  on_success=self.show_gpa_cards,
                  on_failure=self.show_error)
Esempio n. 3
0
 def create(self):
     if not self.ids['cbox'].active and self.ids['pwd'].text != self.ids[
             'rpwd'].text:
         self.highlight_textinput(self.ids['pwd'])
         self.highlight_textinput(self.ids['rpwd'])
         return
     if ':' in self.ids['username'].text:
         ErrorPopup(message='Username contains ":"')
         self.highlight_textinput(self.ids['username'])
         return
     elif ':' in self.ids['pwd'].text:
         ErrorPopup(message='Password contains ":"')
         self.highlight_textinput(self.ids['pwd'])
         return
     if self.ids['cbox'].active:
         self.ids['pwd'].text = ''.join(
             choices(list(alphanumeric_chars), k=10))
     data = {
         'permissions':
         titles_perm[self.ids['title'].text] % self.ids['username'].text
     }
     data[
         'fullname'] = self.ids['fname'].text + ' ' + self.ids['lname'].text
     data['email'] = self.ids['email'].text
     data['username'] = self.ids['username'].text
     data['title'] = self.ids['title'].text
     data['password'] = tokenize(self.ids['pwd'].text)
     url = urlTo('accounts')
     AsyncRequest(url, method='POST', data=data, on_success=self.success)
Esempio n. 4
0
 def reset(self):
     if not self.ids['cbox'].active and self.ids['pwd'].text != self.ids[
             'rpwd'].text:
         self.highlight_textinput(self.ids['pwd'])
         self.highlight_textinput(self.ids['rpwd'])
         return
     if ':' in self.ids['pwd'].text:
         ErrorPopup(message='Password contains ":"')
         self.highlight_textinput(self.ids['pwd'])
         return
     if self.ids['cbox'].active:
         self.ids['pwd'].text = ''.join(
             choices(list(alphanumeric_chars), k=10))
     username = self.ids['username'].text
     self.selected_acct = self.get_user(username)
     if not self.selected_acct:
         ErrorPopup(username + ' not found')
         return
     self.selected_acct['password'] = tokenize(self.ids['pwd'].text)
     url = urlTo('accounts')
     params = {'superuser': True} if root.sm.is_admin else None
     AsyncRequest(url,
                  method='PATCH',
                  data=self.selected_acct,
                  params=params,
                  on_success=self.success)
Esempio n. 5
0
 def remove(self):
     params = {'username': self.ids['username'].text}
     url = urlTo('accounts')
     AsyncRequest(url,
                  method='DELETE',
                  params=params,
                  on_success=self.success)
Esempio n. 6
0
 def _remove(self):
     params = {
         'code': self.course_code,
         'action': self.action
     }
     url = urlTo('course_details')
     AsyncRequest(url, method='DELETE', params=params, on_success=self.success)
Esempio n. 7
0
 def search(self):
     acad_session = int(self.ids.reg_session.text)
     url = urlTo('course_reg')
     param = {'mat_no': self.ids.mat_no.text, 'acad_session': acad_session}
     AsyncRequest(url,
                  on_success=self.populate_fields_for_old_reg,
                  on_failure=self.check_query_session,
                  params=param)
Esempio n. 8
0
 def delete_backup(self):
     url = urlTo('backups')
     params = {'backup_name': self.backup_name}
     AsyncRequest(url,
                  method='DELETE',
                  params=params,
                  on_success=self.delete_success,
                  on_failure=self.show_error)
Esempio n. 9
0
 def backup(self):
     url = urlTo('backups')
     data = {'tag': self.ids['tag'].text}
     AsyncRequest(url,
                  method='POST',
                  data=data,
                  on_success=self.success,
                  on_failure=self.show_error)
Esempio n. 10
0
 def download_backup(self):
     url = urlTo('backup_download')
     params = {'backup_name': self.backup_name}
     AsyncRequest(url,
                  method='GET',
                  params=params,
                  on_success=self._download_backup,
                  on_failure=self.show_error)
Esempio n. 11
0
 def get_course_details(self):
     if not self.ids['lvl_spinner'].text:
         return
     url = urlTo('course_details')
     course_level = int(self.ids['lvl_spinner'].text[:3])
     use_curr_session = self.ids['session_spinner'].text == 'Current session'
     params = {'level': course_level, 'use_curr_session': use_curr_session}
     AsyncRequest(url, method='GET', params=params, on_success=self.populate_dv)
Esempio n. 12
0
 def search(self, *args):
     url = urlTo('student_summary')
     mat_no = self.ids.mat_no.text
     surname = self.ids.surname_.text
     if mat_no:
         param = {'mat_no': mat_no}
         AsyncRequest(url, on_success=self.populate_personal_info, on_failure=self.show_error, params=param)
     else:
         self.show_error("Feature not implemented yet")
Esempio n. 13
0
 def query_users(self):
     url = urlTo('accounts')
     params = {}
     if root.sm.is_admin == 1:
         AsyncRequest(url,
                      params=params,
                      method='GET',
                      on_success=self.update_users)
     else:
         self.update_users(bypass=True)
Esempio n. 14
0
 def search(self):
     url = urlTo('results_stats_multiple')
     if self.validate_inputs():
         session = int(self.ids['session'].text)
         level = int(self.ids['level'].text)
         self.query_params = {'acad_session': session, 'level': level}
         AsyncRequest(url,
                      params=self.query_params,
                      on_success=self.populate_fields)
     else:
         ErrorPopup('Fields can\'t be empty')
Esempio n. 15
0
 def check_query_session(self, resp):
     acad_session = int(self.ids.reg_session.text)
     if acad_session == get_current_session():
         url = urlTo('course_reg_new')
         param = {'mat_no': self.ids.mat_no.text}
         AsyncRequest(url,
                      on_success=self.populate_fields,
                      on_failure=self.show_error,
                      params=param)
     else:
         self.show_error(resp)
Esempio n. 16
0
 def search(self, *args):
     url = urlTo('senate_version')
     try:
         acad_session = int(self.ids['acad_session'].text)
         level = int(self.ids['level'].text)
     except ValueError:
         ErrorPopup('Field cannot be empty')
         return
     params = {'acad_session': acad_session, 'level': level}
     AsyncRequest(url,
                  params=params,
                  on_success=self.generate_senate_version)
Esempio n. 17
0
 def search(self, *args):
     course_code = self.ids['code'].text
     if not course_code:
         ErrorPopup('Input can\'t be empty')
         return
     course_code = course_code[:3].upper() + course_code[3:]
     params = {'course_code': course_code}
     url = urlTo('course_details')
     AsyncRequest(url,
                  params=params,
                  on_success=self.populate_fields,
                  on_failure=self.show_error)
Esempio n. 18
0
 def restore(self):
     url = urlTo('backups')
     data = {
         'backup_name': self.backup_name,
         'include_accounts': self.ids['include_accounts'].text == 'Yes',
         'backup_current': self.ids['backup_current'].text == 'Yes',
     }
     AsyncRequest(url,
                  method='PATCH',
                  data=data,
                  on_success=self.success,
                  on_failure=self.show_error)
Esempio n. 19
0
 def search(self, *args):
     url = urlTo('broad_sheet')
     try:
         acad_session = int(self.ids['acad_session'].text)
         level = int(self.ids['level'].text)
         raw_score = self.ids['raw_score'].text == 'Yes'
         semester = self.ids['semester'].text == 'First Only'
     except ValueError:
         ErrorPopup('Field cannot be empty')
         return
     params = {'acad_session': acad_session, 'level': level, 'first_sem_only': semester, 'raw_score': raw_score}
     AsyncRequest(url, params=params, on_success=self.generate_broadsheet, on_failure=self.show_error)
Esempio n. 20
0
 def search(self):
     url = urlTo('results')
     session = get_current_session(
     ) if not self.ids['session'].text else int(self.ids['session'].text)
     params = {
         'mat_no': self.ids['mat_no'].text,
         'acad_session': session,
         'include_reg': True
     }
     AsyncRequest(url,
                  method='GET',
                  params=params,
                  on_success=self.get_grading_rules)
Esempio n. 21
0
 def search(self, *args):
     url = urlTo('result_update')
     mat_no = self.ids['mat_no'].text
     raw_score = self.ids['raw_score'].text == 'Yes'
     clearance = self.ids['clearance'].text == 'Yes'
     params = {
         'mat_no': mat_no,
         'raw_score': raw_score,
         'clearance': clearance
     }
     AsyncRequest(url,
                  params=params,
                  on_success=self.generate_result_update)
Esempio n. 22
0
 def _delete_course_reg(self):
     if not self.data:
         ErrorPopup('Delete error')
         return
     params = {
         'mat_no': self.data['mat_no'],
         'acad_session': self.data['course_reg_session'],
         'superuser': True if root.sm.is_admin else None
     }
     url = urlTo('course_reg')
     AsyncRequest(url,
                  params=params,
                  method='DELETE',
                  on_failure=self.show_error,
                  on_success=self.clear_fields)
Esempio n. 23
0
    def update(self):
        if not self.ids['password'].text:
            ErrorPopup('Password field can\'t be empty')
            return
        if ':' in self.ids['password'].text:
            ErrorPopup('Password contains ":"')
            return

        self.data['password'] = tokenize(self.ids['password'].text)
        self.data['email'] = self.ids['email'].text
        url = urlTo('accounts')
        AsyncRequest(url,
                     data=self.data,
                     method='PATCH',
                     on_success=self.update_success)
Esempio n. 24
0
 def generate_course_form(self):
     url = urlTo('course_form')
     try:
         params = {
             'mat_no': self.ids['mat_no'].text,
             'session': int(self.ids['reg_session'].text),
             'to_print': True
         }
     except ValueError:
         ErrorPopup('Fields cannot be empty')
         return
     AsyncRequest(url,
                  params=params,
                  method='GET',
                  on_success=self.print_course_form)
Esempio n. 25
0
    def update(self):
        data = dict()

        data['ViceChancellor'] = self.ids['vc'].text
        data['ChairmanSubCommitteeBCS'] = self.ids['chairman'].text
        data['Dean'] = self.ids['dean'].text
        data['FacultyExamOfficer'] = self.ids['exam_officer'].text
        data['HOD'] = self.ids['hod'].text
        data['NumPrizeWinners'] = int(self.ids['prize_winners'].text)

        url = urlTo('dynamic_props')
        AsyncRequest(url,
                     data=data,
                     method='PATCH',
                     on_success=self.submit_success)
Esempio n. 26
0
    def get_grading_rules(self, resp):
        data = resp.json()
        flatten_dict = lambda dic: [[key] + list(val[:4]) for key, val in {
            **dic['first_sem'],
            **dic['second_sem']
        }.items()]
        data['regular_courses'] = flatten_dict(data['regular_courses'])
        data['carryovers'] = flatten_dict(data['carryovers'])
        self.data = data

        url = urlTo('grading_rules')
        params = {'acad_session': self.data['entry_session']}
        AsyncRequest(url,
                     params=params,
                     method='GET',
                     on_success=self.populate_fields)
Esempio n. 27
0
    def add(self):
        try:
            data = {}
            for key in keys[:-3]:
                data[key] = self.ids[key].text
            data['credit'] = int(data['credit'])
            data['semester'] = [1, 2][data['semester'].strip().lower() == 'second']
            data['level'] = int(self.ids['level'].text)
            data['start_date'] = get_current_session() + 1
            data['end_date'] = 2999
            optional = self.ids['opt_yes'].active
            data['options'] = [0, data['semester']][optional]

            data['code'] = data['code'].upper()
            data['teaching_dept'] = data['teaching_dept'].upper()
            url = urlTo('course_details')
            AsyncRequest(url, method='POST', data=data, on_success=self.success)
        except:
            ErrorPopup('Fields cannot be empty')
Esempio n. 28
0
 def register_courses(self):
     if not self.data:
         ErrorPopup('Registration error')
         return
     if not self.validate_inputs:
         ErrorPopup('Fees status field is empty')
         return
     self.data['fees_status'] = int(self.ids['fees_stat'].text == 'Paid')
     courses = {
         'first_sem': self.first_sem_view.get_courses_for_reg(),
         'second_sem': self.second_sem_view.get_courses_for_reg()
     }
     self.data['courses'] = courses
     url = urlTo('course_reg')
     params = {'superuser': True} if root.sm.is_admin else None
     AsyncRequest(url,
                  data=self.data,
                  params=params,
                  method='POST',
                  on_failure=self.show_reg_error,
                  on_success=self.resp_on_success)
Esempio n. 29
0
    def update(self):
        results_list = self.results_view.get_data()
        carryovers_list = self.carryovers_result_view.get_data()

        if not self.data:
            return

        results_diff = self.compute_diff(results_list,
                                         self.data['regular_courses'])
        carryovers_diff = self.compute_diff(carryovers_list,
                                            self.data['carryovers'])

        data = {
            'level': get_assigned_level(),
            'is_admin': root.sm.is_admin,
            'list_of_results': []
        }

        session = int(self.ids['session'].text)

        for course_list in results_diff:
            course_code = course_list[0]
            score = course_list[-2]
            data['list_of_results'].append(
                [course_code, session, self.data['mat_no'], score])

        for course_list in carryovers_diff:
            course_code = course_list[0]
            score = course_list[-2]
            data['list_of_results'].append(
                [course_code, session, self.data['mat_no'], score])

        url = urlTo('results')
        params = {'superuser': True} if (root.sm.is_admin == 1) else None
        AsyncRequest(url,
                     data=data,
                     params=params,
                     method='POST',
                     on_success=self.show_response)
Esempio n. 30
0
    def update_courses(self):
        url = urlTo('course_details')
        diffs = self.compute_diff()
        if not diffs:
            ErrorPopup(message='Nothing to update')
            return
        data = []
        for row in diffs:
            course = {}
            for idx in range(len(row) - 3):
                course[keys[idx]] = row[idx]
            course['credit'] = int(course['credit'])
            course['semester'] = [1, 2][course['semester'].strip().lower() == 'second']
            course['level'] = int(self.ids['lvl_spinner'].text[:3])
            course['start_date'] = row[keys.index('start_date')]
            course['end_date'] = 2999 if not row[keys.index('end_date')] else row[keys.index('end_date')]
            course['options'] = [0, course['semester']][row[keys.index('options')] == 'Yes']

            course['code'] = course['code'].upper()
            course['teaching_dept'] = course['teaching_dept'].upper()

            data.append(course)
        AsyncRequest(url, method='PUT', data=data, on_success=self.update_callback)