Beispiel #1
0
    def __generate_token(self):

        payload = {
            'iat': datetime.utcnow(),
            'exp': datetime.utcnow() + timedelta(minutes=5),
            'iss': settings.GITHUB_APP_KEY,
        }

        return jwt.encode(payload,
                          settings.GITHUB_APP_SECRET,
                          algorithm='RS256')
Beispiel #2
0
def org_update(request, id):
    org = get_object_or_404(Orgs, id=id)
    if request.user.is_authenticated and request.user.is_superuser:
        if request.method == 'POST':
            form = NewOrgForm(request.POST or None, instance=org)
            if form.is_valid():
                inst = form.save(commit=False)
                inst.updated_at = datetime.utcnow()
                inst.save()

                messages.success(
                    request, 'The organisation has been updated succesfuly')
                return redirect(org)
            else:
                messages.error(request, 'The form is not valide')
        else:
            form = NewOrgForm(instance=org)
    else:
        messages.error(request, "You Don't have the permissions for this page")
        return redirect('home')

    context = {
        'org': org,
        'form': form,
    }
    return render(request, 'map_app/org/org_update.html', context)
Beispiel #3
0
def finance_perso_detail(request, pk):
    perso = get_object_or_404(PersFundingOpp, id=pk)
    persos = PersFundingOpp.objects.filter(
        publish=True).order_by('-created_at')

    share_string = quote_plus(perso.funding_description)

    if request.method == 'POST':
        form = PersoFundConfirmForm(request.POST or None, instance=perso)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request,
                             _('لقد تم تغيير حالة فرصة التمويل بنجاح'))
            return redirect(perso)
    else:
        form = PersoFundConfirmForm(instance=perso)

    context = {
        'perso': perso,
        'persos': persos,
        'form': form,
        'share_string': share_string,
    }
    return render(request, 'orgs/funding_opport/pers/detail.html', context)
Beispiel #4
0
def generate_access_token(pem_id_key, iss='atmosphere',
                          scope='groups search', sub=None):
    if not pem_id_key:
        raise Exception("Private key missing. "
                        "Key is required for JWT signature")
    # 1. Create and encode JWT (using our pem key)
    kwargs = {'iss': iss,
              'scope': scope}
    if sub:
        kwargs['sub'] = sub
    jwt_object = jwt.create(**kwargs)
    encoded_sig = jwt.encode(jwt_object, pem_id_key)

    # 2. Pass JWT to gables and return access_token
    # If theres a 'redirect_uri' then redirect the user
    response = requests\
        .post("%s/o/oauth2/token" % secrets.GROUPY_SERVER,
              data={
                  'assertion': encoded_sig,
                  'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer'
              })
    if response.status_code != 200:
        raise Exception("Failed to generate auth token. Response:%s"
                        % response.__dict__)
    json_obj = response.json()
    access_token, expires_in = json_obj['access_token'], json_obj['expires_in']
    expires = datetime.utcnow() + timedelta(seconds=expires_in)
    return access_token, expires
Beispiel #5
0
def UserEditView(request):
    user = request.user
    if request.method == 'POST':
        form = EditProfileForm(request.POST or None, instance=user)
        form_profile = ProfileUpdateForm(request.POST or None,
                                         request.FILES or None,
                                         instance=user.profile)
        if form.is_valid() and form_profile.is_valid():
            form.save()

            pic = form_profile.save(commit=False)
            pic.updated_at = datetime.utcnow()
            pic.save()

            messages.success(
                request, ('you have been updated your profile in successfuly'))

            return redirect('home')
    else:
        form = EditProfileForm(instance=user)
        form_profile = ProfileUpdateForm(instance=user.profile)

    context = {
        'form': form,
        'form_profile': form_profile,
    }
    return render(request, 'registration/edit_profile.html', context)
Beispiel #6
0
def dev_edit(request, devs_id):
    devs = get_object_or_404(DevOrgOpp, id=devs_id)

    if request.method == 'POST':
        form = DevForm(request.POST or None,
                       files=request.FILES, instance=devs)
        if form.is_valid():
            org_name = form.cleaned_data.get('org_name')
            name_dev = form.cleaned_data.get('name_devv')

            inst = form.save(commit=False)
            if org_name or name_dev:
                inst.updated_at = datetime.utcnow()
                inst.save()

                messages.success(request, _(
                    'لقد تم تعديل دليل التطوير بنجاح'))
                return redirect(devs)

            else:
                messages.error(request, _(
                    'رجاءً أدخل اسم المنظمة او اسم الجهة المانحة'))

    else:
        form = DevForm(instance=devs)

    context = {
        'devs': devs,
        'form': form,
    }
    return render(request, 'orgs/devs/org_edit_dev.html', context)
def research_detail(request, research_id):
    research = get_object_or_404(OrgResearch, id=research_id)
    researchs = OrgResearch.objects.filter(
        publish=True).order_by('-created_at')

    share_string = quote_plus(research.title)

    if request.method == 'POST':
        form = ResearchConfirmForm(request.POST or None,
                                   files=request.FILES, instance=research)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request, _(
                'لقد تم تعديل حالة البحث بنجاح'))
            return redirect(research)

    else:
        form = ResearchConfirmForm(instance=research)

    context = {
        'research': research,
        'form': form,
        'share_string': share_string,
        'researchs': researchs,
    }
    return render(request, 'orgs/research/detail_research.html', context)
def media_detail(request, media_id):
    media = get_object_or_404(OrgMedia, id=media_id)
    share_string = quote_plus(media.title)
    medias = OrgMedia.objects.filter(publish=True).order_by('-created_at')

    if request.method == 'POST':
        form = MediaConfirmForm(request.POST or None,
                                files=request.FILES, instance=media)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request, _(
                'لقد تم تعديل حالة المحتوى بنجاح'))
            return redirect(media)

    else:
        form = MediaConfirmForm(instance=media)

    context = {
        'media': media,
        'form': form,
        'share_string': share_string,
        'medias': medias,
    }
    return render(request, 'orgs/media/media_detail.html', context)
def edit_media(request, media_id):
    media = get_object_or_404(OrgMedia, id=media_id)

    if request.method == 'POST':
        form = MediaForm(request.POST or None,
                         files=request.FILES, instance=media)
        if form.is_valid():
            at = form.save(commit=False)
            at.updated = datetime.utcnow()
            prof_user = OrgProfile.objects.filter(user=request.user)
            org_name = form.cleaned_data.get('org_name')
            if org_name:
                at.org_name = org_name
            else:
                at.org_name = prof_user.first()
            at.save()

            messages.success(request, _(
                'لقد تم تعديل المحتوى بنجاح'))
            return redirect(media)

    else:
        form = MediaForm(instance=media)

    context = {
        'media': media,
        'form': form,
    }
    return render(request, 'orgs/media/edit_media.html', context)
Beispiel #10
0
def devs_detail(request, devs_id):
    dev = get_object_or_404(DevOrgOpp, id=devs_id)
    devs = DevOrgOpp.objects.filter(publish=True).order_by('-created_at')

    share_string = quote_plus(dev.dev_description)

    if request.method == 'POST':
        form = DevConfirmForm(request.POST or None, instance=dev)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request, _(
                'لقد تم تغيير حالة دليل تطوير بنجاح'))
            return redirect(dev)
    else:
        form = DevConfirmForm(instance=dev)

    context = {
        'dev': dev,
        'devs': devs,
        'form': form,
        'share_string': share_string,
    }
    return render(request, 'orgs/devs/org_dev_details.html', context)
Beispiel #11
0
def capacity_detail(request, capacity_id):
    capacity = get_object_or_404(OrgCapacityOpp, id=capacity_id)
    capacites = OrgCapacityOpp.objects.filter(
        publish=True).order_by('-created_at')
    share_string = quote_plus(capacity.capacity_description)

    if request.method == 'POST':
        form = CapacityConfirmForm(request.POST or None, instance=capacity)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request, _(
                'لقد تم تغيير حالة فرصة بناء القدرات  بنجاح'))
            return redirect(capacity)
    else:
        form = CapacityConfirmForm(instance=capacity)

    context = {
        'capacity': capacity,
        'capacites': capacites,
        'form': form,
        'share_string': share_string,
    }
    return render(request, 'orgs/capacity/org_capacity_details.html', context)
Beispiel #12
0
def capacity_edit(request, capacity_id):
    capacity = get_object_or_404(OrgCapacityOpp, id=capacity_id)

    if request.method == 'POST':
        form = CapacityForm(request.POST or None,
                            files=request.FILES, instance=capacity)
        if form.is_valid():
            at = form.save(commit=False)
            at.updated_at = datetime.utcnow()
            # if capacity.publish == True:
            #     at.publish = True
            at.save()

            messages.success(request, _(
                'لقد تم تعديل فرصة بناء القدرات بنجاح'))

            return redirect(capacity)
        else:
            messages.error(request, 'the form is not valide')
    else:
        form = CapacityForm(instance=capacity)

    context = {
        'capacity': capacity,
        'form': form,
    }
    return render(request, 'orgs/capacity/org_edit_capacity.html', context)
Beispiel #13
0
def orgs_rapport_detail(request, rapport_id):
    rapport = get_object_or_404(OrgRapport, id=rapport_id)
    share_string = quote_plus(rapport.title)
    rapports = OrgRapport.objects.filter(publish=True).order_by('-created_at')

    if request.method == 'POST':
        form = RapportConfirmForm(request.POST or None,
                                  files=request.FILES,
                                  instance=rapport)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request, _('لقد تم تعديل حالة التقرير بنجاح'))
            return redirect(rapport)
    else:
        form = RapportConfirmForm(instance=rapport)

    context = {
        'rapport': rapport,
        'form': form,
        'share_string': share_string,
        'rapports': rapports,
    }
    return render(request, 'orgs/rapport/detail_rapport.html', context)
Beispiel #14
0
def edit_rapport(request, rapport_id):
    rapport = get_object_or_404(OrgRapport, id=rapport_id)

    if request.method == 'POST':
        form = RapportForm(request.POST or None,
                           files=request.FILES,
                           instance=rapport)
        if form.is_valid():
            user = form.save(commit=False)
            user.updated_at = datetime.utcnow()
            prof_user = OrgProfile.objects.filter(user=request.user)
            org_name = form.cleaned_data.get('org_name')
            if org_name:
                user.org_name = org_name
            else:
                user.org_name = prof_user.first()
            user.save()

            messages.success(request, _('لقد تمت تعديل التقرير بنجاح'))

            return redirect(rapport)
    else:
        form = RapportForm(instance=rapport)

    context = {
        "rapport": rapport,
        "form": form,
    }
    return render(request, 'orgs/rapport/edit_rapport.html', context)
Beispiel #15
0
def profile(request):
    if request.user.is_staff:
        return redirect("staff_admin:index")
    quizTakers = QuizTakers.objects.filter(user=request.user).all()
    past = []
    current = []
    upcoming = []
    for quizTaker in quizTakers:
        if quizTaker.was_missed:
            past.append(quizTaker)
            continue
        if quizTaker.has_ended:
            past.append(quizTaker)
            continue
        if not quizTaker.quiz.has_started:
            upcoming.append(quizTaker)
            continue
        current.append(quizTaker)
    curDateTime = datetime.utcnow().replace(tzinfo=pytz.UTC)
    past.sort(key=lambda q: abs(curDateTime - q.quiz.start_date))
    current.sort(key=lambda q: abs(curDateTime - q.quiz.start_date))
    upcoming.sort(key=lambda q: abs(curDateTime - q.quiz.start_date))
    context = {
        "past": past,
        "current": current,
        "upcoming": upcoming,
    }
    return render(request, "registration/profile.html", context)
Beispiel #16
0
def news_edit(request, news_id):
    new = get_object_or_404(OrgNews, id=news_id)

    if request.method == 'POST':
        form = NewsForm(request.POST or None,
                        files=request.FILES,
                        instance=new)
        if form.is_valid():
            at = form.save(commit=False)
            at.updated_at = datetime.utcnow()
            prof_user = OrgProfile.objects.filter(user=request.user)
            org_name = form.cleaned_data.get('org_name')
            if org_name:
                at.org_name = org_name
            else:
                at.org_name = prof_user.first()
            at.save()

            messages.success(request, _('لقد تم تعديل الخبر بنجاح'))
            return redirect(new)
    else:
        form = NewsForm(instance=new)

    context = {
        'new': new,
        'form': form,
    }
    return render(request, 'orgs/news/org_edit_news.html', context)
Beispiel #17
0
def verify_sensor_id_unique(instance, *args, **kwargs):
    """
    Checks that for a given sensor id only one instance is currently active
    :param instance:
    :param args:
    :param kwargs:
    :return:
    """
    # verify that there is a room for this sensor id
    sensor_id = instance.sensor_id

    now = datetime.utcnow().replace(tzinfo=utc)

    mapping = SensorIdToSensorMapping.objects.filter(
        sensor_id=sensor_id, ).filter(
            Q(start_date__lte=now, end_date__gte=now)
            | Q(start_date__lte=now, end_date__isnull=True)).exclude(
                # exclude current id
                id=instance.id)

    if mapping.exists():
        raise ValidationError({
            "sensor_id":
            ValidationError(
                _("There is already an active record for the given sensor id"))
        })
Beispiel #18
0
def particip_detail(request, par_id):
    org = get_object_or_404(OrgProfile, id=par_id)

    if request.method == 'POST':
        form = OrgConfirmForm(request.POST or None, instance=org)
        if form.is_valid():
            pub = form.save(commit=False)
            pub.published_at = datetime.utcnow()
            pub.save()

            messages.success(request,
                             _('لقد تم تغيير حالة الطلب للمنظمة بنجاح'))

            # org_status = form.cleaned_data.get('publish')
            # if org_status == 'True':
            #     messages.success(request, _(
            #         'لقد تم قبول طلب تسجيل المنظمة بنجاح'))
            # if org_status == 'False':
            #     messages.info(request, _(
            #         'لقد تم رفض طلب تسجيل المنظمة بنجاح'))

            return redirect('guide')
    else:
        form = OrgConfirmForm(instance=org)

    context = {
        'org': org,
        'form': form,
    }
    return render(request, 'profiles/particip_detail.html', context)
Beispiel #19
0
def funding_detail(request, funding_id):
    funding = get_object_or_404(OrgFundingOpp, id=funding_id)
    fundings = OrgFundingOpp.objects.filter(
        publish=True).order_by('-created_at')

    share_string = quote_plus(funding.funding_org_description)

    if request.method == 'POST':
        form = FundingConfirmForm(request.POST or None, instance=funding)
        if form.is_valid():
            at = form.save(commit=False)
            at.published_at = datetime.utcnow()
            at.save()

            messages.success(request, _('لقد تم تغيير حالة المنحة  بنجاح'))
            return redirect(funding)
    else:
        form = FundingConfirmForm(instance=funding)

    context = {
        'funding': funding,
        'form': form,
        'fundings': fundings,
        'share_string': share_string,
    }
    return render(request, 'orgs/funding_opport/orgs/org_funding_details.html',
                  context)
Beispiel #20
0
def generate_access_token(pem_id_key, iss='atmosphere',
                          scope='groups search', sub=None):
    if not pem_id_key:
        raise Exception("Private key missing. "
                        "Key is required for JWT signature")
    #1. Create and encode JWT (using our pem key)
    kwargs = {'iss': iss,
              'scope': scope}
    if sub:
        kwargs['sub'] = sub
    jwt_object = jwt.create(**kwargs)
    encoded_sig = jwt.encode(jwt_object, pem_id_key)

    #2. Pass JWT to gables and return access_token
    #If theres a 'redirect_uri' then redirect the user
    response = requests\
        .post("%s/o/oauth2/token" % secrets.GROUPY_SERVER,
              data={
                  'assertion': encoded_sig,
                  'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer'
                  })
    if response.status_code != 200:
        raise Exception("Failed to generate auth token. Response:%s"
                        % response.__dict__)
    json_obj = response.json()
    access_token, expires_in = json_obj['access_token'], json_obj['expires_in']
    expires = datetime.utcnow() + timedelta(seconds=expires_in)
    return access_token, expires
Beispiel #21
0
class Assignment(models.Model):
    title = models.CharField(max_length=300)
    description = models.TextField()
    date_added = models.DateTimeField(default=datetime.utcnow())

    def __str__(self):
        return self.title
Beispiel #22
0
def generate_token(key, user):
    payload = {
        'key': _hash_key(key),
        'exp': datetime.utcnow() + timedelta(minutes=getattr(settings, 'JWT_VALIDITY_TIME', 60)),
        'email': user.email,
    }

    return jwt.encode(payload, settings.JWT_SECRET, algorithm='HS256')
Beispiel #23
0
    def test_outings(self):
        self.helper_template(reverse('outings.index'), 'outing/index.html')
        self.helper_template(reverse('outings.create'), 'outing/create.html')

        current_time = datetime.utcnow().replace(tzinfo=utc)
        outing = Outing.objects.create(user=self.user, beginning=current_time,
                                       ending=current_time, alert=current_time,
                                       latitude=1, longitude=1)
        self.helper_template(reverse('outings.update', args=[outing.pk]), 'outing/create.html')
Beispiel #24
0
def timedelta(value):
    if not value:
        return ''

    now = datetime.utcnow().replace(tzinfo=utc)
    if value > now:
        return _("in %s") % timesince(now, value)
    else:
        return timesince(value, now)
Beispiel #25
0

        
Beispiel #26
0
def register_reminder(**kwargs):
    issue = kwargs['issue']
    remind_info = kwargs['remind_info']
    author = kwargs['author']
    scheduled = datetime.utcnow() + timedelta(**{remind_info[1]: remind_info[0]})
    timedelta()
    Remind.objects.update_or_create(author=author, issue=issue, defaults={
        'scheduled': scheduled.astimezone(),
        'is_reminded': False
    })
Beispiel #27
0
def weekly(request):
    fin_list = []
    curr_year = datetime.utcnow().strftime("%Y")
    curr_mon = datetime.utcnow().strftime("%m")
    curr_day = datetime.utcnow().strftime("%A")
    curr_date1 = datetime.utcnow().strftime("%d")

    for t in range(int(curr_date1) - 7, int(curr_date1)):
        queryset = PeopleCount.objects.filter(in_time__year=curr_year).filter(
            in_time__month=curr_mon).filter(in_time__day=t)
        in_day_count_list = [q.in_count for q in queryset]
        in_day_count_summed = sum(in_day_count_list)
        fin_list.append(in_day_count_summed)
        print(fin_list)

    x = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat']
    y = fin_list
    my_context = {"label": x, "dataval": y}
    return render(request, 'polls/weekly.html', my_context)
Beispiel #28
0
def get_access_token(user):
    """
    Takes a user instance and return an access_token as a JsonResponse instance.
    """
    app = Application.objects.get(name="Fabler")

    # We delete the old access_token and refresh_token
    try:
        old_access_token = AccessToken.objects.get(
            user=user, application=app)
        old_refresh_token = RefreshToken.objects.get(
            user=user, access_token=old_access_token
        )
    except:
        try:
            old_access_tokens = AccessToken.objects.all().filter(user=user, application=app)
            old_refresh_tokens = RefreshToken.objects.all().filter(user=user, access_token=old_access_tokens)
        except:
            # Something's wrong if we get here
            pass
        else:
            old_access_tokens.delete()
            old_refresh_tokens.delete()
    else:
        timenow = datetime.utcnow().replace(tzinfo=pytz.utc)
        if timenow < old_access_token.expires:
            return get_token_json(old_access_token)
        old_access_token.delete()
        old_refresh_token.delete()

    # we generate an access token
    token = generate_token()
    # we generate a refresh token
    refresh_token = generate_token()

    expires = now() + timedelta(seconds=oauth2_settings.ACCESS_TOKEN_EXPIRE_SECONDS)
    scope = "read write"

    # we create the access token
    access_token = AccessToken.objects. \
        create(user=user,
               application=app,
               expires=expires,
               token=token,
               scope=scope)

    # we create the refresh token
    RefreshToken.objects. \
        create(user=user,
               application=app,
               token=refresh_token,
               access_token=access_token)

    # we call get_token_json and returns the access token as json
    return get_token_json(access_token)
Beispiel #29
0
def index(request):
    now = datetime.utcnow().replace(tzinfo=utc)

    outing_count = Outing.objects.count()
    outing_late_count = Outing.objects.filter(status=CONFIRMED, ending__lt=now).count()

    user_count = User.objects.count()
    return render(request, 'RandoAmisSecours/reporting/index.html',
                  {'outing_count': outing_count,
                   'outing_late_count': outing_late_count,
                   'user_count': user_count})
Beispiel #30
0
def charts(request):
    # Filter the topic if requested
    topic_prefix = request.GET.get("topic", None)
    base_query = Message.objects.all()
    if topic_prefix is not None:
        base_query = Message.objects.filter(topic__startswith=topic_prefix)

    # Messages for the last day, hour-by-hour
    now = datetime.utcnow().replace(tzinfo=utc)
    messages_by_hours = []
    now_hours = datetime(now.year, now.month, now.day, now.hour, tzinfo=utc)
    for hour in range(23, 0, -1):
        dt_begin = now_hours - timedelta(hours=hour)
        dt_end = now_hours - timedelta(hours=(hour - 1))
        count = base_query.filter(datetime__range=(dt_begin, dt_end)).count()
        messages_by_hours.append(("%dh" % dt_begin.hour, count))
    # Get the last interval (now_hours to now)
    count = base_query.filter(datetime__range=(now_hours, now)).count()
    messages_by_hours.append(('now', count))

    # Messages for the last month, day-by-day
    now = datetime.utcnow().replace(tzinfo=utc)
    messages_by_days = []
    now_days = datetime(now.year, now.month, now.day, tzinfo=utc)
    for day in range(30, 0, -1):
        dt_begin = now_days - timedelta(days=day)
        dt_end = now_days - timedelta(days=(day - 1))
        count = base_query.filter(datetime__range=(dt_begin, dt_end)).count()
        messages_by_days.append((dt_begin.strftime('%b %d'), count))
    count = base_query.filter(datetime__range=(now_days, now)).count()
    messages_by_days.append(('today', count))

    # List of topics
    topics = base_query.filter(datetime__gt=(now - timedelta(days=30)))
    topics = topics.values('topic').annotate(count=Count('topic'))
    topics = topics.order_by('topic')

    return render(request, "ReactOWeb/charts.html",
                  {"messages_by_hours": messages_by_hours,
                   "messages_by_days": messages_by_days,
                   "topics": topics})
Beispiel #31
0
def auto_set_assigned_sensor_based_on_mapping(instance, sender, raw, *args,
                                              **kwargs):
    """
    For each class that inherits from AbstractDataEntry we need to set the real_sensor based on the sensor id mapping
    :param instance:
    :param sender:
    :param args:
    :param kwargs:
    :return:
    """
    if raw:
        return

    from tempBerry.smarthome.models import AbstractDataEntry

    if not isinstance(instance, AbstractDataEntry):
        # not a subclass of AbstractDataEntry - ignore it
        return

    if instance.real_sensor_id:
        # real sensor id is already set - no need to continue here
        return

    # verify that there is a mapping for this sensor id for the current time
    sensor_id = instance.sensor_id

    now = datetime.utcnow().replace(tzinfo=utc)

    # try to get a real_sensor for the given sensor id, where start_date <= now() <= end_date
    mapping = SensorIdToSensorMapping.objects.filter(
        sensor_id=sensor_id, ).filter(
            Q(start_date__lte=now, end_date__gte=now)
            | Q(start_date__lte=now, end_date__isnull=True))

    if len(mapping) == 1:
        # perfect match
        mapping = mapping.first()

        # set instances real sensor id based on the mapping
        instance.real_sensor_id = mapping.real_sensor_id
        instance.room_id = mapping.real_sensor.room_id

        # no need to call .save() here, as we are still within the pre_save phase

    elif len(mapping) > 1:
        # multiple matches, this is not good
        logger.error(
            "Found multiple sensor id mappings for sensor id {}".format(
                sensor_id))
        return
    else:  # len = 0
        # no match, doesnt matter -> this is either false sensor data or something else went wrong
        pass
Beispiel #32
0
def daily(request):
    fin_list = []
    curr_year = datetime.utcnow().strftime("%Y")
    curr_mon = datetime.utcnow().strftime("%m")
    curr_date1 = datetime.utcnow().strftime("%d")
    curr_date = datetime.utcnow().strftime("%Y%m%d")
    curr_day = datetime.utcnow()
    curr_day2 = datetime.utcnow().strftime("%A")
    print(curr_date, curr_year, curr_mon, curr_date1, curr_day, curr_day2)

    for t in range(10, 22):
        queryset = PeopleCount.objects.filter(in_time__year=curr_year).filter(
            in_time__month=curr_mon).filter(in_time__day=curr_date1).filter(
                in_time__hour=t)
        in_count_hourly_list = [q.in_count for q in queryset]
        in_count_summed = sum(in_count_hourly_list)
        fin_list.append(in_count_summed)

    x = [
        '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00',
        '18:00', '19:00', '20:00', '21:00', '22:00'
    ]
    y = fin_list
    my_context = {"label": x, "dataval": y}
    return render(request, 'polls/chart.html', my_context)
Beispiel #33
0
def index(request):
    now = datetime.utcnow().replace(tzinfo=utc)

    outing_count = Outing.objects.count()
    outing_late_count = Outing.objects.filter(status=CONFIRMED,
                                              ending__lt=now).count()

    user_count = User.objects.count()
    return render(
        request, 'RandoAmisSecours/reporting/index.html', {
            'outing_count': outing_count,
            'outing_late_count': outing_late_count,
            'user_count': user_count
        })
Beispiel #34
0

        
Beispiel #35
0
    def setUp(self):
        self.client = Client()
        self.user = User.objects.create_user('azertyuiop',
                                             '*****@*****.**',
                                             '12789azertyuiop')
        self.user.profile = Profile.objects.create(user=self.user, timezone='Europe/Paris', language='fr')
        self.user2 = User.objects.create_user('zarterzh',
                                             '*****@*****.**',
                                             'help')
        self.user2.profile = Profile.objects.create(user=self.user2, timezone='Europe/London', language='en')

        current_time = datetime.utcnow().replace(tzinfo=utc)
        self.outing = Outing.objects.create(user=self.user, beginning=current_time,
                                            ending=current_time, alert=current_time,
                                            latitude=1, longitude=1)
Beispiel #36
0
 def getPercents(self):
     current_time = datetime.utcnow().replace(tzinfo=utc)
     # now < begin < end < alert
     if current_time < self.beginning:
         return (0, 0, 0)
     # begin < end < alert < now
     elif self.alert < current_time:
         return (0, 0, 100)
     # begin < now < end < alert
     elif current_time < self.ending:
         return (((current_time - self.beginning).total_seconds()) / float((self.alert - self.beginning).total_seconds()) * 100, 0, 0)
     # begin < end < now < alert
     else:
         assert(current_time < self.alert)
         return (((self.ending - self.beginning).total_seconds()) / float((self.alert - self.beginning).total_seconds()) * 100,
                 ((current_time - self.ending).total_seconds()) / float((self.alert - self.beginning).total_seconds()) * 100,
                 0)
Beispiel #37
0
    def authenticate_token(self, request):
        try:
            token = Token.objects.get(key=request.POST['token'])
        except Token.DoesNotExist:
            return Response({"message": "Invalid token"}, status=400)

        if not token.user.is_active:
            return Response({"message": "User inactive"}, status=404)

        # This is required for the time comparison
        utc_now = datetime.utcnow()
        utc_now = utc_now.replace(tzinfo=utc)

        if token.created < utc_now - timedelta(days=7):
            return Response({"message": "Token expired"}, status=402)

        return Response({"message": "success"}, status=200)
Beispiel #38
0
    def test_outings(self):
        self.helper_template(reverse('outings.index'), 'outing/index.html')
        self.helper_template(reverse('outings.create'), 'outing/create.html')

        current_time = datetime.utcnow().replace(tzinfo=utc)
        outing = Outing.objects.create(user=self.user,
                                       beginning=current_time,
                                       ending=current_time,
                                       alert=current_time,
                                       latitude=1,
                                       longitude=1)
        self.helper_template(reverse('outings.update', args=[outing.pk]),
                             'outing/create.html')
        self.helper_template(reverse('outings.details', args=[outing.pk]),
                             'outing/details.html')
        self.helper_template(
            reverse('outings.details.trace', args=[outing.pk]),
            'outing/details_trace.html')
Beispiel #39
0
 def clean_old_files(self, purge, override_ttl=None):
     """
     Remove old artifacts by comparing to the TTL
     When purge is True, remove also permanent artifacts
     """
     # Use the TTL passed as argument if not empty
     ttl = override_ttl if override_ttl is not None else self.ttl
     ttl = max(ttl, 0)
     # A negative TTL mean that we should not remove old files
     # Except when purge is True (we will remove everything)
     if ttl == 0 and not purge:
         return
     now = datetime.utcnow().replace(tzinfo=utc)
     older_than = now - timedelta(days=ttl)
     query = self.artifact_set.filter(created_at__lt=older_than)
     # Also remove permanent artifacts
     if not purge:
         query = query.exclude(is_permanent=True)
     query.delete()
def parse_date(grej, typ):
    grej = unicode(grej)
    tz = timezone(get_config('TIME_ZONE', None))
    hoj = datetime.utcnow().replace(tzinfo=tz)
    if grej.find('dag') != -1:
        days = numerics(grej)
        if typ == '+':
            ret = hoj + timedelta(days=days)
        else:
            ret = hoj - timedelta(days=days)
    elif grej.find('tim') != -1:
        hours = numerics(grej)
        if typ == '+':
            ret = hoj + timedelta(hours=hours)
        else:
            ret = hoj - timedelta(hours=hours)
    else:
        return hoj

    return ret
Beispiel #41
0
    def handle(self, *args, **kwargs):
        if kwargs.get('base_url', None) is None:
            raise CommandError('url option is required')

        self.stdout.write("Listing alerting outings")
        self.stdout.write("Interval %d" % (kwargs['interval']))

        now = datetime.utcnow().replace(tzinfo=utc)
        outings = Outing.objects.filter(status=CONFIRMED, ending__lt=now)

        for outing in outings:
            self.stdout.write(" - %s" % (outing.name))
            # Late outings
            if outing.ending <= now and now < outing.alert:
                minutes = (now - outing.alert).seconds / 60.0
                minutes = minutes % kwargs['alert']

                if 0 <= minutes and minutes < kwargs['interval']:
                    self.stdout.write("Sending mail to owner")
                    # send a mail to the user, translated into the right language
                    send_localized_mail(outing.user, _('[R.A.S] Alert'),
                                        'RandoAmisSecours/alert/late.html',
                                        {'URL': "%s%s" % (kwargs['base_url'], reverse('outings.details', args=[outing.pk])),
                                         'SAFE_URL': "%s%s" % (kwargs['base_url'], reverse('outings.finish', args=[outing.pk]))})

            # Alerting outings
            elif outing.alert <= now:
                minutes = (now - outing.alert).seconds / 60.0
                minutes = minutes % kwargs['alert']

                self.stdout.write("  minutes: %d" % (minutes))
                if 0 <= minutes and minutes < kwargs['interval']:
                    self.stdout.write("emailing friends")
                    # Send on mail per user translated into the right language
                    for friend_profile in outing.user.profile.friends.all():
                        send_localized_mail(friend_profile.user, _('[R.A.S] Alert'),
                                            'RandoAmisSecours/alert/alert.html',
                                            {'fullname': outing.user.get_full_name(),
                                             'URL': "%s%s" % (kwargs['base_url'], reverse('outings.details', args=[outing.pk])),
                                             'name': outing.name, 'ending': outing.ending})
Beispiel #42
0
def users(request):
    now = datetime.utcnow().replace(tzinfo=utc)

    # Joining and last login dates
    users_list = User.objects.all()
    joining_dates = [0] * 366
    last_logins = [0] * 366
    for user in users_list:
        days_delta = (now - user.date_joined).days
        if days_delta <= 365:
            joining_dates[365 - days_delta] += 1

        days_delta = (now - user.last_login).days
        if days_delta <= 365:
            last_logins[365 - days_delta] += 1

    # Active sessions
    all_sessions = Session.objects.all()
    sessions_list = [0] * 366
    for session in all_sessions:
        end = (now - session.expire_date).days
        begin = int(end + settings.SESSION_COOKIE_AGE / 86400)

        # If begin after today (error)
        if begin < 0:
            continue
        # Crop to 365
        if end <= 0:
            end = 0

        for day in range(end, begin + 1):
            if day <= 365:
                sessions_list[365 - day] += 1

    return render_to_response('RandoAmisSecours/reporting/users.html',
                              {'joining_dates': joining_dates,
                               'last_logins': last_logins,
                               'sessions': sessions_list},
                              context_instance=RequestContext(request))
Beispiel #43
0
def outings_late(request):
    now = datetime.utcnow().replace(tzinfo=utc)
    late_outings = Outing.objects.filter(status=CONFIRMED, ending__lt=now)
    return render(request, 'RandoAmisSecours/reporting/outings_late.html',
                  {'late_outings': late_outings})
Beispiel #44
0
 def not_late(self, outing):
     now = datetime.utcnow().replace(tzinfo=utc)
     return not outing.ending <= now
Beispiel #45
0
 def get_expiration_date(self):
     expiration_date = datetime.utcnow() + self.expires
     return expiration_date.strftime('%Y-%m-%dT%H:%M:%S.000Z')
Beispiel #46
0
def outings_late(request):
    now = datetime.utcnow().replace(tzinfo=utc)
    late_outings = Outing.objects.filter(status=CONFIRMED, ending__lt=now)
    return render_to_response('RandoAmisSecours/reporting/outings_late.html',
                              {'late_outings': late_outings},
                              context_instance=RequestContext(request))
Beispiel #47
0
 def is_running(self):
     """ Return True if beginning <= now < end """
     now = datetime.utcnow().replace(tzinfo=utc)
     return self.beginning <= now and now < self.ending
Beispiel #48
0
def _get_current_date_utc():
    return datetime.utcnow().replace(tzinfo=pytz.utc)
Beispiel #49
0
 def is_late(self):
     """ Return True if end <= now < alert """
     now = datetime.utcnow().replace(tzinfo=utc)
     return self.ending <= now and now < self.alert
Beispiel #50
0
 def is_alerting(self):
     """ Return True if alert <= now """
     now = datetime.utcnow().replace(tzinfo=utc)
     return self.alert <= now
Beispiel #51
0
def get_grb_sample(request):
    parameters = []
    year = timedelta(days=365)
    week = timedelta(days=7)
    day = timedelta(days=1)
    cur_time = datetime.utcnow()
    #cur_time = cur_time.replace(year=cur_time.year, month=cur_time.month, day=cur_time.day, hour=cur_time.hour, minute=cur_time.minute, second=cur_time.second, microsecond=0, tzinfo=utc)
    #default_date = cur_time - week
    cur_time = cur_time.replace(year=cur_time.year, month=cur_time.month, day=cur_time.day, hour=0, minute=0, second=0, microsecond=0, tzinfo=utc)
    default_date = cur_time - (week * 48)

    num_cuts = request.GET.get('num_cuts', 0)
    parameters.append(num_cuts)
    no_date_cut = request.GET.get('no_date_cut', 'False')
    parameters.append(no_date_cut)

    x_year_min = int(request.GET.get('x_year_min', default_date.year))
    parameters.append(x_year_min)
    x_month_min = int(request.GET.get('x_month_min', default_date.month))
    parameters.append(x_month_min)
    x_day_min = int(request.GET.get('x_day_min', default_date.day))
    parameters.append(x_day_min)
    x_hour_min = int(request.GET.get('x_hour_min', default_date.hour))
    parameters.append(x_hour_min)
    x_min_min = int(request.GET.get('x_min_min', default_date.minute))
    parameters.append(x_min_min)
    x_sec_min = int(request.GET.get('x_sec_min', default_date.second))
    parameters.append(x_sec_min)

    x_year_max = int(request.GET.get('x_year_max', cur_time.year))
    parameters.append(x_year_max)
    x_month_max = int(request.GET.get('x_month_max', cur_time.month))
    parameters.append(x_month_max)
    x_day_max = int(request.GET.get('x_day_max', cur_time.day))
    parameters.append(x_day_max)
    x_hour_max = int(request.GET.get('x_hour_max', cur_time.hour))
    parameters.append(x_hour_max)
    x_min_max = int(request.GET.get('x_min_max', cur_time.minute))
    parameters.append(x_min_max)
    x_sec_max = int(request.GET.get('x_sec_max', cur_time.second))
    parameters.append(x_sec_max)

    x_min = datetime.utcnow()
    x_max = datetime.utcnow()

    if no_date_cut == 'True':
        x_year_min = 1900
        x_year_max = 2100

    x_min = x_min.replace(year=x_year_min, month=x_month_min, day=x_day_min, hour=x_hour_min, minute=x_min_min, second=x_sec_min, microsecond=0, tzinfo=utc)
    x_max = x_max.replace(year=x_year_max, month=x_month_max, day=x_day_max, hour=x_hour_max, minute=x_min_max, second=x_sec_max, microsecond=0, tzinfo=utc)

    data_file = open(grb_data_file, 'rb')
    grb_data_table = cPickle.load(data_file)
    data_file.close()

    #for item in grb_data_table:
    #    print item
    #    import ipdb; ipdb.set_trace() # debugging code

    #import ipdb; ipdb.set_trace() # debugging code
    #print grb_data_table

    #grb_table_data = measurement.objects.all().order_by('grb_name')
    #grb_table = measurement.objects.filter(date__range = (x_min, x_max)).order_by('grb_name')

    sortdownStr = str(request.GET.get('sort_down', 'GRB Date'))
    if sortdownStr=='GRB':
        sortdownStr = 'GRB Date'

    command_str = "grb_data_table = sorted(grb_data_table, key=lambda grb_data_table:grb_data_table['" + sortdownStr + "'], reverse=True)"
    exec command_str

    sortupStr = str(request.GET.get('sort_up', ''))
    if sortupStr=='GRB':
        sortupStr = 'GRB Date'
    if len(sortupStr) > 0:
        command_str = "grb_data_table = sorted(grb_data_table, key=lambda grb_data_table:grb_data_table['" + sortupStr + "'])"
        exec command_str

    #grb_data_table = sorted(grb_data_table, key=lambda grb_data_table:grb_data_table['GRB Date'], reverse=True)

    # make the date cut on the GRB data
    grb_table = []
    for item in grb_data_table:
        grb_date = item['GRB Date']
        if (grb_date >= x_min) and (grb_date <= x_max):
            grb_table.append(item)

    #print len(grb_table)
    #import ipdb; ipdb.set_trace() # debugging code

    # setup various cuts specified by the user
    cut_array = []
    for i in range(0, int(num_cuts), 1):
        cut_row = []
        cut_row.append(str('cut_')+str(i)+'_min')
        cut_row.append(str('cut_')+str(i))
        cut_row.append(str('cut_')+str(i)+'_max')
        #cut_row.append('') # cut min value (index - 3)
        #cut_row.append('') # cut max value (index - 4)
        #cut_row.append('') # cut variable  (index - 5)
        commnd_str = "cut_row.append(request.GET.get('cut_" + str(i) + "_min' , '0'))" # cut min value (index - 3)
        exec commnd_str
        commnd_str = "cut_row.append(request.GET.get('cut_" + str(i) + "_max' , '2'))" # cut max value (index - 4)
        exec commnd_str
        commnd_str = "cut_row.append(request.GET.get('cut_" + str(i) + "' , r'BAT T90'))" # cut variable (index - 5)
        exec commnd_str
        cut_array.append(cut_row)
    parameters.append(cut_array)

    # make various cuts as specified by the user
    selected_grb_set = grb_table
    if num_cuts > 0:
        for cut_item in cut_array:
            grb_sub_set = []
            cut_value_min = float(cut_item[3])
            cut_value_max = float(cut_item[4])
            cut_measurement_type = str(cut_item[5])
            for mitem in selected_grb_set:
                #import ipdb; ipdb.set_trace() # debugging code
                if (mitem[cut_measurement_type] <= cut_value_max) and (mitem[cut_measurement_type] >= cut_value_min):
                    grb_sub_set.append(mitem)
            selected_grb_set = grb_sub_set
            #import ipdb; ipdb.set_trace() # debugging code
    #print "Selected GRBs = ", len(selected_grb_set)
    #import ipdb; ipdb.set_trace() # debugging code

    return selected_grb_set, parameters
Beispiel #52
0
    def handle(self, *args, **kwargs):
        if kwargs.get('base_url', None) is None:
            raise CommandError('url option is required')

        logger.info("Running Alert script")
        now = datetime.utcnow().replace(tzinfo=utc)

        # Transform all DRAFT into CONFIRMED if the beginning is over
        logger.debug('Transforming DRAFTs')
        outings = Outing.objects.filter(status=DRAFT, beginning__lt=now)
        for outing in outings:
            logger.info("Confirm: '%s' (owner: '%s')", outing.name,
                        outing.user.get_full_name())
            outing.status = CONFIRMED
            outing.save()

        # Grab all late outings
        logger.debug('Alerting owner and friends')
        outings = Outing.objects.filter(status=CONFIRMED, ending__lt=now)

        for outing in outings:
            logger.debug("Inspecting: '%s' (owner: '%s')", outing.name,
                         outing.user.get_full_name())
            # Late outings
            if outing.ending <= now and now < outing.alert:
                logger.debug(' |-> Late')
                minutes = (now - outing.ending).seconds / 60.0
                minutes = minutes % kwargs['alert']

                if 0 <= minutes and minutes < kwargs['interval']:
                    logger.debug(' |--> Alerting the owner')
                    logger.debug("     |-> %s", outing.user.get_full_name())
                    logger.debug("     |--> email: %s", outing.user.email)
                    logger.debug("     |--> provider: %s", outing.user.profile.provider)
                    # send a mail to the user, translated into the right language
                    with Localize(outing.user.profile.language,
                                  outing.user.profile.timezone):
                        send_mail_help(outing.user, _('[R.A.S] Alert'),
                                       'RandoAmisSecours/alert/late.html',
                                       {'URL': "%s%s" % (kwargs['base_url'],
                                                         reverse('outings.details', args=[outing.pk])),
                                        'SAFE_URL': "%s%s" % (kwargs['base_url'],
                                                              reverse('outings.finish', args=[outing.pk]))})
                        send_sms(outing.user, 'RandoAmisSecours/alert/late.txt',
                                 {'name': outing.name})

            # Alerting outings
            elif outing.alert <= now:
                logger.debug(' |-> Alert')
                minutes = (now - outing.alert).seconds / 60.0
                minutes = minutes % kwargs['alert']

                if 0 <= minutes and minutes < kwargs['interval']:
                    logger.debug(' |--> Alerting now')
                    friend_count = outing.user.profile.friends.count()
                    logger.debug(" |---> %d friends to contact", friend_count)
                    # Send on mail per user translated into the right language
                    for friend_profile in outing.user.profile.friends.all():
                        logger.debug("      |-> %s", friend_profile.user.get_full_name())
                        logger.debug("      |--> email: %s", friend_profile.user.email)
                        logger.debug("      \--> provider: %s", friend_profile.provider)
                        with Localize(friend_profile.language,
                                      friend_profile.timezone):
                            send_mail_help(friend_profile.user, _('[R.A.S] Alert'),
                                           'RandoAmisSecours/alert/alert.html',
                                           {'fullname': outing.user.get_full_name(),
                                            'URL': "%s%s" % (kwargs['base_url'], reverse('outings.details', args=[outing.pk])),
                                            'name': outing.name,
                                            'ending': outing.ending})
                            send_sms(friend_profile.user,
                                     'RandoAmisSecours/alert/alert.txt',
                                     {'fullname': outing.user.get_full_name(),
                                      'name': outing.name,
                                      'ending': timesince(outing.ending)})
                    logger.debug(' |--> Alerting the owner')
                    logger.debug("     |-> %s", outing.user.get_full_name())
                    logger.debug("     |--> email: %s", outing.user.email)
                    logger.debug("     |--> provider: %s", outing.user.profile.provider)
                    with Localize(outing.user.profile.language,
                                  outing.user.profile.timezone):
                        send_mail_help(outing.user, _('[R.A.S] Alert'),
                                       'RandoAmisSecours/alert/alert_owner.html',
                                       {'fullname': outing.user.get_full_name(),
                                        'URL': "%s%s" % (kwargs['base_url'],
                                                         reverse('outings.details', args=[outing.pk])),
                                        'name': outing.name,
                                        'ending': outing.ending,
                                        'friend_count': friend_count})
                        send_sms(outing.user,
                                 'RandoAmisSecours/alert/alert_owner.txt',
                                 {'name': outing.name,
                                  'ending': timesince(outing.ending)})

        logger.info("End of Alert script")
Beispiel #53
0
 def not_running(self, outing):
     now = datetime.utcnow().replace(tzinfo=utc)
     return not outing.beginning <= now
Beispiel #54
0
 def not_alerting(self, outing):
     now = datetime.utcnow().replace(tzinfo=utc)
     return not outing.alert <= now
Beispiel #55
0
def get_grb_sample1(request):
    parameters = []
    year = timedelta(days=365)
    week = timedelta(days=7)
    day = timedelta(days=1)
    cur_time = datetime.utcnow()
    #cur_time = cur_time.replace(year=cur_time.year, month=cur_time.month, day=cur_time.day, hour=cur_time.hour, minute=cur_time.minute, second=cur_time.second, microsecond=0, tzinfo=utc)
    #default_date = cur_time - week
    cur_time = cur_time.replace(year=cur_time.year, month=cur_time.month, day=cur_time.day, hour=0, minute=0, second=0, microsecond=0, tzinfo=utc)
    default_date = cur_time - (week * 12)

    num_cuts = request.GET.get('num_cuts', 0)
    parameters.append(num_cuts)
    no_date_cut = request.GET.get('no_date_cut', 'False')
    parameters.append(no_date_cut)

    x_year_min = int(request.GET.get('x_year_min', default_date.year))
    parameters.append(x_year_min)
    x_month_min = int(request.GET.get('x_month_min', default_date.month))
    parameters.append(x_month_min)
    x_day_min = int(request.GET.get('x_day_min', default_date.day))
    parameters.append(x_day_min)
    x_hour_min = int(request.GET.get('x_hour_min', default_date.hour))
    parameters.append(x_hour_min)
    x_min_min = int(request.GET.get('x_min_min', default_date.minute))
    parameters.append(x_min_min)
    x_sec_min = int(request.GET.get('x_sec_min', default_date.second))
    parameters.append(x_sec_min)

    x_year_max = int(request.GET.get('x_year_max', cur_time.year))
    parameters.append(x_year_max)
    x_month_max = int(request.GET.get('x_month_max', cur_time.month))
    parameters.append(x_month_max)
    x_day_max = int(request.GET.get('x_day_max', cur_time.day))
    parameters.append(x_day_max)
    x_hour_max = int(request.GET.get('x_hour_max', cur_time.hour))
    parameters.append(x_hour_max)
    x_min_max = int(request.GET.get('x_min_max', cur_time.minute))
    parameters.append(x_min_max)
    x_sec_max = int(request.GET.get('x_sec_max', cur_time.second))
    parameters.append(x_sec_max)

    x_min = datetime.utcnow()
    x_max = datetime.utcnow()

    if no_date_cut == 'True':
        x_year_min = 1900
        x_year_max = 2100

    x_min = x_min.replace(year=x_year_min, month=x_month_min, day=x_day_min, hour=x_hour_min, minute=x_min_min, second=x_sec_min, microsecond=0, tzinfo=utc)
    x_max = x_max.replace(year=x_year_max, month=x_month_max, day=x_day_max, hour=x_hour_max, minute=x_min_max, second=x_sec_max, microsecond=0, tzinfo=utc)

    grb_set = []
    grb_table = measurement.objects.filter(date__range = (x_min, x_max)).order_by('grb_name')

    for item in grb_table:
        grb_set.append(item.grb_name.grb_name)

    cut_array = []
    for i in range(0, int(num_cuts), 1):
        cut_row = []
        cut_row.append(str('cut_')+str(i)+'_min')
        cut_row.append(str('cut_')+str(i))
        cut_row.append(str('cut_')+str(i)+'_max')
        #cut_row.append('') # cut min value (index - 3)
        #cut_row.append('') # cut max value (index - 4)
        #cut_row.append('') # cut variable  (index - 5)
        commnd_str = "cut_row.append(request.GET.get('cut_" + str(i) + "_min' , '0'))" # cut min value (index - 3)
        exec commnd_str
        commnd_str = "cut_row.append(request.GET.get('cut_" + str(i) + "_max' , '2'))" # cut max value (index - 4)
        exec commnd_str
        commnd_str = "cut_row.append(request.GET.get('cut_" + str(i) + "' , r'BAT T90'))" # cut variable (index - 5)
        exec commnd_str
        cut_array.append(cut_row)
    parameters.append(cut_array)

    cut_set = []
    if num_cuts > 0:
        for cut_item in cut_array:
            grb_sub_set = []
            cut_value_min = float(cut_item[3])
            cut_value_max = float(cut_item[4])
            #import pdb; pdb.set_trace() # debugging code
            cut_measurement_type = measurement_type.objects.get(measurement_type_name=cut_item[5])
            cut_measurement = measurement.objects.filter(measurement_type=cut_measurement_type, value__lte=cut_value_max, value__gte=cut_value_min)
            cut_set.append(cut_measurement_type.measurement_type_id)
            for item in cut_measurement:
                grb_sub_set.append(item.grb_name.grb_name)
            grb_set = get_set_intersection(grb_set, grb_sub_set)
            #import pdb; pdb.set_trace() # debugging code

    return grb_set, parameters