def diff_submission_forms(old_submission_form, new_submission_form): assert(old_submission_form.submission == new_submission_form.submission) submission = new_submission_form.submission differ = diff_match_patch() old = render_model_instance(old_submission_form) new = render_model_instance(new_submission_form) label_lookup = [] for field_info in paper_forms.get_field_info_for_model(SubmissionForm): if field_info.number: label_lookup.append((field_info.name, u'%s %s' % (field_info.number, field_info.label))) else: label_lookup.append((field_info.name, field_info.label)) label_lookup += [ ('foreignparticipatingcenter_set', _(u'Auslandszentren')), ('investigators', _(u'Zentren')), ('measures', _(u'Studienbezogen/Routinemäßig durchzuführende Therapie und Diagnostik')), ('nontesteduseddrug_set', _(u'Sonstige im Rahmen der Studie verabreichte Medikamente, deren Wirksamkeit und/oder Sicherheit nicht Gegenstand der Prüfung sind')), ('documents', _(u'Dokumente')), ] diffs = [] sorted_keys = [x[0] for x in label_lookup if x[0] in old.keys()] for field in sorted_keys: diff = old[field].diff(new[field]) if differ.diff_levenshtein(diff or []): label = dict(label_lookup)[field] diffs.append((label, diff)) return diffs
def handle(self, ec_number, sf_pk, **options): try: s = Submission.objects.get(ec_number=ec_number) except Submission.DoesNotExist: raise CommandError("No submission matches the given EC-Number: %s" % ec_number) submission_form = s.forms.get(pk=sf_pk) if not submission_form: raise CommandError("This submission does not have an attached SubmissionForm.") pdf = render_pdf(FakeRequest(), 'db/submissions/xhtml2pdf/view.html', { 'paper_form_fields': paper_forms.get_field_info_for_model(SubmissionForm), 'submission_form': submission_form, 'documents': submission_form.documents.filter(deleted=False).order_by('doctype__name', '-date'), }) open('%s.pdf' % s.get_ec_number_display(separator='-'), 'w').write(pdf)
def submission_pdf(request, submission_form_pk=None): submission_form = get_object_or_404(SubmissionForm, pk=submission_form_pk) filename = 'ek-%s-Einreichung.pdf' % submission_form.submission.get_ec_number_display(separator='-') if not submission_form.pdf_document: pdf = render_pdf(request, 'db/submissions/xhtml2pdf/view.html', { 'paper_form_fields': paper_forms.get_field_info_for_model(SubmissionForm), 'submission_form': submission_form, 'documents': submission_form.documents.filter(deleted=False).order_by('doctype__name', '-date'), }) doc = Document.objects.create_from_buffer(pdf) submission_form.pdf_document = doc submission_form.save() pdf = doc.file.read() submission_form.pdf_document.file.seek(0) pdf = submission_form.pdf_document.file.read() return pdf_response(pdf, filename=filename)