Example #1
0
def main():
    global no_of_tabs, block_buffer, condition_stack, for_else, isOnElse, if_pos
    print("opening: {0}".format(sample))
    with open(sample) as file:
        lines = file.readlines()
        for eachline in lines:
            matched = re.match(identation_expression, eachline).groups()
            if matched[0] is not None:
                tabs = len(matched[0])
            else:
                tabs = 0
            if tabs > no_of_tabs:
                block_buffer = [eachline]
            elif tabs < no_of_tabs:
                try:
                    condition_stack.pop()
                except:
                    pass
                conditional_block = ConditionalBlock(condition_stack,
                                                     Block(block_buffer))
                graph.connect(conditional_block)

            else:
                block_buffer.append(eachline)

            eachline = eachline.strip()
            is_conditional_statement = re.match(conditional_expression,
                                                eachline.strip())
            is_else_conditional_statement = re.match(else_expression,
                                                     eachline.strip())
            if is_conditional_statement is not None:
                if eachline.startswith('elif'):
                    condition_stack.pop()
                condition_stack.append(
                    Condition(is_conditional_statement.groups()[1]))
                for_else.append(
                    Condition(is_conditional_statement.groups()[1]).negate())
                no_of_tabs -= 4

            elif is_else_conditional_statement is not None:
                condition_stack.extend(for_else[if_pos * -1:-1])
                no_of_tabs -= 4
                for_else = []
                try:
                    condition_stack.pop()
                except:
                    pass

            no_of_tabs = tabs
            print(
                "inside :", " AND ".join(
                    map(
                        lambda x: "'{0}'".format(x), condition_stack
                        if len(condition_stack) > 0 else ["global"])),
                " ------------->  ", eachline.strip())
Example #2
0
def main():
    global no_of_tabs, block_buffer, condition_stack
    print("opening: {0}".format(sample))
    with open(sample) as file:
        lines = file.readlines()
        for eachline in lines:
            eachline = eachline.strip()
            matched = re.match(identation_expression, eachline).groups()
            if matched[0] is not None:
                tabs = len(matched[0])
            else:
                tabs = 0
            if tabs > no_of_tabs:
                block_buffer = [eachline]
            elif tabs < no_of_tabs:
                conditional_block = ConditionalBlock(condition_stack,
                                                     Block(block_buffer))
                graph.connect(conditional_block)
                condition_stack.pop()
                # if(isOnElse):
                #     condition_stack.pop()
            else:
                block_buffer.append(eachline)
            no_of_tabs = tabs
            print("inside :",
                  " AND ".join(
                      map(
                          lambda x: "'{0}'".format(x), condition_stack
                          if len(condition_stack) > 0 else ["global"])),
                  end=" ")
            print("   ------------->  ", eachline.strip())
            is_conditional_statement = re.match(conditional_expression,
                                                eachline.strip())
            is_else_conditional_statement = re.match(else_expression,
                                                     eachline.strip())
            if is_conditional_statement is not None:
                if eachline.startswith('elif'):
                    condition_stack.pop()
                condition_stack.append(
                    Condition(is_conditional_statement.groups()[0],
                              is_conditional_statement.groups()[1]))
                for_else.append(
                    Condition(is_conditional_statement.groups()[0],
                              is_conditional_statement.groups()[1]))
                no_of_tabs -= 1
                isOnElse = False

            elif is_else_conditional_statement is not None:
                condition_stack.append(condition_stack.pop().negate())
                no_of_tabs -= 1
                isOnElse = True
                condition_stack.pop()
            else:
                isOnElse = False
def create_condition():
    form = ConditionForm()
    if form.validate_on_submit():
        if Condition.query.filter_by(name=form.name.data).first():
            flash('A condition with this name already exists.', 'danger')
            return render_template('condition.html',
                                   action=url_for('nbg.create_condition'),
                                   form=form)
        condition = Condition(form.name.data)
        for field in form.pairs:
            condition.pairs.append(StringPair(field.key.data,
                                              field.value.data))
        db.session.add(condition)
        db.session.commit()
        flash('Condition created', 'success')
        return redirect(url_for('nbg.list_conditions'))
    return render_template('condition.html',
                           action=url_for('nbg.create_condition'),
                           form=form)
Example #4
0
def copyProjectExperiments(project, new_project):

    t_experiments = Experiment.objects.filter(project=project)
    for experiment in t_experiments:

        new_experiment = Experiment(project=new_project,
                                    name=str(experiment.name),
                                    notes=str(experiment.notes))
        new_experiment.save()
        t_conditions = Condition.objects.filter(experiment=experiment)
        for condition in t_conditions:
            new_condition = Condition(experiment=new_experiment,
                                      name=str(condition.name),
                                      notes=str(condition.notes))
            new_condition.save()

            t_observations = Observation.objects.filter(condition=condition)
            for t_observation in t_observations:
                new_observation = Observation(
                    condition=new_condition,
                    species=t_observation.species,
                    time=t_observation.time,
                    value=t_observation.value,
                    stddev=t_observation.stddev,
                    steady_state=t_observation.steady_state,
                    min_steady_state=t_observation.min_steady_state,
                    max_steady_state=t_observation.max_steady_state)

                new_observation.save()

            t_treatments = Treatment.objects.filter(condition=condition)
            for t_treatment in t_treatments:
                new_treatment = Treatment(condition=new_condition,
                                          species=t_treatment.species,
                                          time=t_treatment.time,
                                          value=t_treatment.value)

                new_treatment.save()

            new_condition.save()
        new_experiment.save()
Example #5
0
def check_reports_html(sr_dict):
    """Does report alerts/reapprovals, requires loading HTML page."""
    global r

    logging.info('Checking reports html page')
    reports_page = r._request('http://www.reddit.com/r/mod/about/reports')
    soup = BeautifulSoup(reports_page)

    # check for report alerts
    for reported_item in soup.findAll(
            attrs={'class': 'rounded reported-stamp stamp'}):
        permalink = (reported_item.parent
                     .findAll('li', attrs={'class': 'first'})[0].a['href'])
        sub_name = re.search('^http://www.reddit.com/r/([^/]+)',
                    permalink).group(1).lower()
        try:
            subreddit = sr_dict[sub_name]
        except KeyError:
            continue

        if not subreddit.report_threshold:
            continue

        reports = re.search('(\d+)$', reported_item.text).group(1)
        if int(reports) >= subreddit.report_threshold:
            try:
                # check log to see if this item has already had an alert
                ActionLog.query.filter(
                    and_(ActionLog.subreddit_id == subreddit.id,
                         ActionLog.permalink == permalink,
                         ActionLog.action == 'alert')).one()
            except NoResultFound:
                c = Condition()
                c.action = 'alert'
                perform_action(subreddit, permalink, c)

    # do auto-reapprovals
    for approved_item in soup.findAll(
            attrs={'class': 'approval-checkmark'}):
        report_stamp = approved_item.parent.parent.findAll(
                        attrs={'class': 'rounded reported-stamp stamp'})[0]

        permalink = (report_stamp.parent
                     .findAll('li', attrs={'class': 'first'})[0].a['href'])
        sub_name = re.search('^http://www.reddit.com/r/([^/]+)',
                    permalink).group(1).lower()
        try:
            subreddit = sr_dict[sub_name]
        except KeyError:
            continue

        if not subreddit.auto_reapprove:
            continue

        num_reports = re.search('(\d+)$', report_stamp.text).group(1)
        num_reports = int(num_reports)

        try:
            # see if this item has already been auto-reapproved
            entry = (AutoReapproval.query.filter(
                        and_(AutoReapproval.subreddit_id == subreddit.id,
                             AutoReapproval.permalink == permalink))
                        .one())
            in_db = True
        except NoResultFound:
            entry = AutoReapproval()
            entry.subreddit_id = subreddit.id
            entry.permalink = permalink
            entry.original_approver = (re.search('approved by (.+)$',
                                                 approved_item['title'])
                                       .group(1))
            entry.total_reports = 0
            entry.first_approval_time = datetime.utcnow()
            in_db = False

        if (in_db or
                approved_item['title'].lower() != \
                'approved by '+cfg_file.get('reddit', 'username').lower()):
            sub = r.get_submission(permalink)
            sub.approve()
            entry.total_reports += num_reports
            entry.last_approval_time = datetime.utcnow()

            db.session.add(entry)
            db.session.commit()
            logging.info('    Re-approved %s', entry.permalink)
Example #6
0
def manage_reward(request, key):
	form = None
	riddle_form = None
	condition_form = None
	
	try:
		#loading existing reward
		reward = Reward.objects.get(key=key)
	except Reward.DoesNotExist:
		#creating new reward, initialize variables
		reward = Reward()
		reward.key = key
	
	riddle = reward.riddle_set.all()
	if riddle.count() == 0:
		riddle = Riddle()
	else:
		riddle = riddle[0]
	
	condition = reward.condition_set.all()
	if condition.count() == 0:
		condition = Condition()
	else:
		condition = condition[0]

	if request.method == 'POST':
		form = RewardManageForm(instance=reward, data=request.POST)
		if form.is_valid():
			reward = form.save()
			blob_infos = get_blobinfo_from_post(request)
			for blob_info in blob_infos:
				#print "blobkey: " + str(blob_info.key())
				image = Image()
				image.blob_key = str(blob_info.key())
				image.reward = reward
				image.save()
		riddle.reward = reward
		riddle_form = RiddleManageForm(instance=riddle, data=request.POST) 
		if riddle_form.is_valid():
			riddle_form.save()
		condition.reward = reward
		condition_form = ConditionManageForm(instance=condition, data=request.POST) 
		if condition_form.is_valid():
			condition_form.save()
		
	images = list(reward.image_set.all())
	images.append(Image())
	
	if form is None:
		form = RewardManageForm(instance=reward)
	
	image_forms = []
	for image in images:
		image_forms.append(ImageManageForm(instance=image))
	
	if riddle_form is None:
		riddle_form = RiddleManageForm(instance=riddle)
	
	if condition_form is None:
		condition_form = ConditionManageForm(instance=condition)

	url = reverse('manage_reward', kwargs={'key': key})
	upload_url = blobstore.create_upload_url(url)

	return render_to_response('reward/manage.html', {'upload_url': upload_url, 'form': form, 'reward': reward, 'image_forms':image_forms, 'riddle_form':riddle_form, 'condition_form':condition_form }, context_instance=RequestContext(request))
Example #7
0
def refreshDBwithFHIR(request):
    #get json from dir
    with open("hit_server/FHIRJsonResponse.json") as data_file:
        data = json.load(data_file)

    for p in data.keys():
        print p, data[p]["Contact Info"]["first_name"], data[p][
            "Contact Info"]["last_name"]
        patientobj = PatientInfo()  # create a patient object.
        patientobj.pid = p
        patientobj.first_name = data[p]["Contact Info"]["first_name"]
        patientobj.last_name = data[p]["Contact Info"]["last_name"]
        patientobj.save()

        #first add all conditions to patient?

        all_conditions = data[p]["Conditions"].keys()
        for con in all_conditions:
            conditionobj = Condition()
            conditionobj.condition_name = data[p]["Conditions"][con]["name"]
            conditionobj.onset_date = data[p]["Conditions"][con]["onset_date"]
            conditionobj.condition_code = data[p]["Conditions"][con]["code"]
            conditionobj.condition_desc = data[p]["Conditions"][con]["text"]
            conditionobj.condition_for_patients = patientobj  # how to use related object

            conditionobj.save()

        all_medications = data[p]["Medications"].keys()

        if len(all_medications) == 0:
            pass

        else:
            for meds in all_medications:
                medicationobj = Medication()
                medicationobj.med_status = data[p]["Medications"][meds][
                    "status"]
                medicationobj.med_name = data[p]["Medications"][meds]["name"]
                medicationobj.med_code = data[p]["Medications"][meds]["code"]
                medicationobj.med_dosage_value = data[p]["Medications"][meds][
                    "dosage_value"]
                medicationobj.med_dosage_text = data[p]["Medications"][meds][
                    "dosage_text"]
                medicationobj.med_dosage_units = data[p]["Medications"][meds][
                    "dosage_units"]
                medicationobj.med_date_written = data[p]["Medications"][meds][
                    "date_written"]
                medicationobj.med_code_system = data[p]["Medications"][meds][
                    "code_system"]

                medicationobj.medications_for_patients = patientobj  # how to use related object

                medicationobj.save()

        all_observations = data[p]["Observations"].keys()
        for obs in all_observations:
            observationobj = Observation()
            observationobj.obs_name = data[p]["Observations"][obs]["name"]
            observationobj.obs_code = data[p]["Observations"][obs]["code"]
            observationobj.obs_desc = data[p]["Observations"][obs]["text"]

            check_existance_of_value = data[p]["Observations"][obs].keys()
            if "value" in check_existance_of_value:
                observationobj.obs_value = data[p]["Observations"][obs][
                    "value"]
            else:
                observationobj.obs_value = 0.0

            if "units" in check_existance_of_value:
                observationobj.obs_units = data[p]["Observations"][obs][
                    "units"]
            else:
                observationobj.obs_units = "NULL"

            observationobj.obs_date = data[p]["Observations"][obs]["date_time"]

            observationobj.obs_for_patients = patientobj  # how to use related object

            observationobj.save()

    return HttpResponse()
    '''
Example #8
0
def refreshDBwithFHIR(request):
	#get json from dir
	with open("hit_server/FHIRJsonResponse.json") as data_file:
		data = json.load(data_file)

	for p in data.keys():
		print p, data[p]["Contact Info"]["first_name"], data[p]["Contact Info"]["last_name"]
		patientobj = PatientInfo()  			# create a patient object.
		patientobj.pid = p
		patientobj.first_name = data[p]["Contact Info"]["first_name"]
		patientobj.last_name = data[p]["Contact Info"]["last_name"]
		patientobj.save()

		#first add all conditions to patient?

		all_conditions = data[p]["Conditions"].keys()
		for con in all_conditions:
			conditionobj = Condition()
			conditionobj.condition_name = data[p]["Conditions"][con]["name"]
			conditionobj.onset_date = data[p]["Conditions"][con]["onset_date"]
			conditionobj.condition_code = data[p]["Conditions"][con]["code"]
			conditionobj.condition_desc = data[p]["Conditions"][con]["text"]
			conditionobj.condition_for_patients = patientobj   # how to use related object

			conditionobj.save()

		all_medications = data[p]["Medications"].keys()

		if len(all_medications) == 0:
			pass

		else:
			for meds in all_medications:
				medicationobj = Medication()
				medicationobj.med_status = data[p]["Medications"][meds]["status"]
				medicationobj.med_name = data[p]["Medications"][meds]["name"]
				medicationobj.med_code = data[p]["Medications"][meds]["code"]
				medicationobj.med_dosage_value = data[p]["Medications"][meds]["dosage_value"]
				medicationobj.med_dosage_text = data[p]["Medications"][meds]["dosage_text"]
				medicationobj.med_dosage_units = data[p]["Medications"][meds]["dosage_units"]
				medicationobj.med_date_written = data[p]["Medications"][meds]["date_written"]
				medicationobj.med_code_system = data[p]["Medications"][meds]["code_system"]


				medicationobj.medications_for_patients = patientobj   # how to use related object

				medicationobj.save()


		all_observations = data[p]["Observations"].keys()
		for obs in all_observations:
			observationobj = Observation()
			observationobj.obs_name = data[p]["Observations"][obs]["name"]
			observationobj.obs_code = data[p]["Observations"][obs]["code"]
			observationobj.obs_desc = data[p]["Observations"][obs]["text"]

			check_existance_of_value = data[p]["Observations"][obs].keys()
			if "value" in check_existance_of_value:
				observationobj.obs_value = data[p]["Observations"][obs]["value"]
			else:
				observationobj.obs_value = 0.0

			if "units" in check_existance_of_value:
				observationobj.obs_units = data[p]["Observations"][obs]["units"]
			else:
				observationobj.obs_units = "NULL"


			observationobj.obs_date = data[p]["Observations"][obs]["date_time"]

			observationobj.obs_for_patients = patientobj   # how to use related object

			observationobj.save()

	return HttpResponse()

	'''