Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.36 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement