コード例 #1
0
ファイル: views.py プロジェクト: adewinter/data-hq
def delete_data(request, formdef_id, template='confirm_multiple_delete.html'):
    context = {}
    form = get_object_or_404(FormDefModel, pk=formdef_id)
    if request.method == "POST":
        if 'instance' in request.POST:
            request.session['xform_data'] = [] 
            metadata = []
            for i in request.POST.getlist('instance'):
                # user has selected items and clicked 'delete'
                # redirect to confirmation
                if 'checked_'+ i in request.POST:
                    meta = Metadata.objects.get(formdefmodel=form, raw_data=int(i))
                    metadata.append(meta)
                    request.session['xform_data'].append(int(i))
                context['xform_data'] = metadata
        elif 'confirm_delete' in request.POST: 
            # user has confirmed deletion. Proceed.
            xformmanager = XFormManager()
            for id in request.session['xform_data']:
                xformmanager.remove_data(formdef_id, id)
            logging.debug("Instances %s of schema %s were deleted.", \
                          (unicode(request.session['xform_data']), formdef_id))
            request.session['xform_data'] = None
            return HttpResponseRedirect( reverse("xformmanager.views.data", \
                                         args=[formdef_id]) )
    else:
        request.session['xform_data'] = None
    context['form_name'] = form.form_display_name
    context['formdef_id'] = formdef_id
    return render_to_response(request, template, context)
コード例 #2
0
ファイル: testSync.py プロジェクト: aquaya/wqmanager
 def test_sync_some_submissions(self):
     """ Tests synchronizing some data from self (posts a few MD5s) """
     manager = XFormManager()
 
     # populate some files
     schema_1 = create_xsd_and_populate("pf_followup.xsd", "pf_followup_1.xml", path = DATA_DIR)
     schema_2 = create_xsd_and_populate("pf_new_reg.xsd", "pf_new_reg_1.xml", path = DATA_DIR)
     schema_3 = create_xsd_and_populate("pf_ref_completed.xsd", "pf_ref_completed_1.xml", path = DATA_DIR)
     
     # get MD5 of all current submissions
     MD5_buffer = rest_util.get_field_as_bz2(Submission, 'checksum')
     
     # populate a few more files
     submit_1 = populate("pf_followup_2.xml", path = DATA_DIR)
     submit_2 = populate("pf_new_reg_2.xml", path = DATA_DIR)
     submit_3 = populate("pf_ref_completed_2.xml", path = DATA_DIR)
     submit_4 = populate("pf_ref_completed_3.xml", path = DATA_DIR)
     starting_submissions_count = Submission.objects.all().count()
     starting_schemata_count = FormDefModel.objects.all().count()
     
     # get the difference between the first 3 files and the current
     # set of files (i.e. the last 4 files)
     submissions_file = "submissions.tar"
     self._POST_MD5s(MD5_buffer, submissions_file)
 
     # save checksums and delete the ones just populated (d,e,f)
     checksums = [ submit_1.checksum, submit_2.checksum, submit_3.checksum, submit_3.checksum ]
     
     manager.remove_data(schema_1.id, Metadata.objects.get(attachment=submit_1.xform).raw_data, \
                         remove_submission = True)
     manager.remove_data(schema_2.id, Metadata.objects.get(attachment=submit_2.xform).raw_data, \
                         remove_submission = True)
     manager.remove_data(schema_3.id, Metadata.objects.get(attachment=submit_3.xform).raw_data, \
                         remove_submission = True)
     manager.remove_data(schema_3.id, Metadata.objects.get(attachment=submit_4.xform).raw_data, \
                         remove_submission = True)
     
     # load data from sync file (d,e,f)
     load_submissions(submissions_file, "127.0.0.1:8000")
     
     try:
         # verify that the submissions etc. count are correct (d,e,f)
         self.assertEqual( starting_submissions_count, Submission.objects.all().count())
         submits = Submission.objects.all().order_by('-submit_time')[:4]
         # verify that the correct submissions were loaded
         Submission.objects.get(checksum=checksums[0])
         Submission.objects.get(checksum=checksums[1])
         Submission.objects.get(checksum=checksums[2])
         Submission.objects.get(checksum=checksums[3])
     except Submission.DoesNotExist:
         self.fail("Incorrect submission received")
     finally:
         # clean up
         manager = XFormManager()
         manager.remove_schema(schema_1.id, remove_submissions = True)
         manager.remove_schema(schema_2.id, remove_submissions = True)
         manager.remove_schema(schema_3.id, remove_submissions = True)