コード例 #1
0
    def handle(self, *args, **options):
        logger.setLevel(logging.INFO)
        handler = logging.StreamHandler()
        handler.setLevel(logging.INFO)
        logger.addHandler(handler)
        formatter = logging.Formatter('%(levelname)s: %(name)s: %(message)s')
        handler.setFormatter(formatter)

        f = open(options['data_file'], 'rb')

        measurements = []
        unrecognised_units = set()
        for line in f:
            datum = json.loads(line)
            datetime = date_parser.parse(datum[0])
            sensor = datum[2]
            if sensor == {}:
                continue
            if '@' not in sensor:
                logger.warning('sensor_id not found in: {}'.format(line))
            sensor_id = sensor['@']
            loop_id = sensor['+'] if '+' in sensor else None
            for key, val in sensor.iteritems():
                if key in ['@', '+']:
                    continue
                split = key.split('|')
                measurement_type = split[0]
                units = split[1] if len(split) == 2 else None
                measurement = Measurement(
                    **{
                        'datetime': datetime,
                        'sensor_id': sensor_id,
                        'loop_id': loop_id,
                        'type': measurement_type,
                        'units': units,
                        'val': val,
                        'val_converted': convert_units(val, units)
                    })
                if measurement.val_converted == None:
                    unrecognised_units.add(units)
                measurements.append(measurement)
                # measurement.save()

        logger.info('measurements: {}'.format(len(measurements)))
        logger.info('measurements[:10]: {}'.format(measurements[:10]))
        logger.info('unrecognised_units: {}'.format(unrecognised_units))

        for i, measurement in enumerate(measurements):
            # print i,
            # sys.stdout.flush()
            try:
                measurement.save()
            except IntegrityError as e:
                logger.error(e)
コード例 #2
0
ファイル: cron.py プロジェクト: nokane/waterweathertracker
 def do(self):
     with open(os.path.join(DATA_DIR, 'waterData.json')) as data_file:
         waterData = json.load(data_file)
         waterData = scripts.byteify(waterData)
     print waterData
     for body in waterData:
         measurement = Measurement(value=body['value'], measured_at=body['dateTime'], body_id=int(body['id']))
         try:
             measurement.save()
         except:
             print "there was a problem saving the measurement"
コード例 #3
0
    def handle(self, *args, **options):
        logger.setLevel(logging.INFO)
        handler = logging.StreamHandler()
        handler.setLevel(logging.INFO)
        logger.addHandler(handler)
        formatter = logging.Formatter('%(levelname)s: %(name)s: %(message)s')
        handler.setFormatter(formatter)

        f = open(options['data_file'], 'rb')

        measurements = []
        unrecognised_units = set()
        for line in f:
            datum = json.loads(line)
            datetime = date_parser.parse(datum[0])
            sensor = datum[2]
            if sensor == {}:
                continue
            if '@' not in sensor:
                logger.warning('sensor_id not found in: {}'.format(line))
            sensor_id = sensor['@']
            loop_id = sensor['+'] if '+' in sensor else None
            for key, val in sensor.iteritems():
                if key in ['@', '+']:
                    continue
                split = key.split('|')
                measurement_type = split[0]
                units = split[1] if len(split) == 2 else None
                measurement = Measurement(**{
                    'datetime': datetime,
                    'sensor_id': sensor_id,
                    'loop_id': loop_id,
                    'type': measurement_type,
                    'units': units,
                    'val': val,
                    'val_converted': convert_units(val, units)
                })
                if measurement.val_converted == None:
                    unrecognised_units.add(units)
                measurements.append(measurement)
                # measurement.save()

        logger.info('measurements: {}'.format(len(measurements)))
        logger.info('measurements[:10]: {}'.format(measurements[:10]))
        logger.info('unrecognised_units: {}'.format(unrecognised_units))
        
        for i, measurement in enumerate(measurements):
            # print i,
            # sys.stdout.flush()
            try:
                measurement.save()
            except IntegrityError as e:
                logger.error(e)
コード例 #4
0
    def get(self, *args, **kwargs):
        response = HttpResponse(content_type="text/csv")
        response[
            "Content-Disposition"] = 'attachment; filename="tabela_pomiarow.csv"'

        writer = csv.writer(response, delimiter="|")
        writer.writerow(["Tabela pomiarów ciśnienia krwi"])
        writer.writerow([
            "Lp.",
            "Ciśnienie skurczowe",
            "Ciśnienie rozkurczowe",
            "Tętno",
            "Data pomiaru",
        ])

        for id, measurement in enumerate(
                Measurement.queryset_for_user(self, self.request.user), 1):
            row = [
                id,
                measurement.systolic_pressure,
                measurement.diastolic_pressure,
                measurement.pulse,
                measurement.measurement_time.strftime("%H:%M  %d %b %Y"),
            ]
            writer.writerow(row)

        return response
コード例 #5
0
def pubsvn(github):
    u = users.objects.get(svn=github)
    if Group.objects.filter(name="Commit").exists():
        g = Group.objects.get(name="Commit")
    else:
        Group(name="Commit").save()
        g = Group.objects.get(name="Commit")
    if Entity.objects.filter(name="Commit", group=g).exists():
        en = Entity.objects.get(name="Commit")
    else:
        Entity(name="Commit", group=g).save()
        en = Entity.objects.get(name="Commit")
    r = svn.remote.RemoteClient('http://svn.apache.org/repos/asf/')
    entries = r.list()
    for filename in entries:
        r = svn.remote.RemoteClient('http://svn.apache.org/repos/asf/' + filename)
        if Project.objects.filter(name=filename).exists():
            pr = Project.objects.get(name=filename)
            #UserParticipation(user=u, project=pr).save()
        else:
            p = Project(name=filename, description=filename)
            p.save()
            pr = Project.objects.get(name=filename)
            #UserParticipation(user=u, project=pr)
        e = r.list()
        for file in e:
            if file == "trunk/":
                a = svn.remote.RemoteClient('http://svn.apache.org/repos/asf/' + filename + "trunk")
                i = 0
                for log in a.log_default():
                    if log[3] == github:
                        if Measurement.objects.filter(value=log[2]).exists():
                            continue
                        else:
                            i=i+1
                            Activity(comments="SVN commit " + str(i) + " " + str(filename) +" " + str(github), entity=en).save()
                            ac = Activity.objects.get(comments="SVN commit " + str(i) + " " + str(filename) +" " + str(github))
                            Measurement(activity=ac, type="char", name="Type", value="SVN Commit").save()
                            Measurement(activity=ac, type='char', name="User", value=github).save()
                            Measurement(activity=ac, type="char", name="Scommit_ID", value=log[2]).save()
                            if log[1]:
                                Measurement(activity=ac, type="char", name="Scommit_message", value=log[1]).save()
                            else:
                                Measurement(activity=ac, type="char", name="Scommit_message", value="Nothing").save()
    return HttpResponse("Done")
コード例 #6
0
ファイル: knmi.py プロジェクト: physicalattraction/PAWeather
    def import_weather(data_mode: DataMode,
                       full_path_to_file: str) -> List[Measurement]:
        assert data_mode == DataMode.per_hour, 'Measurements per day not yet implemented'

        hourly_measurements = []
        stations = {station.code: station for station in Station.objects.all()}
        with open(full_path_to_file, 'r') as f:
            csv_reader = csv.reader(f,
                                    delimiter=',',
                                    quotechar=None,
                                    skipinitialspace=True)
            for line in csv_reader:
                if line[0].startswith('#'):
                    continue

                line = [value or None for value in line]
                station_code, day, hour, wind_direction, wind_speed, _, gust_of_wind, temperature, _, dew_temperature, \
                sunshine, radiation, precipitation_duration, precipitation, air_pressure, visibility, cloud_cover, \
                relative_humidity, _, _, mist, rain, snow, lightning, icing = line
                station = stations[station_code]
                day = datetime.strptime(day, '%Y%m%d')

                hourly_measurements.append(
                    Measurement(
                        station=station,
                        day=day,
                        hour=hour,
                        time=datetime_from_day_and_hour(day,
                                                        int(hour) - 1),
                        wind_direction=Knmi._parse_number(wind_direction),
                        wind_speed=Knmi._parse_number(wind_speed),
                        gust_of_wind=Knmi._parse_number(gust_of_wind),
                        temperature=Knmi._parse_number(temperature),
                        dew_temperature=Knmi._parse_number(dew_temperature),
                        sunshine=Knmi._parse_number(sunshine),
                        radiation=radiation,
                        precipitation_duration=Knmi._parse_number(
                            precipitation_duration),
                        precipitation=Knmi._parse_number(precipitation),
                        air_pressure=Knmi._parse_number(air_pressure),
                        visibility=visibility,
                        cloud_cover=cloud_cover,
                        relative_humidity=relative_humidity,
                        mist=mist or False,
                        rain=rain or False,
                        snow=snow or False,
                        lightning=lightning or False,
                        icing=icing or False))

        if not hourly_measurements:
            return []

        with transaction.atomic():
            Measurement.objects.all().delete()
            Measurement.objects.bulk_create(hourly_measurements)
        return hourly_measurements
コード例 #7
0
def svna(github,urls):
    u = users.objects.get(svn=github)
    if Group.objects.filter(name="Commit").exists():
        g = Group.objects.get(name="Commit")
    else:
        Group(name="Commit").save()
        g = Group.objects.get(name="Commit")
    if Entity.objects.filter(name="Commit", group=g).exists():
        en = Entity.objects.get(name="Commit")
    else:
        Entity(name="Commit", group=g).save()
        en = Entity.objects.get(name="Commit")
    for url in urls.split(','):
        r = svn.remote.RemoteClient(url)
        info=r.info()
        if Project.objects.filter(name=info['entry_path']).exists():
            pr = Project.objects.get(name=info['entry_path'])
            #UserParticipation(user=u, project=pr).save()
        else:
            p = Project(name=info['entry_path'], description=info['entry_path'])
            p.save()
            pr = Project.objects.get(name=info['entry_path'])
            #UserParticipation(user=u, project=pr)
        i=0
        for log in r.log_default():
            if log[3] == github:
                if Measurement.objects.filter(value=log[1]).exists():
                    continue
                else:
                    i = i + 1
                    Activity(comments="SVN commit " + str(i) + " " + str(info['entry_path']) +" " + str(github), entity=en).save()
                    ac = Activity.objects.get(comments="SVN commit " + str(i) + " " + str(info['entry_path']) +" " + str(github))
                    Measurement(activity=ac, type="char", name="Type", value="SVN Commit").save()
                    Measurement(activity=ac, type='char', name="User", value=github).save()
                    Measurement(activity=ac, type="char", name="Scommit_ID", value=log[2]).save()
                    if log[1]:
                        Measurement(activity=ac, type="char", name="Scommit_message", value=log[1]).save()
                    else:
                        Measurement(activity=ac, type="char", name="Scommit_message", value="Nothing").save()
    return HttpResponse("Done")
コード例 #8
0
ファイル: views.py プロジェクト: Boonstra/4.1WD-EnergySite
def add(request):
    if request.method == 'POST':
        form = AddMeasurementToDeviceForm(request.POST, user=request.user)
        if form.is_valid():
            time = form.cleaned_data['times']
            device = form.cleaned_data['devices']
            measurement = form.cleaned_data['measurement']
            new_measurement = Measurement(date=datetime.date.today(), value=measurement)
            new_measurement.time_id = time.id
            new_measurement.device_id = device.id
            new_measurement.facility_id = request.user.facilities.all()[:1].get().id
            new_measurement.save()
            return render(request, 'measurements/index.html')

    form = AddMeasurementToDeviceForm(user=request.user)
    return render(request, 'measurements/add.html', {'form': form})
コード例 #9
0
    def post(self, *args, **kwargs):
        try:
            userdata = UserData.objects.get(user=self.request.user)
            doctordata = DoctorData.objects.get(userdata=userdata)
            measurements = Measurement.queryset_for_user(
                self, self.request.user)
        except:
            messages.add_message(self.request, messages.WARNING,
                                 "Błąd pobierania danych")
            return redirect(reverse("homepage:index"))

        if send_email(self, self.request.user, userdata, doctordata,
                      measurements):
            messages.add_message(self.request, messages.SUCCESS,
                                 "Pomyślnie wysłano email")
        else:
            messages.add_message(self.request, messages.WARNING,
                                 "Nie udało się wysłać wiadomości")

        return redirect(reverse("homepage:index"))
コード例 #10
0
    def handle(self, *args, **options):

        area_data = [[1, "Grand Canyon", 20, 30], [2, "Boca Raton", 40, 50],
                     [3, "Kennesaw", 60, 70], [4, "Mount Hood", 80, 90],
                     [5, "Mount Rainer", 46.5,
                      121.5], [6, "Saint Olaf", 44, 93],
                     [7, "Mount St. Helens", 46, 122]]

        for ad in area_data:
            a = Area(name=ad[1], id=ad[0], longitude=ad[2], latitude=ad[3])
            a.save()

        location_data = [
            [11, "South rim", 200, 1],
            [12, "North rim", 300, 1],
            [13, "Phantom Ranch", 100, 1],
            [14, "Waterfront", 10, 2],
            [15, "Town center", 15, 2],
            [16, "Town center", 310, 3],
            [17, "University", 320, 3],
            [18, "Mall", 330, 3],
            [19, "Airport", 350, 3],
            [20, "South pass", 3500, 4],
            [21, "North rim", 4500, 4],
            [22, "Crater", 4000, 4],
            [23, "North pass", 14000, 5],
            [24, "South glacier", 15000, 5],
            [25, "Ranger station", 16000, 5],
            [26, "Summit", 17000, 5],
            [27, "Yttrboe", 250, 6],
            [28, "Science", 250, 6],
        ]

        no_measurements_location_ids = [23]

        for locd in location_data:
            loc = Location(id=locd[0], name=locd[1], altitude=locd[2])
            a = Area.objects.get(pk=locd[3])
            loc.area = a
            loc.save()

        category_data = [[
            31, "Volcanos", "Areas that are on volcanoes", [4, 5]
        ], [32, "East", "Areas that are in the east", [2, 3]],
                         [33, "West", "Areas that are in the west", [1, 4, 5]],
                         [34, "Wetlands", "Areas that are wetlands", []]]

        for catd in category_data:
            cat = Category(id=catd[0], name=catd[1], description=catd[2])
            cat.save()
            for memb_id in catd[3]:
                a = Area.objects.get(pk=memb_id)
                cat.members.add(a)
            cat.save()

        num_meas_per_loc = 10

        for locd in location_data:
            loc_id = locd[0]
            if loc_id not in no_measurements_location_ids:
                loc = Location.objects.get(pk=loc_id)
                for meas_id in range(loc_id * 100,
                                     loc_id * 100 + num_meas_per_loc):
                    val = random.uniform(5 + loc_id * 3, 15 + loc_id * 3)
                    meas = Measurement(value=val,
                                       id=meas_id,
                                       date=timezone.now())
                    meas.location = loc
                    meas.save()
コード例 #11
0
def bit(github):
    root = tkinter.Tk()
    root.withdraw()
    bitpassword = simpledialog.askstring("Password", "Enter Password", show='*')
    headers = {'Content-Type': 'application/json'}
    A = bitbuckted_project(github,bitpassword)
    u = users.objects.get(bitbucket=github)
    if Group.objects.filter(name="Commit").exists():
        g = Group.objects.get(name="Commit")
    else:
        Group(name="Commit").save()
        g = Group.objects.get(name="Commit")

    if Group.objects.filter(name="Issue").exists():
        g1 = Group.objects.get(name="Issue")
    else:
        Group(name="Issue").save()
        g1 = Group.objects.get(name="Issue")

    if Entity.objects.filter(name="Commit", group=g).exists():
        e = Entity.objects.get(name="Commit")
    else:
        Entity(name="Commit", group=g).save()
        e = Entity.objects.get(name="Commit")

    if Entity.objects.filter(name="Issue", group=g1).exists():
        e1 = Entity.objects.get(name="Issue")
    else:
        Entity(name="Issue", group=g1).save()
        e1 = Entity.objects.get(name="Issue")

    if Activity.objects.filter(comments="BitBucketCommit").exists():
        a = Activity.objects.get(comments="BitBucketCommit")
    else:
        Activity(comments="BitBucketCommit", entity=e).save()
        a = Activity.objects.get(comments="BitBucketCommit")

    if Activity.objects.filter(comments="BitBucketissue").exists():
        a1 = Activity.objects.get(comments="BitBucketissue")
    else:
        Activity(comments="BitBucketissue", entity=e1).save()
        a1 = Activity.objects.get(comments="BitBucketissue")
    message = []
    count = 0
    for i in A:
        if Project.objects.filter(name=i).exists():
            pr = Project.objects.get(name=i)
            #UserParticipation(user=u, project=pr).save()
        else:
            p = Project(name=i, description=i)
            p.save()
            pr = Project.objects.get(name=i)
            #UserParticipation(user=u, project=pr)
    comm, mess, date, br = bitbuckted_commit(github,bitpassword)
    r = requests.get("https://api.bitbucket.org/2.0/repositories/%s" % github, auth=(github, bitpassword), headers=headers)
    repos = json.loads(r.content)
    for m in repos['values']:
        r = requests.get("https://api.bitbucket.org/2.0/repositories/" + github + "/" + m['name'],auth=(github, bitpassword), headers=headers )
        r = json.loads(r.content)
        if r['has_issues']:
            r = json.loads(requests.get(r['links']['issues']['href'],auth=(github, bitpassword), headers=headers).content)
            for i in r['values']:
                if Measurement.objects.filter(value=i['id']).exists():
                    continue
                else:
                    Measurement(activity=a, type="char", name="BitBucketCommit_ID", value=i['id']).save()
                    Measurement(activity=a, type="char", name="BitBucketCommit_kind", value=i['kind']).save()
                    Measurement(activity=a, type="char", name="BitBucketCommit_name", value=i['repository']['name']).save()
                    Measurement(activity=a, type="char", name="BitBucketCommit_priority", value=i['priority']).save()
                    Measurement(activity=a, type="char", name="BitBucketCommit_title", value=i['title']).save()
    for i in range(len(comm)):
        if Measurement.objects.filter(value=comm[i]).exists():
            continue
        else:
            da = date[i].split("T")[0]
            t = date[i].split("T")[1].split('+')[0]
            da = datetime.datetime.strptime(da, '%Y-%m-%d').strftime('%A')
            if 6 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 12:
                time = 1
            elif 12 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 18:
                time = 2
            elif 18 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 24:
                time = 3
            elif 0 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 6:
                time = 4
            da = Day(da)
            Measurement(activity=a, type="char", name="BitBucketCommit_ID", value=comm[i]).save()
            Measurement(activity=a, type="char", name="BitBucketCommit_Day", value=da).save()
            Measurement(activity=a, type="char", name="BitBucketCommit_Time", value=t).save()
            Measurement(activity=a, type="char", name="BitBucketCommit_branch", value=br[i]).save()
            Measurement(activity=a, type="char", name="BitBucketCommit_message", value=mess[i]).save()
    return HttpResponse(str("Done"))
コード例 #12
0
def git(github):
    u = users.objects.get(githubid=github)
    root = tkinter.Tk()
    root.withdraw()
    access = simpledialog.askstring("Accesstoken", "Accesstoken")
    if Group.objects.filter(name="Commit").exists():
        g = Group.objects.get(name="Commit")
    else:
        Group(name="Commit").save()
        g = Group.objects.get(name="Commit")
    if Group.objects.filter(name="Issue").exists():
        gi = Group.objects.get(name="Issue")
    else:
        Group(name="Issue").save()
        gi = Group.objects.get(name="Issue")
    if Entity.objects.filter(name="Commit", group=g).exists():
        e = Entity.objects.get(name="Commit")
    else:
        Entity(name="Commit", group=g).save()
        e = Entity.objects.get(name="Commit")

    if Entity.objects.filter(name="Issue", group=gi).exists():
        ei = Entity.objects.get(name="Issue")
    else:
        Entity(name="Issue", group=gi).save()
        ei = Entity.objects.get(name="Issue")

    for repo in count_user_commits(access):
        if Project.objects.filter(name=repo['name']).exists():
            pr = Project.objects.get(name=repo['name'])
            #UserParticipation(user=u, project=pr).save()
        else:
            p = Project(name=repo['name'], description=repo['name'])
            p.save()
            pr = Project.objects.get(name=repo['name'])
            #UserParticipation(user=u, project=pr)
        r = json.loads(requests.get(repo['commits_url'][:-6]+'?access_token=%s' % access).content)
        r1 = json.loads(requests.get(repo['issue_comment_url'][:-9]+'?access_token=%s' % access).content)
        for k in range(0, len(r1)):
            if Measurement.objects.filter(value=r[i]['id']).exists():
                continue
            else:
                Activity(comments="Git Issue " + str(k) + " " + str(repo['name']), entity=ei).save()
                a = Activity.objects.get(comments="Git Issue " + str(i) + " " + str(repo['name']))
                Measurement(activity=a, type="char", name="Type", value="Git Issue").save()
                Measurement(activity=a, type="char", name="GIssue_ID", value=r[i]['id']).save()
                Measurement(activity=a, type="char", name="GIssue_ID", value=r[i]['body']).save()
        for i in range(0, len(r)):
            if Measurement.objects.filter(value=r[i]['sha']).exists():
                continue
            else:
                Activity(comments="Git commit " + str(i) + " " + str(repo['name']) + " " + str(github), entity=e).save()
                a = Activity.objects.get(comments="Git commit " + str(i) + " " + str(repo['name']) +" " + str(github))
                rr = requests.get(r[i]['url']+'?access_token=%s' % access)
                rr = json.loads(rr.content)
                d = rr['stats']['deletions']
                l = rr['stats']['additions']
                no = len(rr['files'])
                date = rr['commit']['committer']['date'].split("T")[0]
                t = rr['commit']['committer']['date'].split("T")[1][:-1]
                day = datetime.datetime.strptime(date, '%Y-%m-%d').strftime('%A')
                if 6 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 12:
                    time = 1
                elif 12 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 18:
                    time = 2
                elif 18 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 24:
                    time = 3
                elif 0 <= int(t.split(":")[0]) and int(t.split(":")[0]) < 6:
                    time = 4
                da = Day(day)
                Measurement(activity=a, type="char", name="Type", value="Git Commit").save()
                Measurement(activity=a, type='char', name="User", value=github).save()
                Measurement(activity=a, type="char", name="Gcommit_ID", value=r[i]['sha']).save()
                Measurement(activity=a, type="char", name="Gcommit_deletions", value=d).save()
                Measurement(activity=a, type="char", name="Gcommit_addition", value=l).save()
                Measurement(activity=a, type="char", name="Gcommit_nooffiles", value=no).save()
                Measurement(activity=a, type="char", name="Gcommit_timelabel", value=time).save()
                Measurement(activity=a, type="char", name="Gcommit_daylabel", value=da).save()
                Measurement(activity=a, type="char", name="Gcommit_message",
                            value=re.sub('\n', ' ', r[i]['commit']['message']).encode('utf-8', 'ignore')).save()
    return HttpResponse("Done")
コード例 #13
0
ファイル: add_data.py プロジェクト: slug62/assign_07
    def handle(self, *args, **options):

        area_data = [
            [1, "Grand Canyon", 20, 30],
            [2, "Boca Raton", 40, 50],
            [3, "Kennesaw", 60, 70],
            [4, "Mount Hood", 80, 90],
            [5, "Mount Rainer", 46.5, 121.5],
            [6, "Saint Olaf", 44, 93],
            [7, "Mount St. Helens", 46, 122]
        ]

        for ad in area_data:
            a = Area(name=ad[1], id=ad[0], longitude=ad[2], latitude=ad[3])
            a.save()

        location_data = [
            [11, "South rim", 200, 1],
            [12, "North rim", 300, 1],
            [13, "Phantom Ranch", 100, 1],
            [14, "Waterfront", 10, 2],
            [15, "Town center", 15, 2],
            [16, "Town center", 310, 3],
            [17, "University", 320, 3],
            [18, "Mall", 330, 3],
            [19, "Airport", 350, 3],
            [20, "South pass", 3500, 4],
            [21, "North rim", 4500, 4],
            [22, "Crater", 4000, 4],
            [23, "North pass", 14000, 5],
            [24, "South glacier", 15000, 5],
            [25, "Ranger station", 16000, 5],
            [26, "Summit", 17000, 5],
            [27, "Yttrboe", 250, 6],
            [28, "Science", 250, 6],
        ]

        no_measurements_location_ids = [23]

        for locd in location_data:
            loc = Location(id=locd[0], name=locd[1], altitude=locd[2])
            a = Area.objects.get(pk=locd[3])
            loc.area = a
            loc.save()

        category_data = [
            [31, "Volcanos", "Areas that are on volcanoes", [4, 5]],
            [32, "East", "Areas that are in the east", [2, 3]],
            [33, "West", "Areas that are in the west", [1, 4, 5]],
            [34, "Wetlands", "Areas that are wetlands", []]
            ]

        for catd in category_data:
            cat = Category(id=catd[0], name=catd[1], description=catd[2])
            cat.save()
            for memb_id in catd[3]:
                a = Area.objects.get(pk=memb_id)
                cat.members.add(a)
            cat.save()

        num_meas_per_loc = 10

        for locd in location_data:
            loc_id = locd[0]
            if loc_id not in no_measurements_location_ids:
                loc = Location.objects.get(pk=loc_id)
                for meas_id in range(loc_id*100, loc_id*100+num_meas_per_loc):
                    val = random.uniform(5+loc_id*3, 15+loc_id*3)
                    meas = Measurement(value=val, id=meas_id, date=timezone.now())
                    meas.location = loc
                    meas.save()
コード例 #14
0
def add_test_examples(user_id):
    """
    Creates test activities, measurements and metric examples in default project for user.
    If the user already has such activities then does nothing.

    :param user_id: user id
    """
    example_activity = "Test Activity Example"
    test_examples = Activity.objects.filter(entity__name=example_activity,
                                            participation__user=user_id)
    if test_examples.count() == 0:
        with transaction.atomic():
            part = UserParticipation.objects.get(user=user_id, project=None)
            e, created = Entity.objects.get_or_create(name=example_activity)

            # activities for 10 days
            for i in range(10):
                cur_day_timestamp = int(time.time() / DAY_SEC - i) * DAY_SEC

                # ten activities per day
                for j in range(10):
                    a = Activity(participation=part, entity=e)
                    a.save()

                    start_time = cur_day_timestamp + rnd.randint(
                        9 * 60 * 60, 18 * 60 * 60)
                    end_time = start_time + rnd.randint(60 * 60, 2 * 60 * 60)

                    Measurement(type='int',
                                name='int property 1',
                                value=str(rnd.randint(0, 100)),
                                activity=a).save()
                    Measurement(type='int',
                                name='int property 2',
                                value=str(rnd.randint(0, 100)),
                                activity=a).save()
                    Measurement(type='long',
                                name='start time',
                                value=str(start_time * 1000),
                                activity=a).save()
                    Measurement(type='long',
                                name='end time',
                                value=str(end_time * 1000),
                                activity=a).save()

            p1 = Metric(name='Tst activity prop 1',
                        type=Metric.RAW,
                        participation=part,
                        info={
                            "field": "int property 1",
                            "filters": {},
                            "activity": example_activity
                        })
            p2 = Metric(name='Tst activity prop 2',
                        type=Metric.RAW,
                        participation=part,
                        info={
                            "field": "int property 2",
                            "filters": {},
                            "activity": example_activity
                        })
            p1.save()
            p2.save()

            c1 = Metric(name='Tst props diff',
                        type=Metric.COMPOSITE,
                        participation=part,
                        info={
                            "bounds": {},
                            "groupby": {},
                            "aggregate": "minus",
                            "components": [p1.id, p2.id],
                            "gqm": {
                                "gqm_goal": "Show activity difference",
                                "gqm_question":
                                "What is difference per activity?"
                            }
                        })
            c2 = Metric(name='Tst diff by day',
                        type=Metric.COMPOSITE,
                        participation=part,
                        info={
                            "bounds": {
                                "lower": 20,
                                "upper": 80
                            },
                            "gqm": {
                                "gqm_goal": "Show activity difference",
                                "gqm_question": "How much per day?"
                            },
                            "groupby": {
                                "group_func": "sum",
                                "group_type": "day",
                                "group_timefield": "start time"
                            },
                            "aggregate": "minus",
                            "components": [p1.id, p2.id]
                        })
            c3 = Metric(name='Tst diff by 3 days',
                        type=Metric.COMPOSITE,
                        participation=part,
                        info={
                            "bounds": {},
                            "groupby": {
                                "group_func": "sum",
                                "group_type": "3_days",
                                "group_timefield": "start time"
                            },
                            "aggregate": "minus",
                            "components": [p1.id, p2.id]
                        })
            c1.save()
            c2.save()
            c3.save()

            c4 = Metric(name='Tst diff mult',
                        type=Metric.COMPOSITE,
                        participation=part,
                        info={
                            "bounds": {
                                "lower": 0,
                                "upper": 1000000
                            },
                            "groupby": {},
                            "aggregate": "mult",
                            "components": [c2.id, c2.id],
                            "gqm": {
                                "gqm_goal": "Show activity difference",
                                "gqm_question":
                                "What is difference per activity?"
                            }
                        })
            c5 = Metric(name='Tst one',
                        type=Metric.COMPOSITE,
                        participation=part,
                        info={
                            "bounds": {
                                "lower": 0,
                                "upper": 2
                            },
                            "groupby": {},
                            "aggregate": "div",
                            "gqm": {
                                "gqm_goal": "Show positive values",
                                "gqm_question": "Is it equal to one?"
                            },
                            "components": [c2.id, c2.id]
                        })
            c4.save()
            c5.save()
コード例 #15
0
    def get_context_data(self, **kwargs):
        measurements = Measurement.queryset_for_user(self, self.request.user)

        return super(GeneratePDFView,
                     self).get_context_data(pagesize="A4",
                                            measurements=measurements)