SHARE
TWEET

Untitled

a guest Mar 20th, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Неуспеваемость
  2. def poor_progress_pup(request, selected_group):
  3.     resp_dict = {}
  4.     request_context = request.app_context
  5.     context_institute = request_context['context_institute']
  6.     path_parts = request.path.split('/')
  7.     start_date = end_date = ''
  8.  
  9.     group = None
  10.  
  11.     if request.META.has_key('HTTP_REFERER'):
  12.         redirect_url = request.META['HTTP_REFERER']
  13.     if selected_group:
  14.         selected_group = ASIOU_G_Education.objects.get(institute=context_institute, id=selected_group)
  15.         resp_dict['selected_group'] = selected_group.name
  16.  
  17.     if request.method == 'POST':
  18.         post = request.POST.copy()
  19.  
  20.         selected_pers_id = []
  21.         subjects_id = []
  22.         selected_form_id = []
  23.         absent_visible = 0
  24.         for key in post:
  25.             if key.find('s_') != -1:
  26.                 subjects_id.append(int(key.split('_')[1]))
  27.             elif key.find('p_') != -1:
  28.                 selected_pers_id.append(int(key.split('_')[1]))
  29.             elif key == 'check_vizit' and post[key] == 'on':
  30.                 absent_visible = 1
  31.             elif key == 'year_start':
  32.                 start_year = post[key]
  33.             elif key == 'year_end':
  34.                 end_year = post[key]
  35.             elif key.find('form_') != -1:
  36.                 selected_form_id.append(int(key.split('_')[1]))
  37.  
  38.         #            string = post.getlist(key)
  39.         #
  40.         #            if len(string) > 1 and string[0]:
  41.         #                selected_pers_id.append(int(string[0]))
  42.  
  43.         selected_pers = ASIOU_PE_Person.objects.filter(institute=context_institute, id__in=selected_pers_id)
  44.         resp_dict['selected_pers'] = selected_pers
  45.         form = ASIOU_EP_RID_Export(post)
  46.  
  47.         if form.is_valid():
  48.             edu_date_start = (date(int(start_year), 9, 1))
  49.             edu_date_end = date(int(end_year), 8, 31)
  50.  
  51.             if edu_date_start > edu_date_end:
  52.                 messages.error(request, u'Не корректно указан год!')
  53.                 return HttpResponseRedirect(redirect_url)
  54.  
  55.             if edu_date_start and edu_date_end and selected_pers:
  56.  
  57.                 ep_grp = []
  58.                 ch_groups = ASIOU_G_Education.objects.filter(
  59.                     Q(institute=context_institute),
  60.                     Q(education_year=request_context['edu_year']),
  61.                     Q(type__label='group_10'))
  62.  
  63.                 ep_grp.append(selected_group.id)
  64.                 for ch in ch_groups:
  65.                     if selected_group in ch.from_groups.all() and ch not in ep_grp:
  66.                         ep_grp.append(ch.id)
  67.  
  68.                 lessons = ASIOU_EP_Less.objects.filter(Q(date__lte=edu_date_end) & Q(date__gte=edu_date_start),
  69.                                                        Q(institute=context_institute),
  70.                                                        Q(ep_group__group__in=ep_grp),
  71.                                                        Q(ep_group__subject__in=subjects_id)).order_by('date')
  72.  
  73.                 selected_form = ASIOU_EP_Less_Count_Marks.objects.filter(Q(institute=context_institute),
  74.                                                        Q(less__in=lessons),
  75.                                                        Q(type__in=selected_form_id))
  76.                 print lessons[0].id
  77.  
  78.  
  79.                 ep_groups = ASIOU_EP_Group.objects.filter(institute=context_institute, group__in=ep_grp,
  80.                                                           subject__in=subjects_id)
  81.  
  82.  
  83.                 # Определим систему оценивания для групп
  84.                 mark_sys = {}
  85.                 for ep_group in ep_groups:
  86.                     mark_sys[ep_group.id] = get_mark_system(context_institute, selected_group, ep_group,
  87.                                                             request_context['edu_year'])
  88.  
  89.                 subjects = ASIOU_I_Subject.objects.filter(institute=context_institute,
  90.                                                           id__in=ep_groups.values('subject__id')).order_by('name')
  91.  
  92.                 pup_list_by_subject = {}
  93.                 for s in subjects:
  94.                     persons_by_s = ASIOU_PE_Person.objects.filter(
  95.                         Q(institute=request_context['context_institute']),
  96.                         Q(doc_person__group__in=ep_groups.filter(subject=s).values('group')))
  97.                     pup_list_by_subject[s.id] = list_of(persons_by_s.values('id'), 'id', False, True)
  98.                 resp_dict['pup_list_by_subject'] = pup_list_by_subject
  99.  
  100.                 months = []
  101.                 less_dates = []
  102.                 l_d = []
  103.                 if len(lessons):
  104.                     dates = {}
  105.                     i = 1
  106.                     dates_less = {}
  107.  
  108.                     for l in lessons:
  109.                         if l.date not in l_d:
  110.                             l_d.append(l.date)
  111.                             less_dates.append([l.date, i])
  112.                             i += 1
  113.  
  114.                         dd = int('%d%02d' % (l.date.year, l.date.month))
  115.                         if dd not in dates_less:
  116.                             dates_less[dd] = []
  117.  
  118.                         if l.date not in dates_less[dd]:
  119.                             dates_less[dd].append(l.date)
  120.  
  121.                     months = []
  122.                     for month in dates_less:
  123.                         months.append([dates_less[month][0], len(dates_less[month])])
  124.                     resp_dict['months'] = sorted(months)
  125.  
  126.                     o_less_count = ASIOU_EP_Less_Count_Marks.objects.filter(less__in=lessons, hidden=0)
  127.  
  128.                     i = 0
  129.                     id_les_count = []
  130.                     less_to_count = {}
  131.  
  132.                     for item in o_less_count:
  133.                         i += 1
  134.                         if not item.less.pk in less_to_count:
  135.                             less_to_count[item.less.pk] = []
  136.                             i -= 1
  137.  
  138.                         less_to_count[item.less.pk].append(item)
  139.                         id_les_count.append(item.pk)
  140.  
  141.                     resp_dict['type'] = less_to_count
  142.                     resp_dict['dates'] = sorted(dates.items())
  143.                     resp_dict['less_dates'] = less_dates
  144.                     resp_dict['lessons'] = lessons
  145.  
  146.                     pre_marks = ASIOU_EP_Mark.objects.filter(institute=context_institute,
  147.                                                              less_count_marks__in=id_les_count,
  148.                                                              student__in=selected_pers.values('id'), hidden=0)
  149.  
  150.                     subj_marks = group_by(
  151.                         pre_marks.values('less_count_marks', 'less_count_marks__less__date', 'mark', 'student',
  152.                                          'less_count_marks__less__ep_group__subject__id',
  153.                                          'less_count_marks__less__ep_group__id',
  154.                                          'less_count_marks__less__ep_group__subject__name'),
  155.                         'less_count_marks__less__ep_group__subject__id')
  156.                     st_subjects = {}
  157.                     p_marks = []
  158.  
  159.                     if subj_marks:
  160.                         i_s = 1
  161.                         for s in subj_marks:
  162.                             i_s += 1
  163.                             marks = {}
  164.                             for m in subj_marks[s]:
  165.                                 num = 0
  166.                                 for l in less_dates:
  167.                                     if l[0] == m['less_count_marks__less__date']:
  168.                                         num = l[1]
  169.                                 if not num in marks:
  170.                                     marks[num] = {}
  171.  
  172.                                 if not m['student'] in marks[num]:
  173.                                     marks[num][m['student']] = []
  174.  
  175.                                 mark_name = m['mark']
  176.                                 p_mark = mark_name
  177.                                 marks[num][m['student']].append(p_mark)
  178.                                 if not m['student'] in st_subjects:
  179.                                     st_subjects[m['student']] = []
  180.                                 if not m['less_count_marks__less__ep_group__subject__id'] in st_subjects.get(
  181.                                         m['student']):
  182.                                     st_subjects[m['student']].append(
  183.                                         m['less_count_marks__less__ep_group__subject__id'])
  184.  
  185.                                 if p_mark == 2:
  186.                                     print '666'
  187.                                     # for s in selected_form:
  188.                                     #     if #двойка совпадает с выбранной ФК
  189.                                     #         #записать ее на печать
  190.                                 else:
  191.                                     messages.error(request, u'У данного ученика нет неудовлетворительных отметок')
  192.  
  193.                             params = {'marks': marks,
  194.                                       'subject': m['less_count_marks__less__ep_group__subject__name']}
  195.                             p_marks.append(params)
  196.  
  197.  
  198.                     # resp_dict['p_marks'] = p_marks
  199.                     resp_dict['subjects'] = subjects
  200.                     resp_dict['st_subjects'] = st_subjects
  201.                     resp_dict['selected_form'] = selected_form
  202.  
  203.                 else:
  204.                     messages.error(request, u'За данный период не было проведено ни одного урока!')
  205.  
  206.     else:
  207.         act_pers_id, no_act_pers_id, act_pers, no_act_pers, count_0 = pup_list_by_group(context_institute, date(
  208.             request_context['edu_year'], 9, 1), datetime.now().date(), selected_group.id, 'with_number')
  209.         p_id = act_pers_id + no_act_pers_id
  210.  
  211.         if count_0 != len(act_pers):
  212.             act_pers.sort()
  213.         resp_dict['persons'] = act_pers + no_act_pers
  214.  
  215.         ep_grp = []
  216.         ch_groups = ASIOU_G_Education.objects.filter(
  217.             Q(institute=context_institute),
  218.             Q(education_year=request_context['edu_year']),
  219.             Q(type__label='group_10'))
  220.  
  221.         ep_grp.append(selected_group.id)
  222.         for ch in ch_groups:
  223.             if selected_group in ch.from_groups.all() and ch not in ep_grp:
  224.                 ep_grp.append(ch.id)
  225.  
  226.         ep_groups = ASIOU_EP_Group.objects.filter(Q(institute=context_institute),
  227.                                                   Q(group__in=ep_grp) | Q(group=selected_group))
  228.  
  229.         subjects = ASIOU_I_Subject.objects.filter(institute=context_institute,
  230.                                                   id__in=ep_groups.values('subject__id')).order_by('name')
  231.  
  232.         resp_dict['CHOISE_TYPE_MARKS_OOU'] = CHOISE_TYPE_MARKS_OOU
  233.         resp_dict['subjects'] = subjects
  234.  
  235.         form = ASIOU_EP_RID_Export()
  236.         resp_dict['form'] = form
  237.  
  238.         resp_dict['periods_start'] = DatePickerInput().render('date_0', None, attrs={'id': 'id_date_0'})
  239.         resp_dict['periods_end'] = DatePickerInput().render('date_1', None, attrs={'id': 'id_date_1'})
  240.         print '5'
  241.  
  242.     return render(request, 'current_performance/poor_progress_pup.html', resp_dict)
  243.     # return render_to_response('current_performance/current_marks.html', resp_dict, context_instance=request_context)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top