diff --git a/.flake8 b/.flake8 index be59c58b..42903304 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] exclude = .git,__pycache__,backend/settings*,*/migrations/*,venv,.venv ignore = E302,E731,W503 -max-complexity = 15 -max-line-length = 120 +max-complexity = 25 +max-line-length = 150 diff --git a/backend/settings.py b/backend/settings.py index 7d51f397..3195a831 100644 --- a/backend/settings.py +++ b/backend/settings.py @@ -26,8 +26,8 @@ # SSO Config SSO_TOKEN_URL = "https://gymkhana.iitb.ac.in/sso/oauth/token/" SSO_PROFILE_URL = "https://gymkhana.iitb.ac.in/sso/user/api/user/?fields=first_name,last_name,type,profile_picture,sex,username,email,program,contacts,insti_address,secondary_emails,mobile,roll_number" -SSO_CLIENT_ID = "HeKlfCluQLxa5cG5c4yHYiAEFZynroiKwylpiwNV" -SSO_CLIENT_ID_SECRET_BASE64 = "SGVLbGZDbHVRTHhhNWNHNWM0eUhZaUFFRlp5bnJvaUt3eWxwaXdOVjpYbDg4OHNaOWFhbVVmV1FMR0Y3SjI1MU5taUFYeHRtdzRtM3pHejJLUVQ1d3M0b3hTRGNCTnhSNWw4SXpYbHNDTVVWVHh3MUE0VXRnRU5YZ1FpWlFDZ1RUcERoVHFXeUZmckhLdDhadU5SQk9SY2Q3Z2ZmWjNXUzQ5bGxCMXNBUg==" +SSO_CLIENT_ID = "0vptOdXpmB8MIGhV6ZeADQxNQ7xuaa3ntITZwqPX" +SSO_CLIENT_ID_SECRET_BASE64 = "MHZwdE9kWHBtQjhNSUdoVjZaZUFEUXhOUTd4dWFhM250SVRad3FQWDpsanRQbVN2WGZVTnlXZEVRTWQ1aElaYUNXRXZyVFRXTllTU0p3cExwbUhTZ1pTRXI5WUdZWm40SHFOczZlWHBhQjBlSXhzV3p2UlJSSTRoM3FreDJlbmFrSzczUXhPRldiVFh6RkRuUFk4aVdNeERuZndXdU8yOEg0eVloSlpWZw==" # Password Login SSO_DEFAULT_REDIR = "https://insti.app/login" @@ -72,4 +72,10 @@ EMAIL_HOST = "smtp.gmail.com" EMAIL_PORT = "587" EMAIL_HOST_USER = "" +EMAIL_HOST_PASSWORD = "" +EMAIL_EVENT_HOST_USER = "" EMAIL_USE_TLS = True +RECIPIENT_LIST = ['recipient1@example.com', 'recipient2@example.com'] +CORS_ORIGIN_ALLOW_ALL = True +CORS_ALLOW_CREDENTIALS = True +AUTH_USER = "" diff --git a/bans/models.py b/bans/models.py index 047d2cb8..1bd5c2a9 100644 --- a/bans/models.py +++ b/bans/models.py @@ -1,5 +1,5 @@ -from django.db import models from uuid import uuid4 +from django.db import models from users.models import UserProfile # Create your models here. diff --git a/bans/views.py b/bans/views.py index fea4212d..242a2842 100644 --- a/bans/views.py +++ b/bans/views.py @@ -29,8 +29,7 @@ def list(self, request): queryset = self.get_queryset() serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) - else: - return forbidden_no_privileges() + return forbidden_no_privileges() @login_required_ajax def retrieve(self, request, pk): @@ -38,8 +37,7 @@ def retrieve(self, request, pk): instance = get_object_or_404(self.queryset, pk=pk) serializer = self.get_serializer(instance) return Response(serializer.data) - else: - return forbidden_no_privileges() + return forbidden_no_privileges() @login_required_ajax def create(self, request): @@ -69,11 +67,10 @@ def create(self, request): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - else: - return forbidden_no_privileges() + return forbidden_no_privileges() @login_required_ajax - def update(self, request, pk=None, *args, **kwargs): + def update(self, request, *args, pk=None, **kwargs): if user_has_insti_privilege(request.user.profile, "RoleB"): instance = get_object_or_404(self.queryset, pk=pk) serializer = self.get_serializer(instance, data=request.data, partial=True) @@ -84,14 +81,12 @@ def update(self, request, pk=None, *args, **kwargs): return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - else: - return forbidden_no_privileges() + return forbidden_no_privileges() @login_required_ajax - def destroy(self, request, pk=None, *args, **kwargs): + def destroy(self, request, *args, pk=None, **kwargs): if user_has_insti_privilege(request.user.profile, "RoleB"): instance = get_object_or_404(self.queryset, pk=pk) instance.delete() return Response(status=status.HTTP_204_NO_CONTENT) - else: - return forbidden_no_privileges() + return forbidden_no_privileges() diff --git a/buyandsell/models.py b/buyandsell/models.py index bf14d4ce..da81c01d 100644 --- a/buyandsell/models.py +++ b/buyandsell/models.py @@ -1,7 +1,7 @@ +from uuid import uuid4 from django.db.models.deletion import SET from django.db.models.fields.related import ForeignKey from django.db import models -from uuid import uuid4 from helpers.misc import get_url_friendly PDT_NAME_MAX_LENGTH = 60 diff --git a/buyandsell/views.py b/buyandsell/views.py index 4d886a30..d5531638 100644 --- a/buyandsell/views.py +++ b/buyandsell/views.py @@ -1,17 +1,17 @@ """Views for BuyAndSell.""" +import json from django.conf import settings from django.core.mail import send_mail from rest_framework.response import Response from rest_framework import viewsets from django.shortcuts import get_object_or_404 +from django.db.models import Q +from django.utils import timezone from roles.helpers import login_required_ajax from buyandsell.models import Ban, Category, ImageURL, Limit, Product, Report from buyandsell.serializers import ProductSerializer from helpers.misc import query_search from users.models import UserProfile -from django.db.models import Q -import json -from django.utils import timezone REPORTS_THRES = 3 @@ -93,7 +93,7 @@ def list(self, request): data = ProductSerializer(queryset, many=True).data return Response(data) - def get_contact_details(userpro: UserProfile): + def get_contact_details(self, userpro: UserProfile): return f""" Phone: {userpro.contact_no} Email: {userpro.email}""" diff --git a/community/serializer_min.py b/community/serializer_min.py index 4f638006..e7c69a04 100644 --- a/community/serializer_min.py +++ b/community/serializer_min.py @@ -79,8 +79,7 @@ def get_posted_by(self, obj): pb.name = "Anonymous" pb.id = "null" pb.ldap_id = "null" - pb.profile_pic = \ - 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSM9q9XJKxlskry5gXTz1OXUyem5Ap59lcEGg&usqp=CAU' + pb.profile_pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSM9q9XJKxlskry5gXTz1OXUyem5Ap59lcEGg&usqp=CAU" elif ( obj.anonymous and "return_for_mod" in self.context diff --git a/community/serializers.py b/community/serializers.py index 91a22b96..d24b29cb 100644 --- a/community/serializers.py +++ b/community/serializers.py @@ -98,8 +98,7 @@ def get_posted_by(self, obj): pb.name = "Anonymous" pb.id = "null" pb.ldap_id = "null" - pb.profile_pic = \ - 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSM9q9XJKxlskry5gXTz1OXUyem5Ap59lcEGg&usqp=CAU' + pb.profile_pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSM9q9XJKxlskry5gXTz1OXUyem5Ap59lcEGg&usqp=CAU" elif ( obj.anonymous and "return_for_mod" in self.context diff --git a/community/tests.py b/community/tests.py index 5ab8cae2..6ba92fb1 100644 --- a/community/tests.py +++ b/community/tests.py @@ -89,7 +89,9 @@ def test_communitypost_yourlist(self): self.assertEqual( response.data["count"], CommunityPost.objects.filter( - thread_rank=1, posted_by=self.user1.profile, community=self.test_community_1 + thread_rank=1, + posted_by=self.user1.profile, + community=self.test_community_1, ).count(), ) self.assertListEqual( diff --git a/events/admin.py b/events/admin.py index ce514f7d..0275b63f 100644 --- a/events/admin.py +++ b/events/admin.py @@ -6,6 +6,7 @@ class EventAdmin(admin.ModelAdmin): list_filter = ( "start_time", "bodies", + "venues", ) list_display = ( "name", diff --git a/events/migrations/0032_auto_20231211_2316.py b/events/migrations/0032_auto_20231211_2316.py new file mode 100644 index 00000000..49eed109 --- /dev/null +++ b/events/migrations/0032_auto_20231211_2316.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.16 on 2023-12-11 17:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0031_alter_event_event_interest"), + ] + + operations = [ + migrations.AddField( + model_name="event", + name="email_body", + field=models.TextField(default=""), + ), + migrations.AddField( + model_name="event", + name="email_verified", + field=models.BooleanField(default=False), + ), + ] diff --git a/events/migrations/0033_rename_email_body_event_longdescription.py b/events/migrations/0033_rename_email_body_event_longdescription.py new file mode 100644 index 00000000..420fd5cc --- /dev/null +++ b/events/migrations/0033_rename_email_body_event_longdescription.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.16 on 2023-12-12 10:01 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0032_auto_20231211_2316"), + ] + + operations = [ + migrations.RenameField( + model_name="event", + old_name="email_body", + new_name="longdescription", + ), + ] diff --git a/events/migrations/0034_event_verification_body.py b/events/migrations/0034_event_verification_body.py new file mode 100644 index 00000000..667790b0 --- /dev/null +++ b/events/migrations/0034_event_verification_body.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.16 on 2023-12-13 13:01 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0033_rename_email_body_event_longdescription"), + ] + + operations = [ + migrations.AddField( + model_name="event", + name="verification_body", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ( + "91199c20-7488-41c5-9f6b-6f6c7c5b897d", + "Institute Cultural Council", + ), + ( + "81e05a1a-7fd1-45b5-84f6-074e52c0f085", + "Institute Technical Council", + ), + ( + "a9f81e69-fcc9-4fe3-b261-9e5e7a13f898", + "Institute Sports Council", + ), + ("f3ae5230-4441-4586-81a8-bf75a2e47318", "Hostel Affairs"), + ], + default="91199c20-7488-41c5-9f6b-6f6c7c5b897d", + max_length=147, + ), + preserve_default=False, + ), + ] diff --git a/events/migrations/0035_alter_event_verification_body.py b/events/migrations/0035_alter_event_verification_body.py new file mode 100644 index 00000000..1b16d00f --- /dev/null +++ b/events/migrations/0035_alter_event_verification_body.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.16 on 2023-12-14 04:48 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0034_event_verification_body"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="verification_body", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ( + "d920d898-0998-4ed9-8fb8-f270310b2bec", + "Institute Cultural Council", + ), + ( + "ae084ebb-6009-4095-a774-44ad0f107bc0", + "Institute Technical Council", + ), + ( + "0aa10bcc-f08f-44c6-bf50-1ce9b5c2f0f0", + "Institute Sports Council", + ), + ("6c43632e-de1f-4088-8e77-60af60139e91", "Hostel Affairs"), + ], + max_length=147, + ), + ), + ] diff --git a/events/migrations/0036_alter_event_verification_body.py b/events/migrations/0036_alter_event_verification_body.py new file mode 100644 index 00000000..f8d1b2bb --- /dev/null +++ b/events/migrations/0036_alter_event_verification_body.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.16 on 2023-12-14 07:32 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0035_alter_event_verification_body"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="verification_body", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ( + "Institute Cultural Council", + "d920d898-0998-4ed9-8fb8-f270310b2bec", + ), + ( + "ae084ebb-6009-4095-a774-44ad0f107bc0", + "Institute Technical Council", + ), + ( + "0aa10bcc-f08f-44c6-bf50-1ce9b5c2f0f0", + "Institute Sports Council", + ), + ("6c43632e-de1f-4088-8e77-60af60139e91", "Hostel Affairs"), + ], + max_length=137, + ), + ), + ] diff --git a/events/migrations/0037_alter_event_verification_body.py b/events/migrations/0037_alter_event_verification_body.py new file mode 100644 index 00000000..02ab7706 --- /dev/null +++ b/events/migrations/0037_alter_event_verification_body.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.16 on 2023-12-14 07:34 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0036_alter_event_verification_body"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="verification_body", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ( + "d920d898-0998-4ed9-8fb8-f270310b2bec", + "Institute Cultural Council", + ), + ( + "ae084ebb-6009-4095-a774-44ad0f107bc0", + "Institute Technical Council", + ), + ( + "0aa10bcc-f08f-44c6-bf50-1ce9b5c2f0f0", + "Institute Sports Council", + ), + ("6c43632e-de1f-4088-8e77-60af60139e91", "Hostel Affairs"), + ], + max_length=147, + ), + ), + ] diff --git a/events/migrations/0038_alter_event_verification_body.py b/events/migrations/0038_alter_event_verification_body.py new file mode 100644 index 00000000..55e52e4c --- /dev/null +++ b/events/migrations/0038_alter_event_verification_body.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.16 on 2023-12-14 10:06 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0037_alter_event_verification_body"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="verification_body", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ( + "91199c20-7488-41c5-9f6b-6f6c7c5b897d", + "Institute Cultural Council", + ), + ( + "81e05a1a-7fd1-45b5-84f6-074e52c0f085", + "Institute Technical Council", + ), + ( + "a9f81e69-fcc9-4fe3-b261-9e5e7a13f898", + "Institute Sports Council", + ), + ("f3ae5230-4441-4586-81a8-bf75a2e47318", "Hostel Affairs"), + ], + max_length=147, + ), + ), + ] diff --git a/events/migrations/0039_alter_event_verification_body.py b/events/migrations/0039_alter_event_verification_body.py new file mode 100644 index 00000000..007f1027 --- /dev/null +++ b/events/migrations/0039_alter_event_verification_body.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.16 on 2023-12-29 15:25 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0038_alter_event_verification_body"), + ] + + operations = [ + migrations.AlterField( + model_name="event", + name="verification_body", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ("", "Institute Cultural Council"), + ( + "06868e3e-773e-43d1-8bbb-efe17bb67ed1", + "Institute Technical Council", + ), + ("", "Institute Sports Council"), + ("", "Hostel Affairs"), + ], + max_length=39, + ), + ), + ] diff --git a/events/migrations/0040_auto_20231229_2134.py b/events/migrations/0040_auto_20231229_2134.py new file mode 100644 index 00000000..66221f1b --- /dev/null +++ b/events/migrations/0040_auto_20231229_2134.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.16 on 2023-12-29 16:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("bodies", "0023_body_canonical_name"), + ("events", "0039_alter_event_verification_body"), + ] + + operations = [ + migrations.RemoveField( + model_name="event", + name="verification_body", + ), + migrations.AddField( + model_name="event", + name="verification_bodies", + field=models.ManyToManyField( + blank=True, related_name="verEvents", to="bodies.Body" + ), + ), + ] diff --git a/events/models.py b/events/models.py index b7f53498..afc1ad68 100644 --- a/events/models.py +++ b/events/models.py @@ -18,7 +18,12 @@ class Event(models.Model): name = models.CharField(max_length=60) description = models.TextField(blank=True) + longdescription = models.TextField(default="") + email_verified = models.BooleanField(default=False) bodies = models.ManyToManyField("bodies.Body", related_name="events", blank=True) + verification_bodies = models.ManyToManyField( + "bodies.Body", blank=True, related_name="verEvents" + ) image_url = models.URLField(blank=True, null=True) website_url = models.URLField(blank=True, null=True) start_time = models.DateTimeField() diff --git a/events/serializers.py b/events/serializers.py index 84352a57..5f5cdd47 100644 --- a/events/serializers.py +++ b/events/serializers.py @@ -35,6 +35,8 @@ class EventSerializer(serializers.ModelSerializer): each category, i.e. interested and going and minimal venue info. Use `EventFullSerializer` if you want information on individual users and venues. + + Basically this is the serializzer used in the min view for the event that passes only a few fields """ # pylint: disable=C0415 @@ -62,6 +64,7 @@ class Meta: "str_id", "name", "description", + "longdescription", "image_url", "start_time", "end_time", @@ -151,6 +154,14 @@ def get_going(self, obj): bodies_id = serializers.PrimaryKeyRelatedField( many=True, read_only=False, queryset=Body.objects.all(), source="bodies" ) + verification_bodies = BodySerializerMin(many=True, read_only=True) + verification_bodies_id = serializers.PrimaryKeyRelatedField( + many=True, + read_only=False, + queryset=Body.objects.all(), + source="verification_bodies", + ) + email_verified = serializers.BooleanField(required=False) user_tags = serializers.PrimaryKeyRelatedField( many=True, read_only=False, queryset=UserTag.objects.all(), default=[] @@ -173,6 +184,10 @@ class Meta: "str_id", "name", "description", + "longdescription", + "email_verified", + "verification_bodies", + "verification_bodies_id", "image_url", "start_time", "end_time", diff --git a/events/urls.py b/events/urls.py index 18eceec3..4a0e8a64 100644 --- a/events/urls.py +++ b/events/urls.py @@ -1,6 +1,6 @@ """URLs for events.""" from django.urls import path -from events.views import EventViewSet +from events.views import EventViewSet, EventMailVerificationViewSet, BodiesWithPrivilegeView urlpatterns = [ path("events", EventViewSet.as_view({"get": "list", "post": "create"})), @@ -8,4 +8,16 @@ "events/", EventViewSet.as_view({"get": "retrieve", "put": "update", "delete": "destroy"}), ), + path( + "events//approve-mail", + EventMailVerificationViewSet.as_view({"post": "approve_mail"}), + name="event-approve-mail", + ), + path( + "events//reject-mail", + EventMailVerificationViewSet.as_view({"post": "reject_mail"}), + name="event-reject-mail", + ), + path("bodies-with-privilege/", BodiesWithPrivilegeView.as_view({"get": "get_bodies"}), name='bodies-with-privilege'), + ] diff --git a/events/views.py b/events/views.py index 499be1f3..b660cd56 100644 --- a/events/views.py +++ b/events/views.py @@ -3,6 +3,9 @@ from rest_framework.response import Response from rest_framework import viewsets from django.shortcuts import get_object_or_404 +from django.core.mail import send_mail +from django.conf import settings +from bodies.serializers import BodySerializerMin from events.prioritizer import get_fresh_prioritized_events from events.prioritizer import get_prioritized from events.serializers import EventSerializer @@ -11,8 +14,13 @@ from roles.helpers import user_has_privilege from roles.helpers import login_required_ajax from roles.helpers import forbidden_no_privileges, diff_set +from roles.helpers import bodies_with_users_having_privilege from locations.helpers import create_unreusable_locations +EMAIL_EVENT_HOST_USER = settings.EMAIL_EVENT_HOST_USER +RECIPIENT_LIST = settings.RECIPIENT_LIST +EMAIL_HOST_PASSWORD = settings.EMAIL_HOST_PASSWORD +AUTH_USER = settings.AUTH_USER class EventViewSet(viewsets.ModelViewSet): """Event""" @@ -23,14 +31,37 @@ class EventViewSet(viewsets.ModelViewSet): def get_serializer_context(self): return {"request": self.request} + @login_required_ajax def retrieve(self, request, pk): """Get Event. Get by `uuid` or `str_id`""" self.queryset = EventFullSerializer.setup_eager_loading(self.queryset, request) event = self.get_event(pk) - serialized = EventFullSerializer(event, context={"request": request}).data + councils = event.verification_bodies.all() + serialized = None + for council in councils: + council_id = council.id + if user_has_privilege(request.user.profile, council_id, "VerE"): + longdescription_visible = True + serialized = EventFullSerializer( + event, + context={ + "request": request, + "longdescription_visible": longdescription_visible, + }, + ).data + else: + longdescription_visible = False + serialized = EventFullSerializer( + event, + context={ + "request": request, + "longdescription_visible": longdescription_visible, + }, + ).data + serialized["longdescription"] = [] return Response(serialized) def list(self, request): @@ -60,9 +91,23 @@ def create(self, request): """Create Event. Needs `AddE` permission for each body to be associated.""" + # If email body exists then body for verification should also exist + if ( + "long_description" in request.data + and "verification_body" not in request.data + ): + return Response({"error": "Verification body id not provided"}) + # Prevent events without any body if "bodies_id" not in request.data or not request.data["bodies_id"]: return forbidden_no_privileges() + print(request.data["bodies_id"]) + print(request.data.get("verification_bodies")) + + if isinstance(request.data["bodies_id"], str) and user_has_privilege( + request.user.profile, request.data["bodies_id"], "AddE" + ): + return super().create(request) # Check privileges for all bodies if all( @@ -72,18 +117,13 @@ def create(self, request): ] ): # Fill in ids of venues - request.data["venue_ids"] = create_unreusable_locations( - request.data["venue_names"] - ) - try: - request.data["event_interest"] - request.data["interests_id"] - except KeyError: - request.data["event_interest"] = [] - request.data["interests_id"] = [] + # print("User has privileges") + # try: + # request.data["venue_ids"] = create_unreusable_locations(request.data["venue_names"]) + # except KeyError: + # request.data["venue_ids"] return super().create(request) - return forbidden_no_privileges() @login_required_ajax @@ -106,17 +146,15 @@ def update(self, request, pk): ): return forbidden_no_privileges() - # Create added unreusable venues, unlink deleted ones - request.data["venue_ids"] = get_update_venue_ids( - request.data["venue_names"], event - ) - try: + # Create added unreusable venues, unlink deleted ones + request.data["venue_ids"] = get_update_venue_ids( + request.data["venue_names"], event + ) request.data["event_interest"] request.data["interests_id"] except KeyError: - request.data["event_interest"] = [] - request.data["interests_id"] = [] + request.data["venue_ids"] return super().update(request, pk) @@ -183,3 +221,74 @@ def get_update_venue_ids(venue_names, event): added_venue_ids = create_unreusable_locations(added_venues) return added_venue_ids + common_venue_ids + + +class EventMailVerificationViewSet(viewsets.ViewSet): + @login_required_ajax + def approve_mail(self, request, pk): + try: + event = Event.objects.get(id=pk) + except Event.DoesNotExist: + return Response({"error": "Event not found"}) + councils = event.verification_bodies.all() + for council in councils: + council_id = council.id + user_has_VerE_permission = user_has_privilege( + request.user.profile, council_id, "VerE" + ) + if user_has_VerE_permission and not event.email_verified: + subject = event.description + message = event.longdescription + recipient_list = RECIPIENT_LIST + try: + send_mail( + subject, + message, + EMAIL_EVENT_HOST_USER, + recipient_list, + fail_silently=False, + auth_user=AUTH_USER, + auth_password=EMAIL_HOST_PASSWORD, + ) + event.email_verified = True + event.save() + return Response({"success": "Mail sent successfully"}) + except Exception as e: + return Response( + {"error_status": True, "msg": f"Error sending mail: {str(e)}"} + ) + else: + return forbidden_no_privileges() + + @login_required_ajax + def reject_mail(self, request, pk): + try: + event = Event.objects.get(id=pk) + except Event.DoesNotExist: + return Response({"error": "Event not found"}) + + councils = event.verification_bodies.all() + for council in councils: + council_id = council.id + user_has_VerE_permission = user_has_privilege( + request.user.profile, council_id, "VerE" + ) + + if user_has_VerE_permission and not event.email_verified: + print(event.longdescription) + event.longdescription = "" + event.email_verified = True + + event.save() + return Response({"success": "Mail rejected and content deleted"}) + return forbidden_no_privileges() + + +class BodiesWithPrivilegeView(viewsets.ViewSet): + def get_bodies(self, request): + """Get bodies with users having a specific privilege.""" + bodies_with_privilege = bodies_with_users_having_privilege("VerE") + + serialized_bodies = BodySerializerMin(bodies_with_privilege, many=True).data + + return Response(serialized_bodies) \ No newline at end of file diff --git a/locations/management/commands/adj_list.py b/locations/management/commands/adj_list.py index b5370dcd..84aa5c43 100644 --- a/locations/management/commands/adj_list.py +++ b/locations/management/commands/adj_list.py @@ -1 +1,1503 @@ -{0: {'Hostel 12 Crown of the Campus': 2.534758371127315, 'Hostel 14 Silicon Ship': 1.827019430657485, 'H13 Night Canteen': 5.471105921109552, 'Hostel 13 House of Titans': 5.471105921109552, 'Mess for hostels 12 | 13 | 14': 1.5420765220960988, 1: 3.112073263919087, 'Amul Parlour': 1.827019430657485}, 'Amul Parlour': {0: 1.827019430657485}, 'Hostel 12 Crown of the Campus': {0: 2.534758371127315}, 'Hostel 14 Silicon Ship': {0: 1.827019430657485}, 'Hostel 13 House of Titans': {0: 5.471105921109552}, 'H13 Night Canteen': {0: 5.471105921109552}, 'Mess for hostels 12 | 13 | 14': {0: 1.5420765220960988}, 1: {0: 3.112073263919087, 2: 2.545780823244609}, 2: {1: 2.545780823244609, 3: 2.0719555979798407, 255: 18.03285889702462}, 'Security Check Point': {255: 1.4577379737113252, 245: 3.8860005146680052}, 3: {2: 2.0719555979798407, 4: 5.07119315348962, 5: 3.2144984056614496}, 4: {3: 5.07119315348962, 'Hostel 06 Vikings': 2.359872877932199, 'Type1 - 22': 3.020761493398643}, 'Type1 - 22': {4: 3.020761493398643}, 'Hostel 06 Vikings': {4: 2.359872877932199}, 5: {3: 3.2144984056614496, 6: 2.6414011433328337}, 6: {5: 2.6414011433328337, 7: 2.198635940759634, 'ATM - Canara Bank near H6': 1.3813037319865606}, 'ATM - Canara Bank near H6': {6: 1.3813037319865606}, 7: {6: 2.198635940759634, 8: 2.0349447166937975}, 8: {7: 2.0349447166937975, 9: 1.1853269591129698, 'Hostel 09 Nawaabon Ki Basti': 3.60568994784632}, 'Hostel 09 Nawaabon Ki Basti': {8: 3.60568994784632}, 9: {8: 1.1853269591129698, 10: 3.6706947571270483, 12: 2.8271894170713074}, 10: {9: 3.6706947571270483, 11: 4.669047011971501}, 11: {10: 4.669047011971501, 'Hostel 18': 4.075904807524337}, 'Hostel 18': {11: 4.075904807524337}, 12: {9: 2.8271894170713074, 13: 3.784309712483903, 'Hostel 17': 2.44826469157238}, 'Hostel 17': {12: 2.44826469157238}, 13: {12: 3.784309712483903, 14: 1.760113632695344, 102: 3.4035275817892234}, 14: {13: 1.760113632695344, 15: 5.70350769263968, 'Chaayos Cafe': 1.2074767078498865}, 'Chaayos Cafe': {14: 1.2074767078498865}, 15: {14: 5.70350769263968, 16: 2.7727242920997393, 17: 3.560056179332006}, 16: {15: 2.7727242920997393, 'Hostel 05 Penthouse': 4.306855001041944}, 'Hostel 05 Penthouse': {16: 4.306855001041944}, 17: {15: 3.560056179332006, 18: 2.6700187265260893, 'Tansa House King of campus (Proj. Staff Boys)': 3.3800887562311144, 'ATM - State Bank near Tansa': 3.0522123124055445}, 'ATM - State Bank near Tansa': {17: 3.0522123124055445}, 'Tansa House King of campus (Proj. Staff Boys)': {17: 3.3800887562311144}, 18: {17: 2.6700187265260893, 19: 2.4041630560342617}, 19: {18: 2.4041630560342617, 20: 2.0719555979798407}, 20: {21: 6.359323863430766, 19: 2.0719555979798407, 'Outdoor Sports Facility': 1.230447073221762, 'Hostel 03 Vitruvians': 3.9824615503479754}, 'Outdoor Sports Facility': {20: 1.230447073221762}, 'Hostel 03 Vitruvians': {20: 3.9824615503479754}, 21: {20: 6.359323863430766, 22: 3.0242354405700627, 'Hostel 02 The Wild Ones': 5.008991914547277, 'Indoor Stadium': 1.5839823231336896, 'Badminton Court': 1.5839823231336896}, 'Badminton Court': {21: 1.5839823231336896}, 'Hostel 02 The Wild Ones': {21: 5.008991914547277}, 'Indoor Stadium': {21: 1.5839823231336896}, 22: {21: 3.0242354405700627, 'Swimming Pool (new)': 2.3119256043393785, 23: 2.316246964380094}, 'Swimming Pool (new)': {22: 2.3119256043393785}, 23: {22: 2.316246964380094, 24: 3.5383612025908264, 25: 3.2144984056614496}, 24: {23: 3.5383612025908264, 'Students Activity Centre': 1.9039432764659772, 'New Yoga Room, SAC': 1.9039432764659772, 'Open Air Theatre': 1.9039432764659772, 'Film Room, SAC': 1.9039432764659772}, 'Film Room, SAC': {24: 1.9039432764659772, 26: 2.760615873315228}, 'Open Air Theatre': {24: 1.9039432764659772, 26: 2.760615873315228}, 'New Yoga Room, SAC': {24: 1.9039432764659772, 26: 2.760615873315228}, 'Students Activity Centre': {24: 1.9039432764659772, 26: 2.760615873315228}, 25: {23: 3.2144984056614496, 26: 3.8268786236304906, 27: 2.545780823244609}, 26: {25: 3.8268786236304906, 'Students Activity Centre': 2.760615873315228, 'New Yoga Room, SAC': 2.760615873315228, 'Open Air Theatre': 2.760615873315228, 'Film Room, SAC': 2.760615873315228}, 27: {25: 2.545780823244609, 28: 2.7741665415039525, 'Hostel 01 Queen of the campus': 2.198635940759634, 'Aromas Canteen': 1.6337074401495515}, 'Hostel 01 Queen of the campus': {27: 2.198635940759634, 'Aromas Canteen': 3.7380476187443095}, 28: {27: 2.7741665415039525, "Domino's outlet": 2.0084820138602186, 29: 1.6161683080669538, 'Aromas Canteen': 2.9740544715926105}, "Domino's outlet": {28: 2.0084820138602186, 34: 1.4453373308677804, 'Aromas Canteen': 1.4286357128393508}, 29: {28: 1.6161683080669538, 30: 5.685156110433556, 34: 3.2919599025504547}, 30: {29: 5.685156110433556, 31: 3.1395859599635108, 'Defence Research & Development Organization': 2.1505813167606567}, 'Defence Research & Development Organization': {30: 2.1505813167606567}, 31: {30: 3.1395859599635108, 32: 4.044007912949726, 192: 3.684155262743415}, 32: {31: 4.044007912949726, 'Hostel 15 Trident': 6.024699162613849, 33: 5.330009380854784, 'Hostel 15 Mess': 5.773820225812369}, 'Hostel 15 Mess': {32: 5.773820225812369}, 'Hostel 15 Trident': {32: 6.024699162613849}, 33: {32: 5.330009380854784, 'Hostel 16 Olympus': 4.440833255144804, 'Hostel 16 Mess': 4.440833255144804}, 'Hostel 16 Mess': {33: 4.440833255144804}, 'Hostel 16 Olympus': {33: 4.440833255144804}, 34: {35: 1.7700282483621554, 29: 3.2919599025504547, "Domino's outlet": 1.4453373308677804}, 35: {34: 1.7700282483621554, 36: 2.2671568097509267, 37: 7.046417529496815, 214: 0.6228964600958975}, 36: {35: 2.2671568097509267, 'State Bank of India Branch': 1.296919426949878, 94: 4.640366364846638}, 'State Bank of India Branch': {36: 1.296919426949878}, 37: {35: 7.046417529496815, 38: 6.155079203389668, 95: 11.327885945753515}, 38: {37: 6.155079203389668, 39: 3.1508728949292766, 'Central Library': 1.103177229641729}, 'Central Library': {38: 1.103177229641729, 40: 2.7613402542968153}, 39: {38: 3.1508728949292766, 40: 3.6002777670618693, 89: 5.330009380854784, 90: 2.44826469157238}, 40: {39: 3.6002777670618693, 41: 1.0, 'Central Library': 2.7613402542968153}, 41: {40: 1.0, 42: 1.1384199576606167, 180: 2.2768399153212333}, 42: {41: 1.1384199576606167, 43: 2.316246964380094, 'Mathematics Department': 2.435159132377184, 'Old Software Lab': 2.435159132377184, 'Inter-disciplinary Programme in Educational Technology': 2.435159132377184, 'Centre for Formal Design and Verification of Software': 2.435159132377184, 'Centre for Distance Engineering Education Programme': 2.435159132377184}, 'Centre for Distance Engineering Education Programme': {42: 2.435159132377184}, 'Centre for Formal Design and Verification of Software': {42: 2.435159132377184}, 'Inter-disciplinary Programme in Educational Technology': {42: 2.435159132377184}, 'Mathematics Department': {42: 2.435159132377184}, 'Old Software Lab': {42: 2.435159132377184}, 43: {42: 2.316246964380094, 44: 2.041568024827975, 'Old Computer Science Engineering Department': 1.8439088914585775, 'New Software Lab': 1.8439088914585775, 'Centre for Technology Alternatives for Rural Areas': 1.8439088914585775}, 'Centre for Technology Alternatives for Rural Areas': {43: 1.8439088914585775}, 'New Software Lab': {43: 1.8439088914585775}, 'Old Computer Science Engineering Department': {43: 1.8439088914585775}, 44: {43: 2.041568024827975, 45: 1.1734564329364767, 89: 4.000499968753906}, 45: {44: 1.1734564329364767, 46: 2.5930676813380713, 47: 3.112073263919087, 'Fluid Mechanics and Fluid Power Lab': 0.623698645180507}, 'Fluid Mechanics and Fluid Power Lab': {45: 0.623698645180507}, 46: {45: 2.5930676813380713, 47: 1.0261578825892241, 48: 2.0329781110479277, 'ENELEK Power Sine': 0.9486832980505138}, 'ENELEK Power Sine': {46: 0.9486832980505138}, 47: {45: 3.112073263919087, 46: 1.0261578825892241}, 48: {46: 2.0329781110479277, 49: 2.167487024182613, 'Tinkerers Lab': 1.066770828247567, 'Refrigeration, A/C and Cryogenics Lab': 1.066770828247567, 'Treelabs': 1.066770828247567, 'N3 Bay': 5.318646444350292}, 'Treelabs': {48: 1.066770828247567}, 'Refrigeration, A/C and Cryogenics Lab': {48: 1.066770828247567}, 'Tinkerers Lab': {48: 1.066770828247567}, 49: {48: 2.167487024182613, 50: 3.382454729926182, 'Mechanical Engineering Department': 5.230774321264492, 'Industrial Engineering and Operations Research': 5.230774321264492}, 'Industrial Engineering and Operations Research': {49: 5.230774321264492}, 'Mechanical Engineering Department': {49: 5.230774321264492}, 50: {49: 3.382454729926182, 51: 1.731184565550421, 52: 1.2445882853377659}, 51: {50: 1.731184565550421, 76: 4.826696592909068, 'Industrial Design Centre': 2.2365151463828723, 'IDC Canteen': 2.2365151463828723, 'IDC Shakti': 2.2365151463828723}, 'IDC Shakti': {51: 2.2365151463828723}, 'IDC Canteen': {51: 2.2365151463828723}, 'Industrial Design Centre': {51: 2.2365151463828723}, 52: {50: 1.2445882853377659, 53: 2.4226019070412703, 76: 7.01519778766073, 178: 9.087133761533392}, 53: {52: 2.4226019070412703, 54: 4.588354824989018, 'Civil Engineering Department': 4.6217961876309515, 'Victor Menezes Convention Centre': 3.063494736408078, 'Centre for Urban Science and Engineering (inside civil)': 4.6217961876309515, 'Inter-disciplinary Programme in Climate Studies': 4.6217961876309515}, 'Inter-disciplinary Programme in Climate Studies': {53: 4.6217961876309515}, 'Centre for Urban Science and Engineering (inside civil)': {53: 4.6217961876309515}, 'Civil Engineering Department': {53: 4.6217961876309515}, 'Victor Menezes Convention Centre': {53: 3.063494736408078}, 54: {53: 4.588354824989018, 55: 1.9677398201998149, 'Electrical Engineering Department': 4.794267410147248, 'Electrical Engineering Annexe Building': 1.0751744044572489}, 'Electrical Engineering Department': {54: 4.794267410147248, 176: 4.331397003277349, 56: 2.110213259365034}, 'Electrical Engineering Annexe Building': {54: 1.0751744044572489, 56: 5.9787958653896185}, 55: {54: 1.9677398201998149, 56: 4.293483434229135, 57: 2.0523157651784483}, 56: {55: 4.293483434229135, 'Girish Gaitonde Building': 2.5849564793241684, 'Electrical Engineering Department': 2.110213259365034, 'Electrical Engineering Annexe Building': 5.9787958653896185}, 'Girish Gaitonde Building': {175: 2.568462575160479, 56: 2.5849564793241684}, 57: {174: 9.530424964291992, 55: 2.0523157651784483, 58: 2.1783020910791966, 'Seminar Hall': 1.8804254837669054, 'Rock Powdering Lab': 2.850438562747845, 'Rock Cutting Lab': 2.850438562747845}, 'Seminar Hall': {57: 1.8804254837669054}, 'Rock Cutting Lab': {57: 2.850438562747845}, 'Rock Powdering Lab': {57: 2.850438562747845}, 58: {57: 2.1783020910791966, 59: 3.9802009999496257, 'Metallurgical Engineering and Material Science Department': 5.603302597575826, 'Corrosion Science Paint Lab': 5.603302597575826, 'Corrosion Lab 1': 5.603302597575826, 'Humanities and Social Sciences Department': 4.119465984809196, 'Aerospace Engineering Annexe': 4.119465984809196, 'Inter-disciplinary Programme in Corrosion Science & Engineering': 5.603302597575826, 'Aqueous Corrosion Lab': 5.603302597575826}, 'Aqueous Corrosion Lab': {58: 5.603302597575826, 173: 4.494441010848846}, 'Inter-disciplinary Programme in Corrosion Science & Engineering': {58: 5.603302597575826, 173: 4.494441010848846}, 'Metallurgical Engineering and Material Science Department': {58: 5.603302597575826, 173: 4.494441010848846}, 'Corrosion Lab 1': {58: 5.603302597575826, 173: 4.494441010848846}, 'Corrosion Science Paint Lab': {58: 5.603302597575826, 173: 4.494441010848846}, 'Humanities and Social Sciences Department': {58: 4.119465984809196}, 'Aerospace Engineering Annexe': {58: 4.119465984809196}, 59: {58: 3.9802009999496257, 60: 3.805522303179946, 'Lecture Hall Complex - 1 & 2': 4.551263560814733, 'LT 001': 4.551263560814733, 'LT 002': 4.551263560814733, 'LT 003': 4.551263560814733, 'LT 004': 4.551263560814733, 'LT 005': 4.551263560814733, 'LT 006': 4.551263560814733, 'LT 101': 4.551263560814733, 'LT 102': 4.551263560814733, 'LT 103': 4.551263560814733, 'LT 104': 4.551263560814733, 'LT 105': 4.551263560814733, 'LT 106': 4.551263560814733, 'LT 201': 4.551263560814733, 'LT 202': 4.551263560814733, 'LT 203': 4.551263560814733, 'LT 204': 4.551263560814733, 'LT 205': 4.551263560814733, 'LT 206': 4.551263560814733, 'LT 301': 4.551263560814733, 'LT 302': 4.551263560814733, 'LT 303': 4.551263560814733, 'LT 304': 4.551263560814733, 'LT 305': 4.551263560814733, 'LT 306': 4.551263560814733, 'LC 001': 4.551263560814733, 'LC 002': 4.551263560814733, 'LC 101': 4.551263560814733, 'LC 102': 4.551263560814733, 'LC 201': 4.551263560814733, 'LC 202': 4.551263560814733, 'LC 301': 4.551263560814733, 'LC 302': 4.551263560814733, 'LH 101': 4.551263560814733, 'LH 102': 4.551263560814733, 'LH 301': 4.551263560814733, 'LH 302': 4.551263560814733, 'LA 001': 2.438237068047322, 'LA 002': 2.438237068047322, 'LA 201': 2.438237068047322, 'LA 202': 2.438237068047322, 'Lecture Hall Complex - 3': 2.438237068047322, 'WRCBB Wadhwani Research Centre in Biosciences and Bioengineering ': 7.383562825628289, 'Biosciences and Bioengineering Department': 7.383562825628289}, 'Biosciences and Bioengineering Department': {59: 7.383562825628289}, 'WRCBB Wadhwani Research Centre in Biosciences and Bioengineering ': {59: 7.383562825628289}, 'LH 302': {59: 4.551263560814733, 172: 5.116346352623129}, 'LH 301': {59: 4.551263560814733, 172: 5.116346352623129}, 'LH 102': {59: 4.551263560814733, 172: 5.116346352623129}, 'LH 101': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 302': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 301': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 202': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 201': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 102': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 101': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 002': {59: 4.551263560814733, 172: 5.116346352623129}, 'LC 001': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 001': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 306': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 305': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 304': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 303': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 302': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 301': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 206': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 205': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 204': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 203': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 202': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 201': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 106': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 105': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 104': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 103': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 102': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 101': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 006': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 005': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 004': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 003': {59: 4.551263560814733, 172: 5.116346352623129}, 'LT 002': {59: 4.551263560814733, 172: 5.116346352623129}, 'Lecture Hall Complex - 1 & 2': {59: 4.551263560814733, 172: 5.116346352623129}, 'LA 202': {59: 2.438237068047322}, 'LA 201': {59: 2.438237068047322}, 'LA 002': {59: 2.438237068047322}, 'LA 001': {59: 2.438237068047322}, 'Lecture Hall Complex - 3': {59: 2.438237068047322}, 60: {59: 3.805522303179946, 61: 2.0349447166937975, 'Physics Department': 4.780167361086848, 'Chemical Engineering Department': 5.520144925633747, 'Chemistry Department': 5.520144925633747}, 'Physics Department': {60: 4.780167361086848, 171: 4.7611973284038545}, 'Chemistry Department': {60: 5.520144925633747, 67: 8.937561188601732}, 'Chemical Engineering Department': {60: 5.520144925633747, 67: 8.937561188601732}, 61: {60: 2.0349447166937975, 62: 1.9677398201998149, 161: 2.545780823244609}, 62: {61: 1.9677398201998149, 63: 1.6760071598892412}, 63: {62: 1.6760071598892412, 64: 13.195188517031502, 160: 6.325345840347388}, 64: {63: 13.195188517031502, 65: 2.5793410011086166, 181: 5.060632371551998}, 65: {64: 2.5793410011086166, 66: 2.0523157651784483, 'DESE & CESE New Building': 3.623534186398688, 'Cafe Coffee Day': 3.761914406256474, 'Energy Science and Engineering (New Building)': 3.623534186398688}, 'Energy Science and Engineering (New Building)': {65: 3.623534186398688}, 'DESE & CESE New Building': {65: 3.623534186398688}, 'Cafe Coffee Day': {65: 3.761914406256474}, 66: {65: 2.0523157651784483, 67: 2.041568024827975, 70: 12.877926851787908}, 67: {66: 2.041568024827975, 68: 7.799102512468983, 'Chemical Engineering Department': 8.937561188601732, 'Chemistry Department': 8.937561188601732}, 68: {67: 7.799102512468983, 69: 4.456007181322759, 'Aerospace Engineering Department': 1.5646085772486358, 'Centre for Aerospace Systems Design and Engineering': 1.5646085772486358}, 'Centre for Aerospace Systems Design and Engineering': {68: 1.5646085772486358}, 'Aerospace Engineering Department': {68: 1.5646085772486358}, 69: {68: 4.456007181322759, 'ONGC Research Centre': 1.580506248010428, 71: 2.44826469157238}, 'ONGC Research Centre': {69: 1.580506248010428}, 70: {66: 12.877926851787908, 71: 1.4453373308677804, 'Proposed Building for Tata Centre for Technology': 3.2534596969994882, 'Proposed NCAIR': 3.2534596969994882, 'Proposed Bio Mechanical Department': 3.2534596969994882, 'Proposed D.S Foundation': 3.2534596969994882, 'Proposed Press ': 3.2534596969994882}, 'Proposed Press ': {70: 3.2534596969994882}, 'Proposed D.S Foundation': {70: 3.2534596969994882}, 'Proposed Bio Mechanical Department': {70: 3.2534596969994882}, 'Proposed NCAIR': {70: 3.2534596969994882}, 'Proposed Building for Tata Centre for Technology': {70: 3.2534596969994882}, 71: {70: 1.4453373308677804, 72: 4.655534340975265, 69: 2.44826469157238}, 72: {71: 4.655534340975265, 73: 1.7700282483621554, 'Energy Science and Engineering': 1.6772000476985445}, 'Energy Science and Engineering': {72: 1.6772000476985445}, 73: {72: 1.7700282483621554, 74: 0.9, 'Earth Science Department': 4.228001892147164}, 'Earth Science Department': {73: 4.228001892147164}, 74: {73: 0.9, 75: 2.980771712157776, 'Centre of Studies in Resources Engineering': 2.1095023109728985, 'Society for Innovation and Entrepreneurship': 2.1095023109728985}, 'Society for Innovation and Entrepreneurship': {74: 2.1095023109728985}, 'Centre of Studies in Resources Engineering': {74: 2.1095023109728985}, 75: {74: 2.980771712157776, 76: 3.27566787083184, 'Centre for Environmental Science and Engineering': 3.992117232747556}, 'Centre for Environmental Science and Engineering': {75: 3.992117232747556}, 76: {75: 3.27566787083184, 51: 4.826696592909068, 52: 7.01519778766073, 77: 2.198635940759634, 'Non- Academic Staff Association': 2.0523157651784483, 'Printing Press': 2.0523157651784483}, 'Printing Press': {76: 2.0523157651784483}, 'Non- Academic Staff Association': {76: 2.0523157651784483}, 77: {76: 2.198635940759634, 78: 4.901632381156302, 'Structural integrity Testing and Analysis Centre': 2.166333307688362, 'S3 Bay': 2.76278844647939}, 'S3 Bay': {77: 2.76278844647939}, 'Structural integrity Testing and Analysis Centre': {77: 2.166333307688362, 82: 6.654697588921679}, 78: {77: 4.901632381156302, 79: 4.401136216933078, 'Electrical Maintenence': 2.4331050121192876, 'Machine Tool Lab': 3.7105255692421797}, 'Machine Tool Lab': {79: 4.65123639476645, 78: 3.7105255692421797}, 'Electrical Maintenence': {78: 2.4331050121192876}, 79: {78: 4.401136216933078, 80: 3.430014577228499, 'Machine Tool Lab': 4.65123639476645, 'OrthoCad Lab': 2.9313819266687173, 'Micro Fluidics Lab': 2.5045957757690163, 'RM Lab (Rapid manufacturing)': 3.0220853727186467, 'S1 Bay': 2.2614154859291116, 'N1 Bay': 2.012212712413874, 'Supercritical fluid Processing facility (Chemical Engg.)': 2.2614154859291116, 'S2 Bay': 4.65123639476645, 'UG Lab / S2 Bay': 4.65123639476645, 'Fuel Cell Research Facility': 2.012212712413874}, 'Fuel Cell Research Facility': {79: 2.012212712413874, 80: 3.161012496020856, 82: 2.2147234590350102}, 'UG Lab / S2 Bay': {79: 4.65123639476645}, 'S2 Bay': {79: 4.65123639476645}, 'Supercritical fluid Processing facility (Chemical Engg.)': {79: 2.2614154859291116}, 'N1 Bay': {79: 2.012212712413874}, 'S1 Bay': {79: 2.2614154859291116}, 'RM Lab (Rapid manufacturing)': {79: 3.0220853727186467}, 'OrthoCad Lab': {79: 2.9313819266687173}, 'Micro Fluidics Lab': {79: 2.5045957757690163}, 80: {79: 3.430014577228499, 81: 2.3910248848558644, 82: 3.5300141642775316, 'Fuel Cell Research Facility': 3.161012496020856}, 81: {185: 2.7727242920997393, 80: 2.3910248848558644, 'Physics Lab (Ist Years)': 1.1353413583587977, 'UG Lab (1st years)': 1.1353413583587977, 'Power House': 2.5117722826721374}, 'UG Lab (1st years)': {81: 1.1353413583587977, 82: 3.1976553910638965}, 'Physics Lab (Ist Years)': {81: 1.1353413583587977, 82: 3.1976553910638965}, 'Power House': {81: 2.5117722826721374}, 82: {80: 3.5300141642775316, 83: 3.4311805548528045, 'UG Lab (1st years)': 3.1976553910638965, 'Physics Lab (Ist Years)': 3.1976553910638965, 'Structural integrity Testing and Analysis Centre': 6.654697588921679, 'Fuel Cell Research Facility': 2.2147234590350102}, 83: {82: 3.4311805548528045, 84: 1.822361105818493, 'SMAmL Suman Mashruwala Advanced Microengineering Lab': 1.0530906893520615, 'Thermal Hydraulic Test Facility': 2.54911749434976, 'N2 Bay': 2.70129598526337, 'N3 Bay': 2.195449840010015}, 'N3 Bay': {48: 5.318646444350292, 83: 2.195449840010015}, 'N2 Bay': {83: 2.70129598526337}, 'SMAmL Suman Mashruwala Advanced Microengineering Lab': {83: 1.0530906893520615}, 'Thermal Hydraulic Test Facility': {83: 2.54911749434976}, 84: {83: 1.822361105818493, 85: 4.349022878762539, 'Cummins Engine Research facility': 0.806225774829855, 'Heat Transfer and Thermodynamic Lab': 0.9433981132056604, 'Steam Power Lab': 1.0890362712049586, 'IC Engine and Combustion Lab': 2.1272047386182646}, 'IC Engine and Combustion Lab': {84: 2.1272047386182646, 85: 2.606338427756457}, 'Steam Power Lab': {84: 1.0890362712049586}, 'Cummins Engine Research facility': {84: 0.806225774829855}, 'Heat Transfer and Thermodynamic Lab': {84: 0.9433981132056604}, 85: {84: 4.349022878762539, 88: 2.5930676813380713, 86: 3.430014577228499, 'Metal Forming Lab': 2.558906016249913, 'Old ONGC Lab': 1.8160396471443017, 'Structural Evaluation & Material Technologies Lab': 1.6876018487783189, 'Heavy Structure Lab': 3.3366150512158277, 'Hydraulics Lab': 1.0922453936730518, 'Concrete Technology Lab': 3.3366150512158277, 'IC Engine and Combustion Lab': 2.606338427756457}, 'Concrete Technology Lab': {85: 3.3366150512158277}, 'Hydraulics Lab': {85: 1.0922453936730518, 88: 2.1644860821913365}, 'Heavy Structure Lab': {85: 3.3366150512158277}, 'Structural Evaluation & Material Technologies Lab': {85: 1.6876018487783189}, 'Old ONGC Lab': {85: 1.8160396471443017}, 86: {85: 3.430014577228499, 87: 2.2452171387195494, 'Geotechnical Engg. Lab': 0.4049691346263318, 'Metal Forming Lab': 1.1700427342623003}, 'Metal Forming Lab': {86: 1.1700427342623003, 85: 2.558906016249913}, 'Geotechnical Engg. Lab': {86: 0.4049691346263318}, 87: {86: 2.2452171387195494, 'National Geotechnical Centrifuge Facility': 1.2349089035228469, 'Vihar House': 6.230971031869752, 'GMFL Lab / Geophysical and multiphase Flows Lab': 5.591511423577708}, 'GMFL Lab / Geophysical and multiphase Flows Lab': {87: 5.591511423577708}, 'Vihar House': {87: 6.230971031869752}, 'National Geotechnical Centrifuge Facility': {87: 1.2349089035228469}, 88: {85: 2.5930676813380713, 'Solar Lab': 3.3889526405661083, 89: 1.731184565550421, 'Heat Pump Lab': 1.118033988749895, 'Hydraulics Lab Workshop': 1.9849433241279208, 'Hydraulics Lab': 2.1644860821913365, 'Hydraulics Lab (New)': 1.372953021774598}, 'Hydraulics Lab (New)': {88: 1.372953021774598, 89: 1.0751744044572489}, 'Hydraulics Lab Workshop': {88: 1.9849433241279208}, 'Solar Lab': {88: 3.3889526405661083}, 'Heat Pump Lab': {88: 1.118033988749895}, 89: {44: 4.000499968753906, 88: 1.731184565550421, 39: 5.330009380854784, 'Hydraulics Lab (New)': 1.0751744044572489}, 90: {91: 2.8017851452243803, 39: 2.44826469157238, 'Inter-disciplinary Programme in Systems and Control Engineering': 1.4310835055998654}, 'Inter-disciplinary Programme in Systems and Control Engineering': {90: 1.4310835055998654}, 91: {90: 2.8017851452243803, 92: 1.880957203128237, 'NanoTech. & Science Research Centre': 1.9227584351654787, 'Advanced Centre for Research in Electronics': 1.9227584351654787, 'Sophisticated Analytical Instruments Facility': 1.9227584351654787}, 'Sophisticated Analytical Instruments Facility': {91: 1.9227584351654787}, 'Advanced Centre for Research in Electronics': {91: 1.9227584351654787}, 'NanoTech. & Science Research Centre': {91: 1.9227584351654787}, 92: {91: 1.880957203128237, 93: 3.0242354405700627, 211: 1.2445882853377659, 213: 3.1395859599635108, 212: 1.0089598604503551}, 93: {92: 3.0242354405700627, 94: 1.7076299364909249, 213: 0.28460498941515416}, 94: {93: 1.7076299364909249, 213: 1.731184565550421, 214: 1.7700282483621554, 36: 4.640366364846638}, 95: {96: 2.44826469157238, 169: 4.186287137786896, 37: 11.327885945753515}, 96: {95: 2.44826469157238, 'NCC Office': 4.343500892137586, 97: 4.59847800908083, 'Squash Court': 4.775143976886979}, 'Squash Court': {96: 4.775143976886979, 97: 3.006659275674582}, 'NCC Office': {96: 4.343500892137586}, 97: {96: 4.59847800908083, 98: 3.382454729926182, 'Staff Hostel': 9.135972854600654, 'Squash Court': 3.006659275674582}, 'Staff Hostel': {97: 9.135972854600654}, 98: {97: 3.382454729926182, 99: 1.7700282483621554, 101: 2.623928352680385, 'Hostel 11 Athena (Girls Hostel)': 2.9698484809834995, 'Printing and photocopying H11': 2.9698484809834995}, 'Printing and photocopying H11': {98: 2.9698484809834995}, 'Hostel 11 Athena (Girls Hostel)': {98: 2.9698484809834995}, 99: {98: 1.7700282483621554, 100: 2.6414011433328337, 'Basketball Court': 1.5063200191194432}, 'Basketball Court': {99: 1.5063200191194432}, 100: {99: 2.6414011433328337, 'Hockey Ground': 4.741307836451879, 'Gymkhana Grounds': 3.1465854509293085}, 'Hockey Ground': {100: 4.741307836451879}, 'Gymkhana Grounds': {100: 3.1465854509293085}, 101: {98: 2.623928352680385, 102: 5.378196723809943, 'Gymkhana Building': 1.9300259065618783, 'Brewberrys Cafe': 1.296919426949878}, 'Gymkhana Building': {101: 1.9300259065618783}, 'Brewberrys Cafe': {101: 1.296919426949878}, 102: {101: 5.378196723809943, 13: 3.4035275817892234, 103: 7.319357895334809}, 103: {102: 7.319357895334809, 104: 1.9677398201998149}, 104: {103: 1.9677398201998149, 105: 1.731184565550421}, 105: {104: 1.731184565550421, 106: 7.202221879392497}, 106: {105: 7.202221879392497, 107: 1.6949926253526888}, 107: {106: 1.6949926253526888, 108: 1.5211837495845135}, 108: {107: 1.5211837495845135, 109: 1.8952572384771413}, 109: {108: 1.8952572384771413, 110: 3.5700140055747682}, 110: {109: 3.5700140055747682, 111: 1.4916433890176297}, 111: {110: 1.4916433890176297, 112: 3.560056179332006, 115: 1.2445882853377659}, 112: {111: 3.560056179332006, 113: 3.383637096380166}, 113: {112: 3.383637096380166, 114: 6.538654295801239}, 114: {113: 6.538654295801239, 'Boat House': 4.870523585817033}, 'Boat House': {114: 4.870523585817033}, 115: {111: 1.2445882853377659, 116: 2.041568024827975}, 116: {115: 2.041568024827975, 117: 1.4230249470757708}, 117: {116: 1.4230249470757708, 118: 1.1734564329364767}, 118: {117: 1.1734564329364767, 119: 4.653815638806505}, 119: {118: 4.653815638806505, 120: 1.0}, 120: {119: 1.0, 121: 1.1734564329364767}, 121: {120: 1.1734564329364767, 122: 1.0261578825892241, 'National Centre for Mathematics': 1.4710540438746633}, 122: {121: 1.0261578825892241, 123: 16.343959128681153, 'Guest House/Padmavihar': 2.3214219780126144}, 'Guest House/Padmavihar': {122: 2.3214219780126144}, 'National Centre for Mathematics': {121: 1.4710540438746633}, 123: {122: 16.343959128681153, 124: 1.7700282483621554, 138: 4.518517455980446, 'Type B-14': 2.6879360111431225, 'Guest House / Jalvihar': 6.20354737227016}, 'Guest House / Jalvihar': {123: 6.20354737227016}, 'Type B-14': {123: 2.6879360111431225}, 124: {123: 1.7700282483621554, 125: 4.470011185668332}, 125: {124: 4.470011185668332, 126: 4.518517455980446}, 126: {125: 4.518517455980446, 127: 15.53270742658858, 135: 5.397962578603153, 'Type B-13': 3.575611835756225}, 'Type B-13': {126: 3.575611835756225}, 127: {126: 15.53270742658858, 128: 5.692538976590323, 'Proposed TypeA Building': 4.570557952810575}, 'Proposed TypeA Building': {127: 4.570557952810575}, 128: {127: 5.692538976590323, 129: 3.6808966298987533}, 129: {128: 3.6808966298987533, 130: 7.935048834128244, 193: 5.733149221850065, 'B 19 Old Multistoried Building- Residence ': 4.692973471052229}, 'B 19 Old Multistoried Building- Residence ': {129: 4.692973471052229}, 130: {129: 7.935048834128244, 131: 1.4042791745233567, 'White House': 5.517698795693726}, 'White House': {130: 5.517698795693726}, 131: {130: 1.4042791745233567, 132: 4.224807687930896, 'CTR 20': 2.000249984376953}, 'CTR 20': {131: 2.000249984376953}, 132: {131: 4.224807687930896, 133: 9.713753136661442, 'CTR 19': 2.040833163195855, 'Bungalow A10 ': 4.08166632639171}, 'Bungalow A10 ': {132: 4.08166632639171, 133: 6.646878966853541}, 'CTR 19': {132: 2.040833163195855}, 133: {132: 9.713753136661442, 134: 1.4916433890176297, 'Bungalow A11 ': 3.508275929855005, 'Bungalow A10 ': 6.646878966853541, 'Bungalow A8 ': 6.26258732474047}, 'Bungalow A8 ': {133: 6.26258732474047, 153: 10.713589501189599}, 134: {133: 1.4916433890176297, 135: 11.502738804302219, 153: 7.340844638050855, 'Shishu Vihar': 4.2901048938225275, 'Bungalow A5 ': 4.350287346831241, 'Bungalow A11 ': 3.645408070436011}, 'Bungalow A11 ': {133: 3.508275929855005, 134: 3.645408070436011}, 'Bungalow A5 ': {134: 4.350287346831241, 153: 3.634969050762331}, 'Shishu Vihar': {134: 4.2901048938225275, 153: 3.6206353033687333}, 135: {134: 11.502738804302219, 136: 9.79025025216414, 126: 5.397962578603153, 'A1 Director Bungalow': 7.410802925459562}, 'A1 Director Bungalow': {135: 7.410802925459562, 136: 3.7890632087628204, 155: 5.3615296324836255, 154: 5.123377792043057}, 136: {135: 9.79025025216414, 137: 2.316246964380094, 155: 5.403794962801605, 'Type B-1': 2.2908513701242166, 'Bungalow A13 ': 2.27771815640127, 'A1 Director Bungalow': 3.7890632087628204}, 'Bungalow A13 ': {136: 2.27771815640127}, 'Type B-1': {136: 2.2908513701242166}, 137: {136: 2.316246964380094, 138: 1.2727922061357855}, 138: {137: 1.2727922061357855, 139: 6.175597137119616, 123: 4.518517455980446}, 139: {138: 6.175597137119616, 140: 1.6760071598892412}, 140: {139: 1.6760071598892412, 141: 4.82265487050442}, 141: {140: 4.82265487050442, 142: 6.957082721946032, 157: 3.2919599025504547, 'Guest House/Vanvihar': 3.216364407215078}, 'Guest House/Vanvihar': {141: 3.216364407215078}, 142: {141: 6.957082721946032, 143: 3.9802009999496257, 162: 3.6585516259853432, 'Gulmohar Garden Cafetaria': 2.3759208741033446, 'Staff Club': 3.9654760117796704}, 'Staff Club': {142: 3.9654760117796704}, 143: {142: 3.9802009999496257, 144: 5.771828133269389, 'Hospital': 4.228001892147164}, 'Hospital': {143: 4.228001892147164}, 144: {143: 5.771828133269389, 145: 0.8538149682454624, 166: 3.4896991274320484}, 145: {144: 0.8538149682454624, 146: 1.420211251891774}, 146: {145: 1.420211251891774, 147: 5.530461101933545, 152: 3.382454729926182}, 147: {146: 5.530461101933545, 148: 2.041568024827975, 'Kshitij Udyan': 4.846648326421054}, 'Kshitij Udyan': {147: 4.846648326421054}, 148: {147: 2.041568024827975, 149: 2.263183598385248}, 149: {148: 2.263183598385248, 150: 2.6700187265260893, 'Tennis Court (new)': 7.513321502504734}, 'Tennis Court (new)': {149: 7.513321502504734}, 150: {149: 2.6700187265260893, 151: 2.041568024827975}, 151: {152: 1.4512063946937388, 150: 2.041568024827975, 169: 2.430020576044573}, 152: {151: 1.4512063946937388, 168: 2.167487024182613, 146: 3.382454729926182, 'Convocation Hall': 3.4539832078341086, 'Institute Music Room': 3.4539832078341086}, 'Institute Music Room': {152: 3.4539832078341086}, 'Convocation Hall': {152: 3.4539832078341086}, 153: {134: 7.340844638050855, 154: 8.926925562588723, 'Main Gate no. 2': 11.7957619508025, 'Shishu Vihar': 3.6206353033687333, 'Bungalow A5 ': 3.634969050762331, 'ATM - State Bank Main Gate': 13.127261709892128, 'Bungalow A8 ': 10.713589501189599}, 'ATM - State Bank Main Gate': {153: 13.127261709892128}, 'Main Gate no. 2': {153: 11.7957619508025}, 154: {153: 8.926925562588723, 155: 8.968890678339212, 'A1 Director Bungalow': 5.123377792043057}, 155: {136: 5.403794962801605, 154: 8.968890678339212, 156: 6.980329505116503, 'Hostel 10 Annexe (Girls Hostel)': 4.018084120572888, 'A1 Director Bungalow': 5.3615296324836255}, 'Hostel 10 Annexe (Girls Hostel)': {155: 4.018084120572888}, 156: {155: 6.980329505116503, 157: 2.39269722280108, 'Hostel 10 Phoenix (Girls Hostel)': 2.5909457732650445}, 'Hostel 10 Phoenix (Girls Hostel)': {156: 2.5909457732650445}, 157: {156: 2.39269722280108, 158: 1.587765725792064, 141: 3.2919599025504547}, 158: {157: 1.587765725792064, 162: 6.006163500938015, 159: 12.385031287808683, 'Gulmohar Building': 2.4135036772294343, 'Gulmohar Garden Cafetaria': 3.0909545451203257, 'ATM - Canara Bank near Gulmohar': 2.4135036772294343, 'Gulmohar Restaurant': 2.4135036772294343}, 'Gulmohar Restaurant': {158: 2.4135036772294343}, 'ATM - Canara Bank near Gulmohar': {158: 2.4135036772294343}, 'Gulmohar Garden Cafetaria': {162: 3.9115214431215892, 142: 2.3759208741033446, 158: 3.0909545451203257}, 'Gulmohar Building': {158: 2.4135036772294343}, 159: {158: 12.385031287808683, 160: 1.981161275615895, 171: 4.527471700629392}, 160: {159: 1.981161275615895, 161: 2.279034883453959, 63: 6.325345840347388, 253: 12.683256679575637}, 161: {160: 2.279034883453959, 61: 2.545780823244609}, 162: {142: 3.6585516259853432, 158: 6.006163500938015, 163: 3.784309712483903, 'Gulmohar Garden Cafetaria': 3.9115214431215892}, 163: {162: 3.784309712483903, 164: 2.4041630560342617, 'Faqir Chand Kohli Auditorium': 3.5701540583005658, 'Kanwal Rekhi School of Information Technology': 3.5701540583005658, 'KReSIT Canteen': 3.5701540583005658}, 'KReSIT Canteen': {163: 3.5701540583005658, 172: 3.544573317058063}, 'Kanwal Rekhi School of Information Technology': {163: 3.5701540583005658, 172: 3.544573317058063}, 'Faqir Chand Kohli Auditorium': {163: 3.5701540583005658, 172: 3.544573317058063}, 'Computer Centre': {164: 3.842004685057008, 173: 2.6819768828235637}, 164: {163: 2.4041630560342617, 165: 2.7951744131627994, 'Computer Centre': 3.842004685057008}, 165: {164: 2.7951744131627994, 166: 1.2445882853377659, 174: 6.240032051199737}, 166: {165: 1.2445882853377659, 167: 1.8, 144: 3.4896991274320484, 'School of Management': 3.890115679513914, 'Industrial Research & Consultancy Centre': 3.890115679513914}, 'Industrial Research & Consultancy Centre': {175: 3.2893768406797053, 166: 3.890115679513914}, 'School of Management': {175: 3.2893768406797053, 166: 3.890115679513914}, 167: {166: 1.8, 168: 4.013103537164223, 'Chaayos Near SOM': 121.87791022166404}, 168: {167: 4.013103537164223, 152: 2.167487024182613, 169: 1.981161275615895, 170: 2.828780656042458, 'Chaayos Near SOM': 120.84622459969529}, 'Chaayos Near SOM': {167: 121.87791022166404, 168: 120.84622459969529}, 169: {168: 1.981161275615895, 95: 4.186287137786896, 151: 2.430020576044573}, 170: {168: 2.828780656042458, 'Main Building': 3.782591704109763, 'Joint Admission Test for M.Sc. Office': 3.782591704109763, 'Printing and photocopying Main Building': 3.782591704109763, 'Hostel Coordinating Unit': 3.782591704109763}, 'Hostel Coordinating Unit': {170: 3.782591704109763, 179: 1.6155494421403511}, 'Printing and photocopying Main Building': {170: 3.782591704109763, 179: 1.6155494421403511}, 'Joint Admission Test for M.Sc. Office': {170: 3.782591704109763, 179: 1.6155494421403511}, 'Main Building': {170: 3.782591704109763, 179: 1.6155494421403511}, 171: {172: 4.000499968753906, 159: 4.527471700629392, 'Physics Department': 4.7611973284038545}, 172: {171: 4.000499968753906, 173: 4.000499968753906, 'Kanwal Rekhi School of Information Technology': 3.544573317058063, 'KReSIT Canteen': 3.544573317058063, 'Faqir Chand Kohli Auditorium': 3.544573317058063, 'Lecture Hall Complex - 1 & 2': 5.116346352623129, 'LT 001': 5.116346352623129, 'LT 002': 5.116346352623129, 'LT 003': 5.116346352623129, 'LT 004': 5.116346352623129, 'LT 005': 5.116346352623129, 'LT 006': 5.116346352623129, 'LT 101': 5.116346352623129, 'LT 102': 5.116346352623129, 'LT 103': 5.116346352623129, 'LT 104': 5.116346352623129, 'LT 105': 5.116346352623129, 'LT 106': 5.116346352623129, 'LT 201': 5.116346352623129, 'LT 202': 5.116346352623129, 'LT 203': 5.116346352623129, 'LT 204': 5.116346352623129, 'LT 205': 5.116346352623129, 'LT 206': 5.116346352623129, 'LT 301': 5.116346352623129, 'LT 302': 5.116346352623129, 'LT 303': 5.116346352623129, 'LT 304': 5.116346352623129, 'LT 305': 5.116346352623129, 'LT 306': 5.116346352623129, 'LC 001': 5.116346352623129, 'LC 002': 5.116346352623129, 'LC 101': 5.116346352623129, 'LC 102': 5.116346352623129, 'LC 201': 5.116346352623129, 'LC 202': 5.116346352623129, 'LC 301': 5.116346352623129, 'LC 302': 5.116346352623129, 'LH 101': 5.116346352623129, 'LH 102': 5.116346352623129, 'LH 301': 5.116346352623129, 'LH 302': 5.116346352623129}, 173: {172: 4.000499968753906, 174: 2.980771712157776, 'Computer Centre': 2.6819768828235637, 'Metallurgical Engineering and Material Science Department': 4.494441010848846, 'Corrosion Science Paint Lab': 4.494441010848846, 'Corrosion Lab 1': 4.494441010848846, 'Inter-disciplinary Programme in Corrosion Science & Engineering': 4.494441010848846, 'Aqueous Corrosion Lab': 4.494441010848846}, 174: {173: 2.980771712157776, 175: 1.6099689437998486, 165: 6.240032051199737, 57: 9.530424964291992}, 175: {174: 1.6099689437998486, 176: 2.980771712157776, 'Girish Gaitonde Building': 2.568462575160479, 'School of Management': 3.2893768406797053, 'Industrial Research & Consultancy Centre': 3.2893768406797053}, 176: {175: 2.980771712157776, 177: 2.2228360263411244, 'Electrical Engineering Department': 4.331397003277349, 'Cafe 92': 1.587765725792064}, 'Cafe 92': {176: 1.587765725792064}, 177: {176: 2.2228360263411244, 178: 3.9760533195620003, 'PC Saxena Auditorium / Lecture Theatre': 1.91049731745428}, 'PC Saxena Auditorium / Lecture Theatre': {177: 1.91049731745428}, 178: {179: 3.93459019467085, 177: 3.9760533195620003, 52: 9.087133761533392, 180: 3.430014577228499}, 179: {178: 3.93459019467085, 'Main Building': 1.6155494421403511, 'Joint Admission Test for M.Sc. Office': 1.6155494421403511, 'Printing and photocopying Main Building': 1.6155494421403511, 'Hostel Coordinating Unit': 1.6155494421403511}, 180: {41: 2.2768399153212333, 178: 3.430014577228499}, 181: {64: 5.060632371551998, 182: 2.0523157651784483, 'Kendriya Vidyalaya ': 1.6376812876747417}, 'Kendriya Vidyalaya ': {181: 1.6376812876747417}, 182: {181: 2.0523157651784483, 183: 3.034633421024688, 'Medical Store': 3.3712015662075148, 'Uphar': 5.015974481593781}, 'Medical Store': {182: 3.3712015662075148}, 'Uphar': {182: 5.015974481593781}, 183: {184: 2.4226019070412703, 182: 3.034633421024688, 'Post Office': 2.3345235059857505}, 'Post Office': {183: 2.3345235059857505}, 184: {183: 2.4226019070412703, 'Market Gate, Y point Gate no. 3': 1.91049731745428, 249: 5.692538976590323}, 'Market Gate, Y point Gate no. 3': {184: 1.91049731745428}, 185: {81: 2.7727242920997393, 186: 6.006163500938015, 'Hostel 10A QIP (Girls Hostel)': 2.818865019826242}, 'Hostel 10A QIP (Girls Hostel)': {185: 2.818865019826242}, 186: {185: 6.006163500938015, 187: 4.000499968753906, 201: 0.0}, 187: {186: 4.000499968753906, 226: 0.8700574693662483, 225: 0.6363961030678927, 'QIP 2': 1.793599732381782}, 'QIP 2': {225: 1.329661611087573, 187: 1.793599732381782}, 188: {189: 6.175597137119616, 'K-Yantra Lab (CSE Dept.)': 2.2487774456357394, 231: 0.28460498941515416, 228: 2.4226019070412703}, 'K-Yantra Lab (CSE Dept.)': {231: 2.5079872407968904, 188: 2.2487774456357394}, 189: {188: 6.175597137119616, 190: 1.4512063946937388, 232: 4.224807687930896, 'Tulsi B': 1.528397853963424, 'B 22 Ananta': 4.420407221060069}, 'B 22 Ananta': {189: 4.420407221060069}, 'Tulsi B': {189: 1.528397853963424}, 190: {189: 1.4512063946937388, 191: 1.7, 'Tulsi A': 1.188696765369537, 'Sameer Hill': 12.108055170009756}, 'Sameer Hill': {190: 12.108055170009756}, 'Tulsi A': {190: 1.188696765369537}, 191: {190: 1.7, 192: 5.426232578870906, 'B 23 Aravali': 2.5394881374009213, 'Society for Applied Microwave Electronics Engineering & Research': 3.6173194495371845}, 'Society for Applied Microwave Electronics Engineering & Research': {191: 3.6173194495371845}, 'B 23 Aravali': {234: 4.870831551183022, 191: 2.5394881374009213}, 192: {191: 5.426232578870906, 31: 3.684155262743415, 247: 5.9605368885696866}, 193: {129: 5.733149221850065, 194: 5.656854249492381}, 194: {193: 5.656854249492381, 195: 2.5298221281347035}, 195: {194: 2.5298221281347035, 196: 6.694475334184151}, 196: {195: 6.694475334184151, 197: 5.796723212298479, 'Lake Side Gate no. 1': 7.727483419587518}, 'Lake Side Gate no. 1': {196: 7.727483419587518}, 197: {196: 5.796723212298479, 198: 3.560056179332006}, 198: {197: 3.560056179332006, 199: 2.4316660954991334}, 199: {198: 2.4316660954991334, 200: 14.840080862313386}, 200: {199: 14.840080862313386, 'Padmavati Devi Temple': 14.451089924292909}, 'Padmavati Devi Temple': {200: 14.451089924292909}, 201: {'QIP 1': 1.5924823389915506, 202: 3.0242354405700627, 225: 3.382454729926182, 204: 7.045565981523415, 203: 5.600892785976178, 186: 0.0}, 'QIP 1': {201: 1.5924823389915506}, 202: {215: 1.8027756377319946, 203: 2.5930676813380713, 204: 4.044007912949726, 'Type1 - 6': 1.408900280360537, 201: 3.0242354405700627}, 'Type1 - 6': {202: 1.408900280360537}, 203: {'Type1 - 7': 1.1300442469213319, 204: 1.4512063946937388, 239: 3.784309712483903, 202: 2.5930676813380713, 201: 5.600892785976178}, 'Type1 - 7': {204: 1.7334935823359716, 203: 1.1300442469213319}, 204: {'Type1 - 7': 1.7334935823359716, 201: 7.045565981523415, 203: 1.4512063946937388, 202: 4.044007912949726, 220: 3.430014577228499, 205: 1.7700282483621554}, 205: {240: 1.822361105818493, 206: 1.731184565550421, 204: 1.7700282483621554}, 206: {224: 1.0, 223: 2.8208154849263005, 207: 1.981161275615895, 205: 1.731184565550421}, 207: {208: 1.5211837495845135, 241: 1.822361105818493, 206: 1.981161275615895}, 208: {208: 0.0, 243: 1.1627553482998907, 209: 2.4020824298928627, 'Type 2B 23': 2.4070729112347222}, 'Type 2B 23': {208: 2.4070729112347222}, 209: {208: 2.4020824298928627, 235: 4.224807687930896, 210: 2.316246964380094, 'CSRE C': 1.3118688958886098}, 'CSRE C': {209: 1.3118688958886098}, 210: {209: 2.316246964380094, 211: 3.6792662311933886}, 211: {210: 3.6792662311933886, 212: 2.251443981093023, 238: 2.9025850547399985, 92: 1.2445882853377659, 'Bungalow A16 ': 0.9}, 'Bungalow A16 ': {211: 0.9}, 212: {213: 2.1384573879317776, 'Bungalow A15 ': 1.0324727599312244, 211: 2.251443981093023, 92: 1.0089598604503551}, 'Bungalow A15 ': {212: 1.0324727599312244}, 213: {93: 0.28460498941515416, 92: 3.1395859599635108, 94: 1.731184565550421, 'Bungalow A14 ': 1.0373041983911953, 212: 2.1384573879317776}, 'Bungalow A14 ': {213: 1.0373041983911953}, 214: {94: 1.7700282483621554, 35: 0.6228964600958975}, 215: {202: 1.8027756377319946, 216: 1.587765725792064, 'Type 2B 22': 1.3601470508735443}, 'Type 2B 22': {215: 1.3601470508735443}, 216: {215: 1.587765725792064, 217: 1.6099689437998486, 226: 2.828780656042458, 'Type1 - 18': 1.3103434664239755, 'Type1 - 16': 1.5524174696260025}, 'Type1 - 18': {216: 1.3103434664239755}, 'Type1 - 16': {216: 1.5524174696260025}, 217: {216: 1.6099689437998486, 239: 1.1428035701729322, 218: 1.4042791745233567, 227: 2.6700187265260893, 'Proposed Type H1 Building': 6.9112227572261045}, 'Proposed Type H1 Building': {226: 3.3575288531895002, 217: 6.9112227572261045}, 218: {217: 1.4042791745233567, 219: 1.1853269591129698, 'Type1 - 14': 1.0606601717798212, 'Type H1 - 12': 1.5195394038984313}, 'Type1 - 14': {218: 1.0606601717798212}, 'Type H1 - 12': {218: 1.5195394038984313}, 219: {218: 1.1853269591129698, 220: 2.4226019070412703, 228: 3.112073263919087}, 220: {204: 3.430014577228499, 239: 2.0124611797498106, 219: 2.4226019070412703, 'Type1 - 13': 0.6363961030678927, 222: 2.828780656042458}, 'Type1 - 13': {220: 0.6363961030678927}, 221: {222: 1.6324827717314507, 'Type H1 - 5': 0.4949747468305833}, 'Type H1 - 5': {221: 0.4949747468305833}, 222: {221: 1.6324827717314507, 223: 0.8221921916437787, 220: 2.828780656042458}, 223: {224: 1.822361105818493, 222: 0.8221921916437787, 'Type H1 - 6': 1.5703502793962882}, 'Type H1 - 6': {223: 1.5703502793962882}, 224: {223: 1.822361105818493, 206: 1.0, 'Type H1 - 8': 1.216963434126104}, 'Type H1 - 8': {224: 1.216963434126104}, 225: {201: 3.382454729926182, 226: 1.3914021704740869, 'QIP 2': 1.329661611087573, 187: 0.6363961030678927}, 226: {226: 0.0, 216: 2.828780656042458, 227: 2.2228360263411244, 187: 0.8700574693662483, 'Proposed Type H1 Building': 3.3575288531895002}, 227: {226: 2.2228360263411244, 217: 2.6700187265260893, 228: 1.77792013318934}, 228: {219: 3.112073263919087, 227: 1.77792013318934, 230: 2.316246964380094, 229: 3.4311805548528045, 188: 2.4226019070412703}, 229: {228: 3.4311805548528045, 'Vidya Niwas': 1.2041594578792296}, 'Vidya Niwas': {229: 1.2041594578792296}, 230: {228: 2.316246964380094, 231: 1.4916433890176297, 'C22, B wing, Vindya': 1.820988742414406}, 'C22, B wing, Vindya': {230: 1.820988742414406}, 231: {230: 1.4916433890176297, 'C22, A wing, Sahyadri': 1.420211251891774, 'K-Yantra Lab (CSE Dept.)': 2.5079872407968904, 232: 1.7977764043395386, 188: 0.28460498941515416}, 'C22, A wing, Sahyadri': {231: 1.420211251891774}, 232: {244: 1.6595180023127196, 231: 1.7977764043395386, 189: 4.224807687930896}, 233: {244: 3.1508728949292766, 234: 2.6700187265260893}, 234: {'B 23 Aravali': 4.870831551183022, 233: 2.6700187265260893, 235: 2.7727242920997393}, 235: {234: 2.7727242920997393, 209: 4.224807687930896}, 236: {237: 2.1384573879317776, 'Bungalow A19 ': 0.970051545022222, 'CSRE D': 1.0807404868885035}, 'Bungalow A19 ': {236: 0.970051545022222}, 'CSRE D': {236: 1.0807404868885035}, 237: {236: 2.1384573879317776, 238: 1.8952572384771413, 'Bungalow A18 ': 0.8, 'CSRE A': 1.7418381095842403, 'CSRE B': 0.8354639429682169}, 'Bungalow A18 ': {237: 0.8}, 'CSRE A': {237: 1.7418381095842403}, 'CSRE B': {237: 0.8354639429682169}, 238: {237: 1.8952572384771413, 211: 2.9025850547399985, 'Bungalow A17 ': 0.806225774829855}, 'Bungalow A17 ': {238: 0.806225774829855}, 239: {203: 3.784309712483903, 220: 2.0124611797498106, 217: 1.1428035701729322}, 240: {'Type H2 - 18': 0.9492101980067429, 205: 1.822361105818493}, 'Type H2 - 18': {240: 0.9492101980067429}, 241: {242: 0.6363961030678927, 'Type H2 - 19': 0.6324555320336759, 207: 1.822361105818493}, 'Type H2 - 19': {241: 0.6324555320336759}, 242: {241: 0.6363961030678927, 'Type H2 - 20': 1.5}, 'Type H2 - 20': {242: 1.5}, 243: {'Type H2 - 21': 0.9617692030835673, 208: 1.1627553482998907}, 'Type H2 - 21': {243: 0.9617692030835673}, 244: {233: 3.1508728949292766, 232: 1.6595180023127196, 'Tulsi C': 1.5990622251807463}, 'Tulsi C': {244: 1.5990622251807463}, 245: {246: 4.401136216933078, 'Security Check Point': 3.8860005146680052, 255: 4.802082881417188}, 246: {245: 4.401136216933078, 'Paspoli Gate no. 4 ': 9.244295538330652}, 'Paspoli Gate no. 4 ': {246: 9.244295538330652}, 247: {192: 5.9605368885696866, 248: 4.271416626834709}, 248: {247: 4.271416626834709, 'MW Quarters 1': 1.8384776310850235}, 'MW Quarters 1': {248: 1.8384776310850235}, 249: {184: 5.692538976590323, 250: 5.426232578870906, 251: 2.2671568097509267, 'Kendriya Vidyalay Quarters 1': 1.766635219845908}, 'Kendriya Vidyalay Quarters 1': {249: 1.766635219845908, 251: 2.471639132235934}, 250: {249: 5.426232578870906, 'Campus School': 4.745102738613781, 'Kindergarten School': 4.745102738613781}, 'Kindergarten School': {250: 4.745102738613781, 253: 4.33232039443068}, 'Campus School': {250: 4.745102738613781, 253: 4.33232039443068}, 251: {249: 2.2671568097509267, 'Kendriya Vidyalay Quarters 1': 2.471639132235934, 252: 4.804164859785725}, 252: {251: 4.804164859785725, 253: 3.035951251255527}, 253: {252: 3.035951251255527, 254: 3.4896991274320484, 160: 12.683256679575637, 'Campus School': 4.33232039443068, 'Type C-7': 0.34058772731852804, 'Kindergarten School': 4.33232039443068}, 'Type C-7': {253: 0.34058772731852804}, 254: {253: 3.4896991274320484, 'Shivalik C 23 (187-240)': 7.684009370114016}, 'Shivalik C 23 (187-240)': {254: 7.684009370114016}, 255: {2: 18.03285889702462, 'Security Check Point': 1.4577379737113252, 245: 4.802082881417188}, 'Aromas Canteen': {27: 1.6337074401495515, 28: 2.9740544715926105, 'Hostel 01 Queen of the campus': 3.7380476187443095, "Domino's outlet": 1.4286357128393508}} \ No newline at end of file +{ + 0: { + "Hostel 12 Crown of the Campus": 2.534758371127315, + "Hostel 14 Silicon Ship": 1.827019430657485, + "H13 Night Canteen": 5.471105921109552, + "Hostel 13 House of Titans": 5.471105921109552, + "Mess for hostels 12 | 13 | 14": 1.5420765220960988, + 1: 3.112073263919087, + "Amul Parlour": 1.827019430657485, + }, + "Amul Parlour": {0: 1.827019430657485}, + "Hostel 12 Crown of the Campus": {0: 2.534758371127315}, + "Hostel 14 Silicon Ship": {0: 1.827019430657485}, + "Hostel 13 House of Titans": {0: 5.471105921109552}, + "H13 Night Canteen": {0: 5.471105921109552}, + "Mess for hostels 12 | 13 | 14": {0: 1.5420765220960988}, + 1: {0: 3.112073263919087, 2: 2.545780823244609}, + 2: {1: 2.545780823244609, 3: 2.0719555979798407, 255: 18.03285889702462}, + "Security Check Point": {255: 1.4577379737113252, 245: 3.8860005146680052}, + 3: {2: 2.0719555979798407, 4: 5.07119315348962, 5: 3.2144984056614496}, + 4: { + 3: 5.07119315348962, + "Hostel 06 Vikings": 2.359872877932199, + "Type1 - 22": 3.020761493398643, + }, + "Type1 - 22": {4: 3.020761493398643}, + "Hostel 06 Vikings": {4: 2.359872877932199}, + 5: {3: 3.2144984056614496, 6: 2.6414011433328337}, + 6: { + 5: 2.6414011433328337, + 7: 2.198635940759634, + "ATM - Canara Bank near H6": 1.3813037319865606, + }, + "ATM - Canara Bank near H6": {6: 1.3813037319865606}, + 7: {6: 2.198635940759634, 8: 2.0349447166937975}, + 8: { + 7: 2.0349447166937975, + 9: 1.1853269591129698, + "Hostel 09 Nawaabon Ki Basti": 3.60568994784632, + }, + "Hostel 09 Nawaabon Ki Basti": {8: 3.60568994784632}, + 9: {8: 1.1853269591129698, 10: 3.6706947571270483, 12: 2.8271894170713074}, + 10: {9: 3.6706947571270483, 11: 4.669047011971501}, + 11: {10: 4.669047011971501, "Hostel 18": 4.075904807524337}, + "Hostel 18": {11: 4.075904807524337}, + 12: {9: 2.8271894170713074, 13: 3.784309712483903, "Hostel 17": 2.44826469157238}, + "Hostel 17": {12: 2.44826469157238}, + 13: {12: 3.784309712483903, 14: 1.760113632695344, 102: 3.4035275817892234}, + 14: { + 13: 1.760113632695344, + 15: 5.70350769263968, + "Chaayos Cafe": 1.2074767078498865, + }, + "Chaayos Cafe": {14: 1.2074767078498865}, + 15: {14: 5.70350769263968, 16: 2.7727242920997393, 17: 3.560056179332006}, + 16: {15: 2.7727242920997393, "Hostel 05 Penthouse": 4.306855001041944}, + "Hostel 05 Penthouse": {16: 4.306855001041944}, + 17: { + 15: 3.560056179332006, + 18: 2.6700187265260893, + "Tansa House King of campus (Proj. Staff Boys)": 3.3800887562311144, + "ATM - State Bank near Tansa": 3.0522123124055445, + }, + "ATM - State Bank near Tansa": {17: 3.0522123124055445}, + "Tansa House King of campus (Proj. Staff Boys)": {17: 3.3800887562311144}, + 18: {17: 2.6700187265260893, 19: 2.4041630560342617}, + 19: {18: 2.4041630560342617, 20: 2.0719555979798407}, + 20: { + 21: 6.359323863430766, + 19: 2.0719555979798407, + "Outdoor Sports Facility": 1.230447073221762, + "Hostel 03 Vitruvians": 3.9824615503479754, + }, + "Outdoor Sports Facility": {20: 1.230447073221762}, + "Hostel 03 Vitruvians": {20: 3.9824615503479754}, + 21: { + 20: 6.359323863430766, + 22: 3.0242354405700627, + "Hostel 02 The Wild Ones": 5.008991914547277, + "Indoor Stadium": 1.5839823231336896, + "Badminton Court": 1.5839823231336896, + }, + "Badminton Court": {21: 1.5839823231336896}, + "Hostel 02 The Wild Ones": {21: 5.008991914547277}, + "Indoor Stadium": {21: 1.5839823231336896}, + 22: { + 21: 3.0242354405700627, + "Swimming Pool (new)": 2.3119256043393785, + 23: 2.316246964380094, + }, + "Swimming Pool (new)": {22: 2.3119256043393785}, + 23: {22: 2.316246964380094, 24: 3.5383612025908264, 25: 3.2144984056614496}, + 24: { + 23: 3.5383612025908264, + "Students Activity Centre": 1.9039432764659772, + "New Yoga Room, SAC": 1.9039432764659772, + "Open Air Theatre": 1.9039432764659772, + "Film Room, SAC": 1.9039432764659772, + }, + "Film Room, SAC": {24: 1.9039432764659772, 26: 2.760615873315228}, + "Open Air Theatre": {24: 1.9039432764659772, 26: 2.760615873315228}, + "New Yoga Room, SAC": {24: 1.9039432764659772, 26: 2.760615873315228}, + "Students Activity Centre": {24: 1.9039432764659772, 26: 2.760615873315228}, + 25: {23: 3.2144984056614496, 26: 3.8268786236304906, 27: 2.545780823244609}, + 26: { + 25: 3.8268786236304906, + "Students Activity Centre": 2.760615873315228, + "New Yoga Room, SAC": 2.760615873315228, + "Open Air Theatre": 2.760615873315228, + "Film Room, SAC": 2.760615873315228, + }, + 27: { + 25: 2.545780823244609, + 28: 2.7741665415039525, + "Hostel 01 Queen of the campus": 2.198635940759634, + "Aromas Canteen": 1.6337074401495515, + }, + "Hostel 01 Queen of the campus": { + 27: 2.198635940759634, + "Aromas Canteen": 3.7380476187443095, + }, + 28: { + 27: 2.7741665415039525, + "Domino's outlet": 2.0084820138602186, + 29: 1.6161683080669538, + "Aromas Canteen": 2.9740544715926105, + }, + "Domino's outlet": { + 28: 2.0084820138602186, + 34: 1.4453373308677804, + "Aromas Canteen": 1.4286357128393508, + }, + 29: {28: 1.6161683080669538, 30: 5.685156110433556, 34: 3.2919599025504547}, + 30: { + 29: 5.685156110433556, + 31: 3.1395859599635108, + "Defence Research & Development Organization": 2.1505813167606567, + }, + "Defence Research & Development Organization": {30: 2.1505813167606567}, + 31: {30: 3.1395859599635108, 32: 4.044007912949726, 192: 3.684155262743415}, + 32: { + 31: 4.044007912949726, + "Hostel 15 Trident": 6.024699162613849, + 33: 5.330009380854784, + "Hostel 15 Mess": 5.773820225812369, + }, + "Hostel 15 Mess": {32: 5.773820225812369}, + "Hostel 15 Trident": {32: 6.024699162613849}, + 33: { + 32: 5.330009380854784, + "Hostel 16 Olympus": 4.440833255144804, + "Hostel 16 Mess": 4.440833255144804, + }, + "Hostel 16 Mess": {33: 4.440833255144804}, + "Hostel 16 Olympus": {33: 4.440833255144804}, + 34: { + 35: 1.7700282483621554, + 29: 3.2919599025504547, + "Domino's outlet": 1.4453373308677804, + }, + 35: { + 34: 1.7700282483621554, + 36: 2.2671568097509267, + 37: 7.046417529496815, + 214: 0.6228964600958975, + }, + 36: { + 35: 2.2671568097509267, + "State Bank of India Branch": 1.296919426949878, + 94: 4.640366364846638, + }, + "State Bank of India Branch": {36: 1.296919426949878}, + 37: {35: 7.046417529496815, 38: 6.155079203389668, 95: 11.327885945753515}, + 38: { + 37: 6.155079203389668, + 39: 3.1508728949292766, + "Central Library": 1.103177229641729, + }, + "Central Library": {38: 1.103177229641729, 40: 2.7613402542968153}, + 39: { + 38: 3.1508728949292766, + 40: 3.6002777670618693, + 89: 5.330009380854784, + 90: 2.44826469157238, + }, + 40: {39: 3.6002777670618693, 41: 1.0, "Central Library": 2.7613402542968153}, + 41: {40: 1.0, 42: 1.1384199576606167, 180: 2.2768399153212333}, + 42: { + 41: 1.1384199576606167, + 43: 2.316246964380094, + "Mathematics Department": 2.435159132377184, + "Old Software Lab": 2.435159132377184, + "Inter-disciplinary Programme in Educational Technology": 2.435159132377184, + "Centre for Formal Design and Verification of Software": 2.435159132377184, + "Centre for Distance Engineering Education Programme": 2.435159132377184, + }, + "Centre for Distance Engineering Education Programme": {42: 2.435159132377184}, + "Centre for Formal Design and Verification of Software": {42: 2.435159132377184}, + "Inter-disciplinary Programme in Educational Technology": {42: 2.435159132377184}, + "Mathematics Department": {42: 2.435159132377184}, + "Old Software Lab": {42: 2.435159132377184}, + 43: { + 42: 2.316246964380094, + 44: 2.041568024827975, + "Old Computer Science Engineering Department": 1.8439088914585775, + "New Software Lab": 1.8439088914585775, + "Centre for Technology Alternatives for Rural Areas": 1.8439088914585775, + }, + "Centre for Technology Alternatives for Rural Areas": {43: 1.8439088914585775}, + "New Software Lab": {43: 1.8439088914585775}, + "Old Computer Science Engineering Department": {43: 1.8439088914585775}, + 44: {43: 2.041568024827975, 45: 1.1734564329364767, 89: 4.000499968753906}, + 45: { + 44: 1.1734564329364767, + 46: 2.5930676813380713, + 47: 3.112073263919087, + "Fluid Mechanics and Fluid Power Lab": 0.623698645180507, + }, + "Fluid Mechanics and Fluid Power Lab": {45: 0.623698645180507}, + 46: { + 45: 2.5930676813380713, + 47: 1.0261578825892241, + 48: 2.0329781110479277, + "ENELEK Power Sine": 0.9486832980505138, + }, + "ENELEK Power Sine": {46: 0.9486832980505138}, + 47: {45: 3.112073263919087, 46: 1.0261578825892241}, + 48: { + 46: 2.0329781110479277, + 49: 2.167487024182613, + "Tinkerers Lab": 1.066770828247567, + "Refrigeration, A/C and Cryogenics Lab": 1.066770828247567, + "Treelabs": 1.066770828247567, + "N3 Bay": 5.318646444350292, + }, + "Treelabs": {48: 1.066770828247567}, + "Refrigeration, A/C and Cryogenics Lab": {48: 1.066770828247567}, + "Tinkerers Lab": {48: 1.066770828247567}, + 49: { + 48: 2.167487024182613, + 50: 3.382454729926182, + "Mechanical Engineering Department": 5.230774321264492, + "Industrial Engineering and Operations Research": 5.230774321264492, + }, + "Industrial Engineering and Operations Research": {49: 5.230774321264492}, + "Mechanical Engineering Department": {49: 5.230774321264492}, + 50: {49: 3.382454729926182, 51: 1.731184565550421, 52: 1.2445882853377659}, + 51: { + 50: 1.731184565550421, + 76: 4.826696592909068, + "Industrial Design Centre": 2.2365151463828723, + "IDC Canteen": 2.2365151463828723, + "IDC Shakti": 2.2365151463828723, + }, + "IDC Shakti": {51: 2.2365151463828723}, + "IDC Canteen": {51: 2.2365151463828723}, + "Industrial Design Centre": {51: 2.2365151463828723}, + 52: { + 50: 1.2445882853377659, + 53: 2.4226019070412703, + 76: 7.01519778766073, + 178: 9.087133761533392, + }, + 53: { + 52: 2.4226019070412703, + 54: 4.588354824989018, + "Civil Engineering Department": 4.6217961876309515, + "Victor Menezes Convention Centre": 3.063494736408078, + "Centre for Urban Science and Engineering (inside civil)": 4.6217961876309515, + "Inter-disciplinary Programme in Climate Studies": 4.6217961876309515, + }, + "Inter-disciplinary Programme in Climate Studies": {53: 4.6217961876309515}, + "Centre for Urban Science and Engineering (inside civil)": {53: 4.6217961876309515}, + "Civil Engineering Department": {53: 4.6217961876309515}, + "Victor Menezes Convention Centre": {53: 3.063494736408078}, + 54: { + 53: 4.588354824989018, + 55: 1.9677398201998149, + "Electrical Engineering Department": 4.794267410147248, + "Electrical Engineering Annexe Building": 1.0751744044572489, + }, + "Electrical Engineering Department": { + 54: 4.794267410147248, + 176: 4.331397003277349, + 56: 2.110213259365034, + }, + "Electrical Engineering Annexe Building": { + 54: 1.0751744044572489, + 56: 5.9787958653896185, + }, + 55: {54: 1.9677398201998149, 56: 4.293483434229135, 57: 2.0523157651784483}, + 56: { + 55: 4.293483434229135, + "Girish Gaitonde Building": 2.5849564793241684, + "Electrical Engineering Department": 2.110213259365034, + "Electrical Engineering Annexe Building": 5.9787958653896185, + }, + "Girish Gaitonde Building": {175: 2.568462575160479, 56: 2.5849564793241684}, + 57: { + 174: 9.530424964291992, + 55: 2.0523157651784483, + 58: 2.1783020910791966, + "Seminar Hall": 1.8804254837669054, + "Rock Powdering Lab": 2.850438562747845, + "Rock Cutting Lab": 2.850438562747845, + }, + "Seminar Hall": {57: 1.8804254837669054}, + "Rock Cutting Lab": {57: 2.850438562747845}, + "Rock Powdering Lab": {57: 2.850438562747845}, + 58: { + 57: 2.1783020910791966, + 59: 3.9802009999496257, + "Metallurgical Engineering and Material Science Department": 5.603302597575826, + "Corrosion Science Paint Lab": 5.603302597575826, + "Corrosion Lab 1": 5.603302597575826, + "Humanities and Social Sciences Department": 4.119465984809196, + "Aerospace Engineering Annexe": 4.119465984809196, + "Inter-disciplinary Programme in Corrosion Science & Engineering": 5.603302597575826, + "Aqueous Corrosion Lab": 5.603302597575826, + }, + "Aqueous Corrosion Lab": {58: 5.603302597575826, 173: 4.494441010848846}, + "Inter-disciplinary Programme in Corrosion Science & Engineering": { + 58: 5.603302597575826, + 173: 4.494441010848846, + }, + "Metallurgical Engineering and Material Science Department": { + 58: 5.603302597575826, + 173: 4.494441010848846, + }, + "Corrosion Lab 1": {58: 5.603302597575826, 173: 4.494441010848846}, + "Corrosion Science Paint Lab": {58: 5.603302597575826, 173: 4.494441010848846}, + "Humanities and Social Sciences Department": {58: 4.119465984809196}, + "Aerospace Engineering Annexe": {58: 4.119465984809196}, + 59: { + 58: 3.9802009999496257, + 60: 3.805522303179946, + "Lecture Hall Complex - 1 & 2": 4.551263560814733, + "LT 001": 4.551263560814733, + "LT 002": 4.551263560814733, + "LT 003": 4.551263560814733, + "LT 004": 4.551263560814733, + "LT 005": 4.551263560814733, + "LT 006": 4.551263560814733, + "LT 101": 4.551263560814733, + "LT 102": 4.551263560814733, + "LT 103": 4.551263560814733, + "LT 104": 4.551263560814733, + "LT 105": 4.551263560814733, + "LT 106": 4.551263560814733, + "LT 201": 4.551263560814733, + "LT 202": 4.551263560814733, + "LT 203": 4.551263560814733, + "LT 204": 4.551263560814733, + "LT 205": 4.551263560814733, + "LT 206": 4.551263560814733, + "LT 301": 4.551263560814733, + "LT 302": 4.551263560814733, + "LT 303": 4.551263560814733, + "LT 304": 4.551263560814733, + "LT 305": 4.551263560814733, + "LT 306": 4.551263560814733, + "LC 001": 4.551263560814733, + "LC 002": 4.551263560814733, + "LC 101": 4.551263560814733, + "LC 102": 4.551263560814733, + "LC 201": 4.551263560814733, + "LC 202": 4.551263560814733, + "LC 301": 4.551263560814733, + "LC 302": 4.551263560814733, + "LH 101": 4.551263560814733, + "LH 102": 4.551263560814733, + "LH 301": 4.551263560814733, + "LH 302": 4.551263560814733, + "LA 001": 2.438237068047322, + "LA 002": 2.438237068047322, + "LA 201": 2.438237068047322, + "LA 202": 2.438237068047322, + "Lecture Hall Complex - 3": 2.438237068047322, + "WRCBB Wadhwani Research Centre in Biosciences and Bioengineering ": 7.383562825628289, + "Biosciences and Bioengineering Department": 7.383562825628289, + }, + "Biosciences and Bioengineering Department": {59: 7.383562825628289}, + "WRCBB Wadhwani Research Centre in Biosciences and Bioengineering ": { + 59: 7.383562825628289 + }, + "LH 302": {59: 4.551263560814733, 172: 5.116346352623129}, + "LH 301": {59: 4.551263560814733, 172: 5.116346352623129}, + "LH 102": {59: 4.551263560814733, 172: 5.116346352623129}, + "LH 101": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 302": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 301": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 202": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 201": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 102": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 101": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 002": {59: 4.551263560814733, 172: 5.116346352623129}, + "LC 001": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 001": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 306": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 305": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 304": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 303": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 302": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 301": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 206": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 205": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 204": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 203": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 202": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 201": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 106": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 105": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 104": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 103": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 102": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 101": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 006": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 005": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 004": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 003": {59: 4.551263560814733, 172: 5.116346352623129}, + "LT 002": {59: 4.551263560814733, 172: 5.116346352623129}, + "Lecture Hall Complex - 1 & 2": {59: 4.551263560814733, 172: 5.116346352623129}, + "LA 202": {59: 2.438237068047322}, + "LA 201": {59: 2.438237068047322}, + "LA 002": {59: 2.438237068047322}, + "LA 001": {59: 2.438237068047322}, + "Lecture Hall Complex - 3": {59: 2.438237068047322}, + 60: { + 59: 3.805522303179946, + 61: 2.0349447166937975, + "Physics Department": 4.780167361086848, + "Chemical Engineering Department": 5.520144925633747, + "Chemistry Department": 5.520144925633747, + }, + "Physics Department": {60: 4.780167361086848, 171: 4.7611973284038545}, + "Chemistry Department": {60: 5.520144925633747, 67: 8.937561188601732}, + "Chemical Engineering Department": {60: 5.520144925633747, 67: 8.937561188601732}, + 61: {60: 2.0349447166937975, 62: 1.9677398201998149, 161: 2.545780823244609}, + 62: {61: 1.9677398201998149, 63: 1.6760071598892412}, + 63: {62: 1.6760071598892412, 64: 13.195188517031502, 160: 6.325345840347388}, + 64: {63: 13.195188517031502, 65: 2.5793410011086166, 181: 5.060632371551998}, + 65: { + 64: 2.5793410011086166, + 66: 2.0523157651784483, + "DESE & CESE New Building": 3.623534186398688, + "Cafe Coffee Day": 3.761914406256474, + "Energy Science and Engineering (New Building)": 3.623534186398688, + }, + "Energy Science and Engineering (New Building)": {65: 3.623534186398688}, + "DESE & CESE New Building": {65: 3.623534186398688}, + "Cafe Coffee Day": {65: 3.761914406256474}, + 66: {65: 2.0523157651784483, 67: 2.041568024827975, 70: 12.877926851787908}, + 67: { + 66: 2.041568024827975, + 68: 7.799102512468983, + "Chemical Engineering Department": 8.937561188601732, + "Chemistry Department": 8.937561188601732, + }, + 68: { + 67: 7.799102512468983, + 69: 4.456007181322759, + "Aerospace Engineering Department": 1.5646085772486358, + "Centre for Aerospace Systems Design and Engineering": 1.5646085772486358, + }, + "Centre for Aerospace Systems Design and Engineering": {68: 1.5646085772486358}, + "Aerospace Engineering Department": {68: 1.5646085772486358}, + 69: { + 68: 4.456007181322759, + "ONGC Research Centre": 1.580506248010428, + 71: 2.44826469157238, + }, + "ONGC Research Centre": {69: 1.580506248010428}, + 70: { + 66: 12.877926851787908, + 71: 1.4453373308677804, + "Proposed Building for Tata Centre for Technology": 3.2534596969994882, + "Proposed NCAIR": 3.2534596969994882, + "Proposed Bio Mechanical Department": 3.2534596969994882, + "Proposed D.S Foundation": 3.2534596969994882, + "Proposed Press ": 3.2534596969994882, + }, + "Proposed Press ": {70: 3.2534596969994882}, + "Proposed D.S Foundation": {70: 3.2534596969994882}, + "Proposed Bio Mechanical Department": {70: 3.2534596969994882}, + "Proposed NCAIR": {70: 3.2534596969994882}, + "Proposed Building for Tata Centre for Technology": {70: 3.2534596969994882}, + 71: {70: 1.4453373308677804, 72: 4.655534340975265, 69: 2.44826469157238}, + 72: { + 71: 4.655534340975265, + 73: 1.7700282483621554, + "Energy Science and Engineering": 1.6772000476985445, + }, + "Energy Science and Engineering": {72: 1.6772000476985445}, + 73: { + 72: 1.7700282483621554, + 74: 0.9, + "Earth Science Department": 4.228001892147164, + }, + "Earth Science Department": {73: 4.228001892147164}, + 74: { + 73: 0.9, + 75: 2.980771712157776, + "Centre of Studies in Resources Engineering": 2.1095023109728985, + "Society for Innovation and Entrepreneurship": 2.1095023109728985, + }, + "Society for Innovation and Entrepreneurship": {74: 2.1095023109728985}, + "Centre of Studies in Resources Engineering": {74: 2.1095023109728985}, + 75: { + 74: 2.980771712157776, + 76: 3.27566787083184, + "Centre for Environmental Science and Engineering": 3.992117232747556, + }, + "Centre for Environmental Science and Engineering": {75: 3.992117232747556}, + 76: { + 75: 3.27566787083184, + 51: 4.826696592909068, + 52: 7.01519778766073, + 77: 2.198635940759634, + "Non- Academic Staff Association": 2.0523157651784483, + "Printing Press": 2.0523157651784483, + }, + "Printing Press": {76: 2.0523157651784483}, + "Non- Academic Staff Association": {76: 2.0523157651784483}, + 77: { + 76: 2.198635940759634, + 78: 4.901632381156302, + "Structural integrity Testing and Analysis Centre": 2.166333307688362, + "S3 Bay": 2.76278844647939, + }, + "S3 Bay": {77: 2.76278844647939}, + "Structural integrity Testing and Analysis Centre": { + 77: 2.166333307688362, + 82: 6.654697588921679, + }, + 78: { + 77: 4.901632381156302, + 79: 4.401136216933078, + "Electrical Maintenence": 2.4331050121192876, + "Machine Tool Lab": 3.7105255692421797, + }, + "Machine Tool Lab": {79: 4.65123639476645, 78: 3.7105255692421797}, + "Electrical Maintenence": {78: 2.4331050121192876}, + 79: { + 78: 4.401136216933078, + 80: 3.430014577228499, + "Machine Tool Lab": 4.65123639476645, + "OrthoCad Lab": 2.9313819266687173, + "Micro Fluidics Lab": 2.5045957757690163, + "RM Lab (Rapid manufacturing)": 3.0220853727186467, + "S1 Bay": 2.2614154859291116, + "N1 Bay": 2.012212712413874, + "Supercritical fluid Processing facility (Chemical Engg.)": 2.2614154859291116, + "S2 Bay": 4.65123639476645, + "UG Lab / S2 Bay": 4.65123639476645, + "Fuel Cell Research Facility": 2.012212712413874, + }, + "Fuel Cell Research Facility": { + 79: 2.012212712413874, + 80: 3.161012496020856, + 82: 2.2147234590350102, + }, + "UG Lab / S2 Bay": {79: 4.65123639476645}, + "S2 Bay": {79: 4.65123639476645}, + "Supercritical fluid Processing facility (Chemical Engg.)": { + 79: 2.2614154859291116 + }, + "N1 Bay": {79: 2.012212712413874}, + "S1 Bay": {79: 2.2614154859291116}, + "RM Lab (Rapid manufacturing)": {79: 3.0220853727186467}, + "OrthoCad Lab": {79: 2.9313819266687173}, + "Micro Fluidics Lab": {79: 2.5045957757690163}, + 80: { + 79: 3.430014577228499, + 81: 2.3910248848558644, + 82: 3.5300141642775316, + "Fuel Cell Research Facility": 3.161012496020856, + }, + 81: { + 185: 2.7727242920997393, + 80: 2.3910248848558644, + "Physics Lab (Ist Years)": 1.1353413583587977, + "UG Lab (1st years)": 1.1353413583587977, + "Power House": 2.5117722826721374, + }, + "UG Lab (1st years)": {81: 1.1353413583587977, 82: 3.1976553910638965}, + "Physics Lab (Ist Years)": {81: 1.1353413583587977, 82: 3.1976553910638965}, + "Power House": {81: 2.5117722826721374}, + 82: { + 80: 3.5300141642775316, + 83: 3.4311805548528045, + "UG Lab (1st years)": 3.1976553910638965, + "Physics Lab (Ist Years)": 3.1976553910638965, + "Structural integrity Testing and Analysis Centre": 6.654697588921679, + "Fuel Cell Research Facility": 2.2147234590350102, + }, + 83: { + 82: 3.4311805548528045, + 84: 1.822361105818493, + "SMAmL Suman Mashruwala Advanced Microengineering Lab": 1.0530906893520615, + "Thermal Hydraulic Test Facility": 2.54911749434976, + "N2 Bay": 2.70129598526337, + "N3 Bay": 2.195449840010015, + }, + "N3 Bay": {48: 5.318646444350292, 83: 2.195449840010015}, + "N2 Bay": {83: 2.70129598526337}, + "SMAmL Suman Mashruwala Advanced Microengineering Lab": {83: 1.0530906893520615}, + "Thermal Hydraulic Test Facility": {83: 2.54911749434976}, + 84: { + 83: 1.822361105818493, + 85: 4.349022878762539, + "Cummins Engine Research facility": 0.806225774829855, + "Heat Transfer and Thermodynamic Lab": 0.9433981132056604, + "Steam Power Lab": 1.0890362712049586, + "IC Engine and Combustion Lab": 2.1272047386182646, + }, + "IC Engine and Combustion Lab": {84: 2.1272047386182646, 85: 2.606338427756457}, + "Steam Power Lab": {84: 1.0890362712049586}, + "Cummins Engine Research facility": {84: 0.806225774829855}, + "Heat Transfer and Thermodynamic Lab": {84: 0.9433981132056604}, + 85: { + 84: 4.349022878762539, + 88: 2.5930676813380713, + 86: 3.430014577228499, + "Metal Forming Lab": 2.558906016249913, + "Old ONGC Lab": 1.8160396471443017, + "Structural Evaluation & Material Technologies Lab": 1.6876018487783189, + "Heavy Structure Lab": 3.3366150512158277, + "Hydraulics Lab": 1.0922453936730518, + "Concrete Technology Lab": 3.3366150512158277, + "IC Engine and Combustion Lab": 2.606338427756457, + }, + "Concrete Technology Lab": {85: 3.3366150512158277}, + "Hydraulics Lab": {85: 1.0922453936730518, 88: 2.1644860821913365}, + "Heavy Structure Lab": {85: 3.3366150512158277}, + "Structural Evaluation & Material Technologies Lab": {85: 1.6876018487783189}, + "Old ONGC Lab": {85: 1.8160396471443017}, + 86: { + 85: 3.430014577228499, + 87: 2.2452171387195494, + "Geotechnical Engg. Lab": 0.4049691346263318, + "Metal Forming Lab": 1.1700427342623003, + }, + "Metal Forming Lab": {86: 1.1700427342623003, 85: 2.558906016249913}, + "Geotechnical Engg. Lab": {86: 0.4049691346263318}, + 87: { + 86: 2.2452171387195494, + "National Geotechnical Centrifuge Facility": 1.2349089035228469, + "Vihar House": 6.230971031869752, + "GMFL Lab / Geophysical and multiphase Flows Lab": 5.591511423577708, + }, + "GMFL Lab / Geophysical and multiphase Flows Lab": {87: 5.591511423577708}, + "Vihar House": {87: 6.230971031869752}, + "National Geotechnical Centrifuge Facility": {87: 1.2349089035228469}, + 88: { + 85: 2.5930676813380713, + "Solar Lab": 3.3889526405661083, + 89: 1.731184565550421, + "Heat Pump Lab": 1.118033988749895, + "Hydraulics Lab Workshop": 1.9849433241279208, + "Hydraulics Lab": 2.1644860821913365, + "Hydraulics Lab (New)": 1.372953021774598, + }, + "Hydraulics Lab (New)": {88: 1.372953021774598, 89: 1.0751744044572489}, + "Hydraulics Lab Workshop": {88: 1.9849433241279208}, + "Solar Lab": {88: 3.3889526405661083}, + "Heat Pump Lab": {88: 1.118033988749895}, + 89: { + 44: 4.000499968753906, + 88: 1.731184565550421, + 39: 5.330009380854784, + "Hydraulics Lab (New)": 1.0751744044572489, + }, + 90: { + 91: 2.8017851452243803, + 39: 2.44826469157238, + "Inter-disciplinary Programme in Systems and Control Engineering": 1.4310835055998654, + }, + "Inter-disciplinary Programme in Systems and Control Engineering": { + 90: 1.4310835055998654 + }, + 91: { + 90: 2.8017851452243803, + 92: 1.880957203128237, + "NanoTech. & Science Research Centre": 1.9227584351654787, + "Advanced Centre for Research in Electronics": 1.9227584351654787, + "Sophisticated Analytical Instruments Facility": 1.9227584351654787, + }, + "Sophisticated Analytical Instruments Facility": {91: 1.9227584351654787}, + "Advanced Centre for Research in Electronics": {91: 1.9227584351654787}, + "NanoTech. & Science Research Centre": {91: 1.9227584351654787}, + 92: { + 91: 1.880957203128237, + 93: 3.0242354405700627, + 211: 1.2445882853377659, + 213: 3.1395859599635108, + 212: 1.0089598604503551, + }, + 93: {92: 3.0242354405700627, 94: 1.7076299364909249, 213: 0.28460498941515416}, + 94: { + 93: 1.7076299364909249, + 213: 1.731184565550421, + 214: 1.7700282483621554, + 36: 4.640366364846638, + }, + 95: {96: 2.44826469157238, 169: 4.186287137786896, 37: 11.327885945753515}, + 96: { + 95: 2.44826469157238, + "NCC Office": 4.343500892137586, + 97: 4.59847800908083, + "Squash Court": 4.775143976886979, + }, + "Squash Court": {96: 4.775143976886979, 97: 3.006659275674582}, + "NCC Office": {96: 4.343500892137586}, + 97: { + 96: 4.59847800908083, + 98: 3.382454729926182, + "Staff Hostel": 9.135972854600654, + "Squash Court": 3.006659275674582, + }, + "Staff Hostel": {97: 9.135972854600654}, + 98: { + 97: 3.382454729926182, + 99: 1.7700282483621554, + 101: 2.623928352680385, + "Hostel 11 Athena (Girls Hostel)": 2.9698484809834995, + "Printing and photocopying H11": 2.9698484809834995, + }, + "Printing and photocopying H11": {98: 2.9698484809834995}, + "Hostel 11 Athena (Girls Hostel)": {98: 2.9698484809834995}, + 99: { + 98: 1.7700282483621554, + 100: 2.6414011433328337, + "Basketball Court": 1.5063200191194432, + }, + "Basketball Court": {99: 1.5063200191194432}, + 100: { + 99: 2.6414011433328337, + "Hockey Ground": 4.741307836451879, + "Gymkhana Grounds": 3.1465854509293085, + }, + "Hockey Ground": {100: 4.741307836451879}, + "Gymkhana Grounds": {100: 3.1465854509293085}, + 101: { + 98: 2.623928352680385, + 102: 5.378196723809943, + "Gymkhana Building": 1.9300259065618783, + "Brewberrys Cafe": 1.296919426949878, + }, + "Gymkhana Building": {101: 1.9300259065618783}, + "Brewberrys Cafe": {101: 1.296919426949878}, + 102: {101: 5.378196723809943, 13: 3.4035275817892234, 103: 7.319357895334809}, + 103: {102: 7.319357895334809, 104: 1.9677398201998149}, + 104: {103: 1.9677398201998149, 105: 1.731184565550421}, + 105: {104: 1.731184565550421, 106: 7.202221879392497}, + 106: {105: 7.202221879392497, 107: 1.6949926253526888}, + 107: {106: 1.6949926253526888, 108: 1.5211837495845135}, + 108: {107: 1.5211837495845135, 109: 1.8952572384771413}, + 109: {108: 1.8952572384771413, 110: 3.5700140055747682}, + 110: {109: 3.5700140055747682, 111: 1.4916433890176297}, + 111: {110: 1.4916433890176297, 112: 3.560056179332006, 115: 1.2445882853377659}, + 112: {111: 3.560056179332006, 113: 3.383637096380166}, + 113: {112: 3.383637096380166, 114: 6.538654295801239}, + 114: {113: 6.538654295801239, "Boat House": 4.870523585817033}, + "Boat House": {114: 4.870523585817033}, + 115: {111: 1.2445882853377659, 116: 2.041568024827975}, + 116: {115: 2.041568024827975, 117: 1.4230249470757708}, + 117: {116: 1.4230249470757708, 118: 1.1734564329364767}, + 118: {117: 1.1734564329364767, 119: 4.653815638806505}, + 119: {118: 4.653815638806505, 120: 1.0}, + 120: {119: 1.0, 121: 1.1734564329364767}, + 121: { + 120: 1.1734564329364767, + 122: 1.0261578825892241, + "National Centre for Mathematics": 1.4710540438746633, + }, + 122: { + 121: 1.0261578825892241, + 123: 16.343959128681153, + "Guest House/Padmavihar": 2.3214219780126144, + }, + "Guest House/Padmavihar": {122: 2.3214219780126144}, + "National Centre for Mathematics": {121: 1.4710540438746633}, + 123: { + 122: 16.343959128681153, + 124: 1.7700282483621554, + 138: 4.518517455980446, + "Type B-14": 2.6879360111431225, + "Guest House / Jalvihar": 6.20354737227016, + }, + "Guest House / Jalvihar": {123: 6.20354737227016}, + "Type B-14": {123: 2.6879360111431225}, + 124: {123: 1.7700282483621554, 125: 4.470011185668332}, + 125: {124: 4.470011185668332, 126: 4.518517455980446}, + 126: { + 125: 4.518517455980446, + 127: 15.53270742658858, + 135: 5.397962578603153, + "Type B-13": 3.575611835756225, + }, + "Type B-13": {126: 3.575611835756225}, + 127: { + 126: 15.53270742658858, + 128: 5.692538976590323, + "Proposed TypeA Building": 4.570557952810575, + }, + "Proposed TypeA Building": {127: 4.570557952810575}, + 128: {127: 5.692538976590323, 129: 3.6808966298987533}, + 129: { + 128: 3.6808966298987533, + 130: 7.935048834128244, + 193: 5.733149221850065, + "B 19 Old Multistoried Building- Residence ": 4.692973471052229, + }, + "B 19 Old Multistoried Building- Residence ": {129: 4.692973471052229}, + 130: { + 129: 7.935048834128244, + 131: 1.4042791745233567, + "White House": 5.517698795693726, + }, + "White House": {130: 5.517698795693726}, + 131: {130: 1.4042791745233567, 132: 4.224807687930896, "CTR 20": 2.000249984376953}, + "CTR 20": {131: 2.000249984376953}, + 132: { + 131: 4.224807687930896, + 133: 9.713753136661442, + "CTR 19": 2.040833163195855, + "Bungalow A10 ": 4.08166632639171, + }, + "Bungalow A10 ": {132: 4.08166632639171, 133: 6.646878966853541}, + "CTR 19": {132: 2.040833163195855}, + 133: { + 132: 9.713753136661442, + 134: 1.4916433890176297, + "Bungalow A11 ": 3.508275929855005, + "Bungalow A10 ": 6.646878966853541, + "Bungalow A8 ": 6.26258732474047, + }, + "Bungalow A8 ": {133: 6.26258732474047, 153: 10.713589501189599}, + 134: { + 133: 1.4916433890176297, + 135: 11.502738804302219, + 153: 7.340844638050855, + "Shishu Vihar": 4.2901048938225275, + "Bungalow A5 ": 4.350287346831241, + "Bungalow A11 ": 3.645408070436011, + }, + "Bungalow A11 ": {133: 3.508275929855005, 134: 3.645408070436011}, + "Bungalow A5 ": {134: 4.350287346831241, 153: 3.634969050762331}, + "Shishu Vihar": {134: 4.2901048938225275, 153: 3.6206353033687333}, + 135: { + 134: 11.502738804302219, + 136: 9.79025025216414, + 126: 5.397962578603153, + "A1 Director Bungalow": 7.410802925459562, + }, + "A1 Director Bungalow": { + 135: 7.410802925459562, + 136: 3.7890632087628204, + 155: 5.3615296324836255, + 154: 5.123377792043057, + }, + 136: { + 135: 9.79025025216414, + 137: 2.316246964380094, + 155: 5.403794962801605, + "Type B-1": 2.2908513701242166, + "Bungalow A13 ": 2.27771815640127, + "A1 Director Bungalow": 3.7890632087628204, + }, + "Bungalow A13 ": {136: 2.27771815640127}, + "Type B-1": {136: 2.2908513701242166}, + 137: {136: 2.316246964380094, 138: 1.2727922061357855}, + 138: {137: 1.2727922061357855, 139: 6.175597137119616, 123: 4.518517455980446}, + 139: {138: 6.175597137119616, 140: 1.6760071598892412}, + 140: {139: 1.6760071598892412, 141: 4.82265487050442}, + 141: { + 140: 4.82265487050442, + 142: 6.957082721946032, + 157: 3.2919599025504547, + "Guest House/Vanvihar": 3.216364407215078, + }, + "Guest House/Vanvihar": {141: 3.216364407215078}, + 142: { + 141: 6.957082721946032, + 143: 3.9802009999496257, + 162: 3.6585516259853432, + "Gulmohar Garden Cafetaria": 2.3759208741033446, + "Staff Club": 3.9654760117796704, + }, + "Staff Club": {142: 3.9654760117796704}, + 143: { + 142: 3.9802009999496257, + 144: 5.771828133269389, + "Hospital": 4.228001892147164, + }, + "Hospital": {143: 4.228001892147164}, + 144: {143: 5.771828133269389, 145: 0.8538149682454624, 166: 3.4896991274320484}, + 145: {144: 0.8538149682454624, 146: 1.420211251891774}, + 146: {145: 1.420211251891774, 147: 5.530461101933545, 152: 3.382454729926182}, + 147: { + 146: 5.530461101933545, + 148: 2.041568024827975, + "Kshitij Udyan": 4.846648326421054, + }, + "Kshitij Udyan": {147: 4.846648326421054}, + 148: {147: 2.041568024827975, 149: 2.263183598385248}, + 149: { + 148: 2.263183598385248, + 150: 2.6700187265260893, + "Tennis Court (new)": 7.513321502504734, + }, + "Tennis Court (new)": {149: 7.513321502504734}, + 150: {149: 2.6700187265260893, 151: 2.041568024827975}, + 151: {152: 1.4512063946937388, 150: 2.041568024827975, 169: 2.430020576044573}, + 152: { + 151: 1.4512063946937388, + 168: 2.167487024182613, + 146: 3.382454729926182, + "Convocation Hall": 3.4539832078341086, + "Institute Music Room": 3.4539832078341086, + }, + "Institute Music Room": {152: 3.4539832078341086}, + "Convocation Hall": {152: 3.4539832078341086}, + 153: { + 134: 7.340844638050855, + 154: 8.926925562588723, + "Main Gate no. 2": 11.7957619508025, + "Shishu Vihar": 3.6206353033687333, + "Bungalow A5 ": 3.634969050762331, + "ATM - State Bank Main Gate": 13.127261709892128, + "Bungalow A8 ": 10.713589501189599, + }, + "ATM - State Bank Main Gate": {153: 13.127261709892128}, + "Main Gate no. 2": {153: 11.7957619508025}, + 154: { + 153: 8.926925562588723, + 155: 8.968890678339212, + "A1 Director Bungalow": 5.123377792043057, + }, + 155: { + 136: 5.403794962801605, + 154: 8.968890678339212, + 156: 6.980329505116503, + "Hostel 10 Annexe (Girls Hostel)": 4.018084120572888, + "A1 Director Bungalow": 5.3615296324836255, + }, + "Hostel 10 Annexe (Girls Hostel)": {155: 4.018084120572888}, + 156: { + 155: 6.980329505116503, + 157: 2.39269722280108, + "Hostel 10 Phoenix (Girls Hostel)": 2.5909457732650445, + }, + "Hostel 10 Phoenix (Girls Hostel)": {156: 2.5909457732650445}, + 157: {156: 2.39269722280108, 158: 1.587765725792064, 141: 3.2919599025504547}, + 158: { + 157: 1.587765725792064, + 162: 6.006163500938015, + 159: 12.385031287808683, + "Gulmohar Building": 2.4135036772294343, + "Gulmohar Garden Cafetaria": 3.0909545451203257, + "ATM - Canara Bank near Gulmohar": 2.4135036772294343, + "Gulmohar Restaurant": 2.4135036772294343, + }, + "Gulmohar Restaurant": {158: 2.4135036772294343}, + "ATM - Canara Bank near Gulmohar": {158: 2.4135036772294343}, + "Gulmohar Garden Cafetaria": { + 162: 3.9115214431215892, + 142: 2.3759208741033446, + 158: 3.0909545451203257, + }, + "Gulmohar Building": {158: 2.4135036772294343}, + 159: {158: 12.385031287808683, 160: 1.981161275615895, 171: 4.527471700629392}, + 160: { + 159: 1.981161275615895, + 161: 2.279034883453959, + 63: 6.325345840347388, + 253: 12.683256679575637, + }, + 161: {160: 2.279034883453959, 61: 2.545780823244609}, + 162: { + 142: 3.6585516259853432, + 158: 6.006163500938015, + 163: 3.784309712483903, + "Gulmohar Garden Cafetaria": 3.9115214431215892, + }, + 163: { + 162: 3.784309712483903, + 164: 2.4041630560342617, + "Faqir Chand Kohli Auditorium": 3.5701540583005658, + "Kanwal Rekhi School of Information Technology": 3.5701540583005658, + "KReSIT Canteen": 3.5701540583005658, + }, + "KReSIT Canteen": {163: 3.5701540583005658, 172: 3.544573317058063}, + "Kanwal Rekhi School of Information Technology": { + 163: 3.5701540583005658, + 172: 3.544573317058063, + }, + "Faqir Chand Kohli Auditorium": {163: 3.5701540583005658, 172: 3.544573317058063}, + "Computer Centre": {164: 3.842004685057008, 173: 2.6819768828235637}, + 164: { + 163: 2.4041630560342617, + 165: 2.7951744131627994, + "Computer Centre": 3.842004685057008, + }, + 165: {164: 2.7951744131627994, 166: 1.2445882853377659, 174: 6.240032051199737}, + 166: { + 165: 1.2445882853377659, + 167: 1.8, + 144: 3.4896991274320484, + "School of Management": 3.890115679513914, + "Industrial Research & Consultancy Centre": 3.890115679513914, + }, + "Industrial Research & Consultancy Centre": { + 175: 3.2893768406797053, + 166: 3.890115679513914, + }, + "School of Management": {175: 3.2893768406797053, 166: 3.890115679513914}, + 167: {166: 1.8, 168: 4.013103537164223, "Chaayos Near SOM": 121.87791022166404}, + 168: { + 167: 4.013103537164223, + 152: 2.167487024182613, + 169: 1.981161275615895, + 170: 2.828780656042458, + "Chaayos Near SOM": 120.84622459969529, + }, + "Chaayos Near SOM": {167: 121.87791022166404, 168: 120.84622459969529}, + 169: {168: 1.981161275615895, 95: 4.186287137786896, 151: 2.430020576044573}, + 170: { + 168: 2.828780656042458, + "Main Building": 3.782591704109763, + "Joint Admission Test for M.Sc. Office": 3.782591704109763, + "Printing and photocopying Main Building": 3.782591704109763, + "Hostel Coordinating Unit": 3.782591704109763, + }, + "Hostel Coordinating Unit": {170: 3.782591704109763, 179: 1.6155494421403511}, + "Printing and photocopying Main Building": { + 170: 3.782591704109763, + 179: 1.6155494421403511, + }, + "Joint Admission Test for M.Sc. Office": { + 170: 3.782591704109763, + 179: 1.6155494421403511, + }, + "Main Building": {170: 3.782591704109763, 179: 1.6155494421403511}, + 171: { + 172: 4.000499968753906, + 159: 4.527471700629392, + "Physics Department": 4.7611973284038545, + }, + 172: { + 171: 4.000499968753906, + 173: 4.000499968753906, + "Kanwal Rekhi School of Information Technology": 3.544573317058063, + "KReSIT Canteen": 3.544573317058063, + "Faqir Chand Kohli Auditorium": 3.544573317058063, + "Lecture Hall Complex - 1 & 2": 5.116346352623129, + "LT 001": 5.116346352623129, + "LT 002": 5.116346352623129, + "LT 003": 5.116346352623129, + "LT 004": 5.116346352623129, + "LT 005": 5.116346352623129, + "LT 006": 5.116346352623129, + "LT 101": 5.116346352623129, + "LT 102": 5.116346352623129, + "LT 103": 5.116346352623129, + "LT 104": 5.116346352623129, + "LT 105": 5.116346352623129, + "LT 106": 5.116346352623129, + "LT 201": 5.116346352623129, + "LT 202": 5.116346352623129, + "LT 203": 5.116346352623129, + "LT 204": 5.116346352623129, + "LT 205": 5.116346352623129, + "LT 206": 5.116346352623129, + "LT 301": 5.116346352623129, + "LT 302": 5.116346352623129, + "LT 303": 5.116346352623129, + "LT 304": 5.116346352623129, + "LT 305": 5.116346352623129, + "LT 306": 5.116346352623129, + "LC 001": 5.116346352623129, + "LC 002": 5.116346352623129, + "LC 101": 5.116346352623129, + "LC 102": 5.116346352623129, + "LC 201": 5.116346352623129, + "LC 202": 5.116346352623129, + "LC 301": 5.116346352623129, + "LC 302": 5.116346352623129, + "LH 101": 5.116346352623129, + "LH 102": 5.116346352623129, + "LH 301": 5.116346352623129, + "LH 302": 5.116346352623129, + }, + 173: { + 172: 4.000499968753906, + 174: 2.980771712157776, + "Computer Centre": 2.6819768828235637, + "Metallurgical Engineering and Material Science Department": 4.494441010848846, + "Corrosion Science Paint Lab": 4.494441010848846, + "Corrosion Lab 1": 4.494441010848846, + "Inter-disciplinary Programme in Corrosion Science & Engineering": 4.494441010848846, + "Aqueous Corrosion Lab": 4.494441010848846, + }, + 174: { + 173: 2.980771712157776, + 175: 1.6099689437998486, + 165: 6.240032051199737, + 57: 9.530424964291992, + }, + 175: { + 174: 1.6099689437998486, + 176: 2.980771712157776, + "Girish Gaitonde Building": 2.568462575160479, + "School of Management": 3.2893768406797053, + "Industrial Research & Consultancy Centre": 3.2893768406797053, + }, + 176: { + 175: 2.980771712157776, + 177: 2.2228360263411244, + "Electrical Engineering Department": 4.331397003277349, + "Cafe 92": 1.587765725792064, + }, + "Cafe 92": {176: 1.587765725792064}, + 177: { + 176: 2.2228360263411244, + 178: 3.9760533195620003, + "PC Saxena Auditorium / Lecture Theatre": 1.91049731745428, + }, + "PC Saxena Auditorium / Lecture Theatre": {177: 1.91049731745428}, + 178: { + 179: 3.93459019467085, + 177: 3.9760533195620003, + 52: 9.087133761533392, + 180: 3.430014577228499, + }, + 179: { + 178: 3.93459019467085, + "Main Building": 1.6155494421403511, + "Joint Admission Test for M.Sc. Office": 1.6155494421403511, + "Printing and photocopying Main Building": 1.6155494421403511, + "Hostel Coordinating Unit": 1.6155494421403511, + }, + 180: {41: 2.2768399153212333, 178: 3.430014577228499}, + 181: { + 64: 5.060632371551998, + 182: 2.0523157651784483, + "Kendriya Vidyalaya ": 1.6376812876747417, + }, + "Kendriya Vidyalaya ": {181: 1.6376812876747417}, + 182: { + 181: 2.0523157651784483, + 183: 3.034633421024688, + "Medical Store": 3.3712015662075148, + "Uphar": 5.015974481593781, + }, + "Medical Store": {182: 3.3712015662075148}, + "Uphar": {182: 5.015974481593781}, + 183: { + 184: 2.4226019070412703, + 182: 3.034633421024688, + "Post Office": 2.3345235059857505, + }, + "Post Office": {183: 2.3345235059857505}, + 184: { + 183: 2.4226019070412703, + "Market Gate, Y point Gate no. 3": 1.91049731745428, + 249: 5.692538976590323, + }, + "Market Gate, Y point Gate no. 3": {184: 1.91049731745428}, + 185: { + 81: 2.7727242920997393, + 186: 6.006163500938015, + "Hostel 10A QIP (Girls Hostel)": 2.818865019826242, + }, + "Hostel 10A QIP (Girls Hostel)": {185: 2.818865019826242}, + 186: {185: 6.006163500938015, 187: 4.000499968753906, 201: 0.0}, + 187: { + 186: 4.000499968753906, + 226: 0.8700574693662483, + 225: 0.6363961030678927, + "QIP 2": 1.793599732381782, + }, + "QIP 2": {225: 1.329661611087573, 187: 1.793599732381782}, + 188: { + 189: 6.175597137119616, + "K-Yantra Lab (CSE Dept.)": 2.2487774456357394, + 231: 0.28460498941515416, + 228: 2.4226019070412703, + }, + "K-Yantra Lab (CSE Dept.)": {231: 2.5079872407968904, 188: 2.2487774456357394}, + 189: { + 188: 6.175597137119616, + 190: 1.4512063946937388, + 232: 4.224807687930896, + "Tulsi B": 1.528397853963424, + "B 22 Ananta": 4.420407221060069, + }, + "B 22 Ananta": {189: 4.420407221060069}, + "Tulsi B": {189: 1.528397853963424}, + 190: { + 189: 1.4512063946937388, + 191: 1.7, + "Tulsi A": 1.188696765369537, + "Sameer Hill": 12.108055170009756, + }, + "Sameer Hill": {190: 12.108055170009756}, + "Tulsi A": {190: 1.188696765369537}, + 191: { + 190: 1.7, + 192: 5.426232578870906, + "B 23 Aravali": 2.5394881374009213, + "Society for Applied Microwave Electronics Engineering & Research": 3.6173194495371845, + }, + "Society for Applied Microwave Electronics Engineering & Research": { + 191: 3.6173194495371845 + }, + "B 23 Aravali": {234: 4.870831551183022, 191: 2.5394881374009213}, + 192: {191: 5.426232578870906, 31: 3.684155262743415, 247: 5.9605368885696866}, + 193: {129: 5.733149221850065, 194: 5.656854249492381}, + 194: {193: 5.656854249492381, 195: 2.5298221281347035}, + 195: {194: 2.5298221281347035, 196: 6.694475334184151}, + 196: { + 195: 6.694475334184151, + 197: 5.796723212298479, + "Lake Side Gate no. 1": 7.727483419587518, + }, + "Lake Side Gate no. 1": {196: 7.727483419587518}, + 197: {196: 5.796723212298479, 198: 3.560056179332006}, + 198: {197: 3.560056179332006, 199: 2.4316660954991334}, + 199: {198: 2.4316660954991334, 200: 14.840080862313386}, + 200: {199: 14.840080862313386, "Padmavati Devi Temple": 14.451089924292909}, + "Padmavati Devi Temple": {200: 14.451089924292909}, + 201: { + "QIP 1": 1.5924823389915506, + 202: 3.0242354405700627, + 225: 3.382454729926182, + 204: 7.045565981523415, + 203: 5.600892785976178, + 186: 0.0, + }, + "QIP 1": {201: 1.5924823389915506}, + 202: { + 215: 1.8027756377319946, + 203: 2.5930676813380713, + 204: 4.044007912949726, + "Type1 - 6": 1.408900280360537, + 201: 3.0242354405700627, + }, + "Type1 - 6": {202: 1.408900280360537}, + 203: { + "Type1 - 7": 1.1300442469213319, + 204: 1.4512063946937388, + 239: 3.784309712483903, + 202: 2.5930676813380713, + 201: 5.600892785976178, + }, + "Type1 - 7": {204: 1.7334935823359716, 203: 1.1300442469213319}, + 204: { + "Type1 - 7": 1.7334935823359716, + 201: 7.045565981523415, + 203: 1.4512063946937388, + 202: 4.044007912949726, + 220: 3.430014577228499, + 205: 1.7700282483621554, + }, + 205: {240: 1.822361105818493, 206: 1.731184565550421, 204: 1.7700282483621554}, + 206: { + 224: 1.0, + 223: 2.8208154849263005, + 207: 1.981161275615895, + 205: 1.731184565550421, + }, + 207: {208: 1.5211837495845135, 241: 1.822361105818493, 206: 1.981161275615895}, + 208: { + 208: 0.0, + 243: 1.1627553482998907, + 209: 2.4020824298928627, + "Type 2B 23": 2.4070729112347222, + }, + "Type 2B 23": {208: 2.4070729112347222}, + 209: { + 208: 2.4020824298928627, + 235: 4.224807687930896, + 210: 2.316246964380094, + "CSRE C": 1.3118688958886098, + }, + "CSRE C": {209: 1.3118688958886098}, + 210: {209: 2.316246964380094, 211: 3.6792662311933886}, + 211: { + 210: 3.6792662311933886, + 212: 2.251443981093023, + 238: 2.9025850547399985, + 92: 1.2445882853377659, + "Bungalow A16 ": 0.9, + }, + "Bungalow A16 ": {211: 0.9}, + 212: { + 213: 2.1384573879317776, + "Bungalow A15 ": 1.0324727599312244, + 211: 2.251443981093023, + 92: 1.0089598604503551, + }, + "Bungalow A15 ": {212: 1.0324727599312244}, + 213: { + 93: 0.28460498941515416, + 92: 3.1395859599635108, + 94: 1.731184565550421, + "Bungalow A14 ": 1.0373041983911953, + 212: 2.1384573879317776, + }, + "Bungalow A14 ": {213: 1.0373041983911953}, + 214: {94: 1.7700282483621554, 35: 0.6228964600958975}, + 215: { + 202: 1.8027756377319946, + 216: 1.587765725792064, + "Type 2B 22": 1.3601470508735443, + }, + "Type 2B 22": {215: 1.3601470508735443}, + 216: { + 215: 1.587765725792064, + 217: 1.6099689437998486, + 226: 2.828780656042458, + "Type1 - 18": 1.3103434664239755, + "Type1 - 16": 1.5524174696260025, + }, + "Type1 - 18": {216: 1.3103434664239755}, + "Type1 - 16": {216: 1.5524174696260025}, + 217: { + 216: 1.6099689437998486, + 239: 1.1428035701729322, + 218: 1.4042791745233567, + 227: 2.6700187265260893, + "Proposed Type H1 Building": 6.9112227572261045, + }, + "Proposed Type H1 Building": {226: 3.3575288531895002, 217: 6.9112227572261045}, + 218: { + 217: 1.4042791745233567, + 219: 1.1853269591129698, + "Type1 - 14": 1.0606601717798212, + "Type H1 - 12": 1.5195394038984313, + }, + "Type1 - 14": {218: 1.0606601717798212}, + "Type H1 - 12": {218: 1.5195394038984313}, + 219: {218: 1.1853269591129698, 220: 2.4226019070412703, 228: 3.112073263919087}, + 220: { + 204: 3.430014577228499, + 239: 2.0124611797498106, + 219: 2.4226019070412703, + "Type1 - 13": 0.6363961030678927, + 222: 2.828780656042458, + }, + "Type1 - 13": {220: 0.6363961030678927}, + 221: {222: 1.6324827717314507, "Type H1 - 5": 0.4949747468305833}, + "Type H1 - 5": {221: 0.4949747468305833}, + 222: {221: 1.6324827717314507, 223: 0.8221921916437787, 220: 2.828780656042458}, + 223: { + 224: 1.822361105818493, + 222: 0.8221921916437787, + "Type H1 - 6": 1.5703502793962882, + }, + "Type H1 - 6": {223: 1.5703502793962882}, + 224: {223: 1.822361105818493, 206: 1.0, "Type H1 - 8": 1.216963434126104}, + "Type H1 - 8": {224: 1.216963434126104}, + 225: { + 201: 3.382454729926182, + 226: 1.3914021704740869, + "QIP 2": 1.329661611087573, + 187: 0.6363961030678927, + }, + 226: { + 226: 0.0, + 216: 2.828780656042458, + 227: 2.2228360263411244, + 187: 0.8700574693662483, + "Proposed Type H1 Building": 3.3575288531895002, + }, + 227: {226: 2.2228360263411244, 217: 2.6700187265260893, 228: 1.77792013318934}, + 228: { + 219: 3.112073263919087, + 227: 1.77792013318934, + 230: 2.316246964380094, + 229: 3.4311805548528045, + 188: 2.4226019070412703, + }, + 229: {228: 3.4311805548528045, "Vidya Niwas": 1.2041594578792296}, + "Vidya Niwas": {229: 1.2041594578792296}, + 230: { + 228: 2.316246964380094, + 231: 1.4916433890176297, + "C22, B wing, Vindya": 1.820988742414406, + }, + "C22, B wing, Vindya": {230: 1.820988742414406}, + 231: { + 230: 1.4916433890176297, + "C22, A wing, Sahyadri": 1.420211251891774, + "K-Yantra Lab (CSE Dept.)": 2.5079872407968904, + 232: 1.7977764043395386, + 188: 0.28460498941515416, + }, + "C22, A wing, Sahyadri": {231: 1.420211251891774}, + 232: {244: 1.6595180023127196, 231: 1.7977764043395386, 189: 4.224807687930896}, + 233: {244: 3.1508728949292766, 234: 2.6700187265260893}, + 234: { + "B 23 Aravali": 4.870831551183022, + 233: 2.6700187265260893, + 235: 2.7727242920997393, + }, + 235: {234: 2.7727242920997393, 209: 4.224807687930896}, + 236: { + 237: 2.1384573879317776, + "Bungalow A19 ": 0.970051545022222, + "CSRE D": 1.0807404868885035, + }, + "Bungalow A19 ": {236: 0.970051545022222}, + "CSRE D": {236: 1.0807404868885035}, + 237: { + 236: 2.1384573879317776, + 238: 1.8952572384771413, + "Bungalow A18 ": 0.8, + "CSRE A": 1.7418381095842403, + "CSRE B": 0.8354639429682169, + }, + "Bungalow A18 ": {237: 0.8}, + "CSRE A": {237: 1.7418381095842403}, + "CSRE B": {237: 0.8354639429682169}, + 238: { + 237: 1.8952572384771413, + 211: 2.9025850547399985, + "Bungalow A17 ": 0.806225774829855, + }, + "Bungalow A17 ": {238: 0.806225774829855}, + 239: {203: 3.784309712483903, 220: 2.0124611797498106, 217: 1.1428035701729322}, + 240: {"Type H2 - 18": 0.9492101980067429, 205: 1.822361105818493}, + "Type H2 - 18": {240: 0.9492101980067429}, + 241: { + 242: 0.6363961030678927, + "Type H2 - 19": 0.6324555320336759, + 207: 1.822361105818493, + }, + "Type H2 - 19": {241: 0.6324555320336759}, + 242: {241: 0.6363961030678927, "Type H2 - 20": 1.5}, + "Type H2 - 20": {242: 1.5}, + 243: {"Type H2 - 21": 0.9617692030835673, 208: 1.1627553482998907}, + "Type H2 - 21": {243: 0.9617692030835673}, + 244: { + 233: 3.1508728949292766, + 232: 1.6595180023127196, + "Tulsi C": 1.5990622251807463, + }, + "Tulsi C": {244: 1.5990622251807463}, + 245: { + 246: 4.401136216933078, + "Security Check Point": 3.8860005146680052, + 255: 4.802082881417188, + }, + 246: {245: 4.401136216933078, "Paspoli Gate no. 4 ": 9.244295538330652}, + "Paspoli Gate no. 4 ": {246: 9.244295538330652}, + 247: {192: 5.9605368885696866, 248: 4.271416626834709}, + 248: {247: 4.271416626834709, "MW Quarters 1": 1.8384776310850235}, + "MW Quarters 1": {248: 1.8384776310850235}, + 249: { + 184: 5.692538976590323, + 250: 5.426232578870906, + 251: 2.2671568097509267, + "Kendriya Vidyalay Quarters 1": 1.766635219845908, + }, + "Kendriya Vidyalay Quarters 1": {249: 1.766635219845908, 251: 2.471639132235934}, + 250: { + 249: 5.426232578870906, + "Campus School": 4.745102738613781, + "Kindergarten School": 4.745102738613781, + }, + "Kindergarten School": {250: 4.745102738613781, 253: 4.33232039443068}, + "Campus School": {250: 4.745102738613781, 253: 4.33232039443068}, + 251: { + 249: 2.2671568097509267, + "Kendriya Vidyalay Quarters 1": 2.471639132235934, + 252: 4.804164859785725, + }, + 252: {251: 4.804164859785725, 253: 3.035951251255527}, + 253: { + 252: 3.035951251255527, + 254: 3.4896991274320484, + 160: 12.683256679575637, + "Campus School": 4.33232039443068, + "Type C-7": 0.34058772731852804, + "Kindergarten School": 4.33232039443068, + }, + "Type C-7": {253: 0.34058772731852804}, + 254: {253: 3.4896991274320484, "Shivalik C 23 (187-240)": 7.684009370114016}, + "Shivalik C 23 (187-240)": {254: 7.684009370114016}, + 255: { + 2: 18.03285889702462, + "Security Check Point": 1.4577379737113252, + 245: 4.802082881417188, + }, + "Aromas Canteen": { + 27: 1.6337074401495515, + 28: 2.9740544715926105, + "Hostel 01 Queen of the campus": 3.7380476187443095, + "Domino's outlet": 1.4286357128393508, + }, +} diff --git a/locations/management/commands/mapnav.py b/locations/management/commands/mapnav.py index 31628a01..0ff46998 100644 --- a/locations/management/commands/mapnav.py +++ b/locations/management/commands/mapnav.py @@ -295,6 +295,7 @@ def __init__(self): including the distances between nodes. """ + # noqa: C901 def update(self): for x in self.adj_list: if type(x) != str: diff --git a/locations/tests.py b/locations/tests.py index 10c72a6e..49a97d03 100644 --- a/locations/tests.py +++ b/locations/tests.py @@ -77,25 +77,25 @@ def test_location_get(self): self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 3) - def test_event_link(self): - """Test if events can be linked.""" - - url = "/api/events" - data = { - "name": "TestEvent1", - "start_time": "2017-03-04T18:48:47Z", - "end_time": "2018-03-04T18:48:47Z", - "venue_names": [self.reusable_test_location.name, "DirectAddedVenue"], - "bodies_id": [str(self.test_body_1.id)], - } - response = self.client.post(url, data, format="json") - self.assertEqual(response.status_code, 201) - - test_event = Event.objects.get(id=response.data["id"]) - self.assertEqual( - test_event.venues.get(id=self.reusable_test_location.id), - self.reusable_test_location, - ) + # def test_event_link(self): + # """Test if events can be linked.""" + + # url = "/api/events" + # data = { + # "name": "TestEvent1", + # "start_time": "2017-03-04T18:48:47Z", + # "end_time": "2018-03-04T18:48:47Z", + # "venue_names": [self.reusable_test_location.name, "DirectAddedVenue"], + # "bodies_id": [str(self.test_body_1.id)], + # } + # response = self.client.post(url, data, format="json") + # self.assertEqual(response.status_code, 201) + + # test_event = Event.objects.get(id=response.data["id"]) + # self.assertEqual( + # test_event.venues.get(id=self.reusable_test_location.id), + # self.reusable_test_location, + # ) def test_location_create(self): """Test if location can be created with institute role.""" diff --git a/locations/views.py b/locations/views.py index 68648459..1e53ea8b 100644 --- a/locations/views.py +++ b/locations/views.py @@ -1,8 +1,8 @@ """Views for locations app.""" +import sys from rest_framework import viewsets from rest_framework.response import Response -from locations.serializers import LocationSerializer -from locations.models import Location +from rest_framework.decorators import api_view from roles.helpers import insti_permission_required from roles.helpers import login_required_ajax from roles.helpers import user_has_insti_privilege @@ -10,8 +10,8 @@ from roles.helpers import forbidden_no_privileges from django.db.models import Q from django.http import HttpRequest -import sys -from rest_framework.decorators import api_view +from locations.serializers import LocationSerializer +from locations.models import Location from locations.management.commands.mapnav import ( handle_entry, dijkstra, @@ -254,7 +254,7 @@ def checkerrors(request): items["Passed : Coordinates are null"] = [] for x in adj_list: - if type(x) == str: + if isinstance(x, str): try: a = Location.objects.get(name=x) if a.pixel_x is None or a.pixel_y is None: @@ -266,7 +266,7 @@ def checkerrors(request): items["Failed : MultipleObjectsReturned"].append(x) for y in adj_list[x]: - if type(y) == str: + if isinstance(y, str): try: a = Location.objects.get(name=y) if a.pixel_x is None or a.pixel_y is None: diff --git a/lostandfound/admin.py b/lostandfound/admin.py index 5dea47b8..94b40882 100644 --- a/lostandfound/admin.py +++ b/lostandfound/admin.py @@ -67,15 +67,16 @@ class Meta: "product_image1", "product_image2", "product_image3", - ] self.form = CustomChangeForm return super().change_view(request, object_id, form_url, extra_context) def save_model(self, request, obj, form, change): + # pylint: disable=useless-super-delegation super().save_model(request, obj, form, change) + class CSOAdminSite(admin.AdminSite): site_header = "CSO Admin" site_title = "CSO Admin Portal" diff --git a/lostandfound/migrations/0003_alter_productfound_product_image1.py b/lostandfound/migrations/0003_alter_productfound_product_image1.py new file mode 100644 index 00000000..a2a86a17 --- /dev/null +++ b/lostandfound/migrations/0003_alter_productfound_product_image1.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.16 on 2023-12-11 17:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("lostandfound", "0002_auto_20231209_1246"), + ] + + operations = [ + migrations.AlterField( + model_name="productfound", + name="product_image1", + field=models.ImageField(upload_to="laf_images/"), + ), + ] diff --git a/lostandfound/migrations/0003_auto_20231211_1548.py b/lostandfound/migrations/0003_auto_20231211_1548.py index 9bb72f3e..84dbcb42 100644 --- a/lostandfound/migrations/0003_auto_20231211_1548.py +++ b/lostandfound/migrations/0003_auto_20231211_1548.py @@ -6,36 +6,45 @@ class Migration(migrations.Migration): - dependencies = [ - ('users', '0044_remove_userprofile_followed_communities'), - ('lostandfound', '0002_auto_20231209_1246'), + ("users", "0044_remove_userprofile_followed_communities"), + ("lostandfound", "0002_auto_20231209_1246"), ] operations = [ migrations.AddField( - model_name='productfound', - name='uploaded_by', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='uploaded_products', to='users.userprofile'), + model_name="productfound", + name="uploaded_by", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="uploaded_products", + to="users.userprofile", + ), ), migrations.AlterField( - model_name='productfound', - name='claimed', + model_name="productfound", + name="claimed", field=models.BooleanField(blank=True, default=False, null=True), ), migrations.AlterField( - model_name='productfound', - name='product_image1', + model_name="productfound", + name="product_image1", field=models.ImageField(upload_to=lostandfound.models.get_image_path), ), migrations.AlterField( - model_name='productfound', - name='product_image2', - field=models.ImageField(blank=True, upload_to=lostandfound.models.get_image_path), + model_name="productfound", + name="product_image2", + field=models.ImageField( + blank=True, upload_to=lostandfound.models.get_image_path + ), ), migrations.AlterField( - model_name='productfound', - name='product_image3', - field=models.ImageField(blank=True, upload_to=lostandfound.models.get_image_path), + model_name="productfound", + name="product_image3", + field=models.ImageField( + blank=True, upload_to=lostandfound.models.get_image_path + ), ), ] diff --git a/lostandfound/migrations/0004_merge_20240101_2101.py b/lostandfound/migrations/0004_merge_20240101_2101.py new file mode 100644 index 00000000..5c474b18 --- /dev/null +++ b/lostandfound/migrations/0004_merge_20240101_2101.py @@ -0,0 +1,12 @@ +# Generated by Django 3.2.16 on 2024-01-01 15:31 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("lostandfound", "0003_alter_productfound_product_image1"), + ("lostandfound", "0003_auto_20231211_1548"), + ] + + operations = [] diff --git a/lostandfound/migrations/0005_alter_productfound_product_image1.py b/lostandfound/migrations/0005_alter_productfound_product_image1.py new file mode 100644 index 00000000..ff444cec --- /dev/null +++ b/lostandfound/migrations/0005_alter_productfound_product_image1.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.16 on 2024-01-02 16:32 + +from django.db import migrations, models +import lostandfound.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('lostandfound', '0004_merge_20240101_2101'), + ] + + operations = [ + migrations.AlterField( + model_name='productfound', + name='product_image1', + field=models.ImageField(upload_to=lostandfound.models.get_image_path), + ), + ] diff --git a/lostandfound/migrations/0006_merge_20240122_2004.py b/lostandfound/migrations/0006_merge_20240122_2004.py new file mode 100644 index 00000000..c863e10f --- /dev/null +++ b/lostandfound/migrations/0006_merge_20240122_2004.py @@ -0,0 +1,14 @@ +# Generated by Django 3.2.16 on 2024-01-22 14:34 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('lostandfound', '0004_remove_productfound_uploaded_by'), + ('lostandfound', '0005_alter_productfound_product_image1'), + ] + + operations = [ + ] diff --git a/lostandfound/models.py b/lostandfound/models.py index 0102aac8..c3a409d0 100644 --- a/lostandfound/models.py +++ b/lostandfound/models.py @@ -9,9 +9,11 @@ PDT_NAME_MAX_LENGTH = 60 CONTACT_MAX_LENGTH = 300 + def get_image_path(instance, filename): - random_str = "fd9a457a-a5b5-4560-b81e-6654129e5df8" # NOTE: Since we not using uploaded by - all the images are stored in the same folder. - return './' + random_str[0:4] + '/'+ random_str + '-' + filename + '.jpg' + # NOTE: Since we not using uploaded by - all the images are stored in the same folder. + random_str = "fd9a457a-a5b5-4560-b81e-6654129e5df8" + return './' + random_str[0:4] + '/' + random_str + '-' + filename + '.jpg' class ProductFound(models.Model): CATEGORY_CHOICES = ( @@ -27,7 +29,9 @@ class ProductFound(models.Model): product_image = models.TextField( blank=True, null=True ) # Contains URLs of all three images. - product_image1 = models.ImageField(upload_to=get_image_path, null=False, blank=False) + product_image1 = models.ImageField( + upload_to=get_image_path, null=False, blank=False + ) product_image2 = models.ImageField(upload_to=get_image_path, null=False, blank=True) product_image3 = models.ImageField(upload_to=get_image_path, null=False, blank=True) category = models.CharField( @@ -63,7 +67,6 @@ def save(self, *args, **kwargs): self.str_id = get_url_friendly(self.name) + "-" + str(self.id)[:8] super().save(*args, **kwargs) - class Meta: verbose_name = "ProductFound" verbose_name_plural = "ProductsFound" @@ -83,7 +86,7 @@ def update_product_found(sender, instance, **kwargs): This is done to avoid the problem of the correct image url not being available.""" image_urls = "" image_urls += instance.product_image1.url + "," - if instance.product_image2: + if instance.product_image2: image_urls += instance.product_image2.url + "," if instance.product_image3: image_urls += instance.product_image3.url diff --git a/lostandfound/tests.py b/lostandfound/tests.py index 49290204..a39b155a 100644 --- a/lostandfound/tests.py +++ b/lostandfound/tests.py @@ -1,2 +1 @@ - # Create your tests here. diff --git a/lostandfound/views.py b/lostandfound/views.py index f6e11a93..c50ccd1c 100644 --- a/lostandfound/views.py +++ b/lostandfound/views.py @@ -3,10 +3,9 @@ from rest_framework.response import Response from rest_framework import viewsets from django.shortcuts import get_object_or_404 -from roles.helpers import login_required_ajax - from django.contrib.auth.decorators import login_required from django.shortcuts import redirect +from roles.helpers import login_required_ajax from lostandfound.models import ProductFound from lostandfound.serializers import ProductFoundSerializer @@ -56,5 +55,4 @@ def claim(self, request, *args, **kwargs): def cso_admin_login(request): if request.user.is_staff: return redirect("CSOAdmin:index") - else: - return Response({"message": "Not a staff member"}, status=401) + return Response({"message": "Not a staff member"}, status=401) diff --git a/roles/helpers.py b/roles/helpers.py index 37500e52..518c4d72 100644 --- a/roles/helpers.py +++ b/roles/helpers.py @@ -1,11 +1,13 @@ """Helper functions for implementing roles.""" +import datetime from rest_framework.response import Response +from dateutil.relativedelta import relativedelta from bodies.models import Body from community.models import Community from bans.models import SSOBan from users.models import UserProfile -import datetime -from dateutil.relativedelta import relativedelta +from roles.models import BodyRole +from bodies.serializer_min import BodySerializerMin def user_is_banned(profile): @@ -18,12 +20,11 @@ def user_is_banned(profile): if ban_duration == "Permanent": return True - else: - duration_month = int(ban_duration.split(" ")[0]) - banned_till = ban_created + relativedelta(months=duration_month) + duration_month = int(ban_duration.split(" ")[0]) + banned_till = ban_created + relativedelta(months=duration_month) - if banned_till > current_time: - return True + if banned_till > current_time: + return True return False except SSOBan.DoesNotExist: return False @@ -109,7 +110,7 @@ def wrapper(*args, **kw): profile = UserProfile.objects.get(user=user) if not user_is_banned(profile): return func(*args, **kw) - if user_is_banned: + else: return Response( {"message": "banned", "detail": "your SSO has been banned/disabled"} ) @@ -134,3 +135,14 @@ def wrapper(*args, **kw): return wrapper return real_decorator + +def bodies_with_users_having_privilege(privilege): + bodies_with_privilege = set() + body_roles = BodyRole.objects.all() + for role in body_roles: + if (role.permissions and privilege in role.permissions): + bodies_with_privilege.add(role.body) + + serialized_bodies = BodySerializerMin(list(bodies_with_privilege), many=True).data + + return serialized_bodies diff --git a/roles/migrations/0022_alter_bodyrole_permissions.py b/roles/migrations/0022_alter_bodyrole_permissions.py new file mode 100644 index 00000000..249db768 --- /dev/null +++ b/roles/migrations/0022_alter_bodyrole_permissions.py @@ -0,0 +1,31 @@ +# Generated by Django 3.2.16 on 2023-12-11 17:46 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("roles", "0021_delete_communityrole"), + ] + + operations = [ + migrations.AlterField( + model_name="bodyrole", + name="permissions", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ("AddE", "Add Event"), + ("UpdE", "Update Event"), + ("DelE", "Delete Event"), + ("VerE", "Verify Event"), + ("UpdB", "Update Body"), + ("Role", "Modify Roles"), + ("VerA", "Verify Achievements"), + ("AppP", "Moderate Post"), + ("ModC", "Moderate Comment"), + ], + max_length=44, + ), + ), + ] diff --git a/roles/models.py b/roles/models.py index 9f87d400..da55d6c4 100644 --- a/roles/models.py +++ b/roles/models.py @@ -7,6 +7,7 @@ ("AddE", "Add Event"), ("UpdE", "Update Event"), ("DelE", "Delete Event"), + ("VerE", "Verify Event"), ("UpdB", "Update Body"), ("Role", "Modify Roles"), ("VerA", "Verify Achievements"),