浏览代码

added a helper function to add all location information belog a account

Mohidul Islam 5 年之前
父节点
当前提交
1868d8310e
共有 8 个文件被更改,包括 97 次插入15 次删除
  1. 8 2
      gauth/admin.py
  2. 0 0
      gauth/auth_utils.py
  3. 25 0
      gauth/location_utils.py
  4. 27 0
      gauth/migrations/0003_location.py
  5. 12 0
      gauth/models.py
  6. 1 1
      gauth/views.py
  7. 23 0
      review/migrations/0003_auto_20191229_0956.py
  8. 1 12
      review/models.py

+ 8 - 2
gauth/admin.py

@@ -1,9 +1,15 @@
 from django.contrib import admin
-from .models import UserModel
+from .models import UserModel, Location
 
 
 class UserModelAdmin(admin.ModelAdmin):
     list_display = ['user', 'refresh_token', 'gmb_account_id']
 
 
-admin.site.register(UserModel, UserModelAdmin)
+class LocationsAdmin(admin.ModelAdmin):
+    list_display = ['location_id', 'location_name', 'website_url', 'display_name']
+
+
+admin.site.register(Location, LocationsAdmin)
+
+admin.site.register(UserModel, UserModelAdmin)

+ 0 - 0
gauth/utils.py → gauth/auth_utils.py


+ 25 - 0
gauth/location_utils.py

@@ -0,0 +1,25 @@
+from django.contrib.auth.models import User
+from requests import get
+from .auth_utils import refresh_access_token
+from .models import UserModel, Location
+
+
+def populate_locations():
+    access_token, _ = refresh_access_token()
+    user = User.objects.get(username='admin@ercare')
+    gmb_id = UserModel.objects.get(user=user).gmb_account_id
+    url = 'https://mybusiness.googleapis.com/v4/accounts/' + gmb_id + '/locations'
+    headers = {
+        'authorization': 'Bearer ' + access_token,
+        'content-type': 'application/json'
+    }
+    res = get(url, headers=headers).json()
+    locations = res['locations']
+    for loc in locations:
+        # loc['name'] = 'accounts/103266181421855655295/locations/8916258876770296726'
+        loc_id = loc['name'].split('/')[-1]
+        loc_name = loc['locationName']
+        loc_website = loc['websiteUrl']
+        loc_display = loc['primaryCategory']['displayName']
+        location = Location.objects.create(location_id=loc_id, location_name=loc_name, website_url=loc_website, display_name=loc_display, owner=user)
+        location.save()

+ 27 - 0
gauth/migrations/0003_location.py

@@ -0,0 +1,27 @@
+# Generated by Django 3.0 on 2019-12-29 09:56
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('gauth', '0002_auto_20191229_0659'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Location',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('location_id', models.CharField(max_length=50)),
+                ('location_name', models.CharField(max_length=50)),
+                ('website_url', models.URLField()),
+                ('display_name', models.CharField(max_length=50)),
+                ('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+    ]

+ 12 - 0
gauth/models.py

@@ -9,3 +9,15 @@ class UserModel(models.Model):
 
     def __str__(self):
         return self.user.username
+
+
+class Location(models.Model):
+    location_id = models.CharField(max_length=50)
+    location_name = models.CharField(max_length=50)
+    website_url = models.URLField()
+    display_name = models.CharField(max_length=50)
+    owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
+
+    def __str__(self):
+        return self.display_name
+

+ 1 - 1
gauth/views.py

@@ -5,7 +5,7 @@ import google_auth_oauthlib.flow
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.models import User
 
-from .utils import get_access_token, get_google_account_id
+from .auth_utils import get_access_token, get_google_account_id
 
 from .models import UserModel
 

+ 23 - 0
review/migrations/0003_auto_20191229_0956.py

@@ -0,0 +1,23 @@
+# Generated by Django 3.0 on 2019-12-29 09:56
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('gauth', '0003_location'),
+        ('review', '0002_auto_20191229_0603'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='review',
+            name='location',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='gauth.Location'),
+        ),
+        migrations.DeleteModel(
+            name='Location',
+        ),
+    ]

+ 1 - 12
review/models.py

@@ -1,17 +1,6 @@
 from django.db import models
 from django.contrib.auth.models import User
-
-
-class Location(models.Model):
-    location_id = models.CharField(max_length=50)
-    location_name = models.CharField(max_length=50)
-    website_url = models.URLField()
-    display_name = models.CharField(max_length=50)
-    owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
-
-
-    def __str__(self):
-        return self.display_name
+from gauth.models import Location
 
 
 class Reply(models.Model):