From b5f694d932f7b506295b4b836cfa4beae7303b54 Mon Sep 17 00:00:00 2001 From: und1n3 Date: Thu, 14 Oct 2021 23:46:40 +0200 Subject: [PATCH 1/3] Added generate-gdpr-export folder with first version of the funcionw --- python/generate-gdpr-export/README.md | 21 +++ python/generate-gdpr-export/asdf.csv | 117 ++++++++++++++ .../generate-gdpr-export/create_documents.py | 147 ++++++++++++++++++ python/generate-gdpr-export/main.py | 44 ++++++ python/generate-gdpr-export/requirements.txt | 1 + 5 files changed, 330 insertions(+) create mode 100644 python/generate-gdpr-export/README.md create mode 100644 python/generate-gdpr-export/asdf.csv create mode 100644 python/generate-gdpr-export/create_documents.py create mode 100644 python/generate-gdpr-export/main.py create mode 100644 python/generate-gdpr-export/requirements.txt diff --git a/python/generate-gdpr-export/README.md b/python/generate-gdpr-export/README.md new file mode 100644 index 00000000..7b17083d --- /dev/null +++ b/python/generate-gdpr-export/README.md @@ -0,0 +1,21 @@ +# 📧 Your Function Name + + +## 📝 Environment Variables + + +* **VARIABLE 1** - +* **VARIABLE 2** - + +## 🚀 Building and Packaging + +## 🎯 Trigger + \ No newline at end of file diff --git a/python/generate-gdpr-export/asdf.csv b/python/generate-gdpr-export/asdf.csv new file mode 100644 index 00000000..243dd36c --- /dev/null +++ b/python/generate-gdpr-export/asdf.csv @@ -0,0 +1,117 @@ +,$id,$collection,$permissions,name +0,61689ee7d2ab2,61689ee78135e,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +1,61689ee7d5a3c,61689ee78135e,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +2,61689ee87f9b0,61689ee8020ed,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +3,61689ee885e66,61689ee8020ed,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +4,6168a0b346a4f,6168a0b2848a2,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +5,6168a0b34c5b1,6168a0b2848a2,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +6,6168a0b44b8c5,6168a0b380577,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +7,6168a0b451e0c,6168a0b380577,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +8,6168a0b779c58,6168a0b6d3bfb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +9,6168a0b77fc50,6168a0b6d3bfb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +10,6168a0b8710f9,6168a0b7b1195,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +11,6168a0b87813c,6168a0b7b1195,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +12,6168a0bac4430,6168a0ba167a4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +13,6168a0bacabc9,6168a0ba167a4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +14,6168a0bbc1994,6168a0bb09852,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +15,6168a0bbc7b08,6168a0bb09852,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +16,6168a0bf27714,6168a0be6d4d3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +17,6168a0bf2d601,6168a0be6d4d3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +18,6168a0c003769,6168a0bf6168a,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +19,6168a0c009988,6168a0bf6168a,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +20,6168a0c4b4839,6168a0c4106fb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +21,6168a0c4baced,6168a0c4106fb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +22,6168a0c5af41f,6168a0c4eac20,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +23,6168a0c5b521f,6168a0c4eac20,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +24,6168a0c8afba1,6168a0c811185,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +25,6168a0c8b9b62,6168a0c811185,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +26,6168a0c9b3249,6168a0c8ec351,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +27,6168a0c9bacf0,6168a0c8ec351,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +28,6168a0cc5893c,6168a0cc0af82,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +29,6168a0cc5bd40,6168a0cc0af82,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +30,6168a0cceab2e,6168a0cc75312,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +31,6168a0ccf1764,6168a0cc75312,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +32,6168a0d2a1c19,6168a0d24d65f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +33,6168a0d2a5466,6168a0d24d65f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +34,6168a0d31e64c,6168a0d2bd960,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +35,6168a0d321d71,6168a0d2bd960,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +36,6168a0d654212,6168a0d6071b3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +37,6168a0d657565,6168a0d6071b3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +38,6168a0d6a0d04,6168a0d665b36,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +39,6168a0d6a35ff,6168a0d665b36,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +40,6168a0d98c734,6168a0d8ec41c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +41,6168a0d992736,6168a0d8ec41c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +42,6168a0da7153b,6168a0d9be16c,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +43,6168a0da769bf,6168a0d9be16c,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +44,6168a0dd089af,6168a0dc9f90d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +45,6168a0dd0c41f,6168a0dc9f90d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +46,6168a0dd9212e,6168a0dd25261,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +47,6168a0dd97a65,6168a0dd25261,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +48,6168a0e066d66,6168a0e0051b7,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +49,6168a0e06a00d,6168a0e0051b7,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +50,6168a0e0d664d,6168a0e08397e,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +51,6168a0e0d9cf1,6168a0e08397e,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +52,6168a0e36412b,6168a0e2ad1ed,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +53,6168a0e36a317,6168a0e2ad1ed,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +54,6168a0e465b6b,6168a0e3995ca,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +55,6168a0e46ba9c,6168a0e3995ca,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +56,6168a0ef40d3e,6168a0ee86bc4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +57,6168a0ef46a54,6168a0ee86bc4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +58,6168a0f03b5a0,6168a0ef78d8b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +59,6168a0f0411bc,6168a0ef78d8b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +60,6168a0f3b12dc,6168a0f30676d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +61,6168a0f3b71d2,6168a0f30676d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +62,6168a0f4a3493,6168a0f3e3cec,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +63,6168a0f4a883d,6168a0f3e3cec,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +64,6168a0f7936ed,6168a0f6e159d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +65,6168a0f799420,6168a0f6e159d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +66,6168a0f878a11,6168a0f7c8759,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +67,6168a0f87eae4,6168a0f7c8759,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +68,6168a11985157,6168a118c5c81,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +69,6168a1198b210,6168a118c5c81,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +70,6168a11a82264,6168a119c1e86,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +71,6168a11a87f80,6168a119c1e86,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +72,6168a11db03ec,6168a11d0c3c1,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +73,6168a11db6a1a,6168a11d0c3c1,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +74,6168a11ea65ef,6168a11de778b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +75,6168a11eac4b6,6168a11de778b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +76,6168a120d9e04,6168a12033207,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +77,6168a120e1bc3,6168a12033207,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +78,6168a121bb5bd,6168a1211c55f,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +79,6168a121c170a,6168a1211c55f,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +80,6168a124af80d,6168a12403316,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +81,6168a124b4c59,6168a12403316,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +82,6168a125aeb32,6168a124e25aa,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +83,6168a125b5ccb,6168a124e25aa,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +84,6168a12a57008,6168a1299b847,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +85,6168a12a5d1e1,6168a1299b847,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +86,6168a12b48bcf,6168a12a8b150,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +87,6168a12b500db,6168a12a8b150,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +88,6168a12e0c53e,6168a12d5e0a6,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +89,6168a12e11c41,6168a12d5e0a6,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +90,6168a12ee5f32,6168a12e43dd7,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +91,6168a12eeafad,6168a12e43dd7,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +92,6168a13223b5c,6168a1316d320,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +93,6168a13228f9c,6168a1316d320,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +94,6168a132f1185,6168a132544eb,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +95,6168a13304441,6168a132544eb,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +96,6168a135aded0,6168a1355cdae,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +97,6168a135b1dca,6168a1355cdae,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +98,6168a1361a954,6168a135cdc11,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +99,6168a1361e1dc,6168a135cdc11,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +100,6168a1464da42,6168a1459a89f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +101,6168a14652f60,6168a1459a89f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +102,6168a1473fd52,6168a14688d33,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +103,6168a14746572,6168a14688d33,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +104,6168a14a51911,6168a149921be,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +105,6168a14a57f7b,6168a149921be,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +106,6168a14b42957,6168a14a8a1fe,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +107,6168a14b48a61,6168a14a8a1fe,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +108,6168a14e3283a,6168a14d82bc9,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +109,6168a14e38827,6168a14d82bc9,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +110,6168a14f306dc,6168a14e63616,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +111,6168a14f36c61,6168a14e63616,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy +112,6168a152ad395,6168a151e028c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel +113,6168a152b363b,6168a151e028c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell +114,6168a1538f313,6168a152de7e0,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret +115,6168a1539528f,6168a152de7e0,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy diff --git a/python/generate-gdpr-export/create_documents.py b/python/generate-gdpr-export/create_documents.py new file mode 100644 index 00000000..71807c58 --- /dev/null +++ b/python/generate-gdpr-export/create_documents.py @@ -0,0 +1,147 @@ +# Perform all your imports +from appwrite.client import Client +from appwrite.services.database import Database +from appwrite.services.storage import Storage + +# Initialise the Appwrite client +client = Client() +client.set_endpoint('https://localhost/v1') # Your API Endpoint +client.set_project('615aea9a672b6') # Your project ID +client.set_key('df3da8f38df454301e10fb190aec6a40ef5a59b8643173c1ee0d73bae9308464fef6e2b090a781fafc2b5380bf556a84b74c26a48dfa0c9e6c9bd37c385d9e15cf9f07e5682fd4c489dbf78fddf56d994bdba1ebef414768e6625b691a4e3d702ffd011f7bc5f187c8ee3ac01759affebc81417683d34bf39e6c04e29016a2be') # Your secret API key + +database = Database(client) + +actors = database.create_collection( + 'Actors', + ['*'], + ['user:ppp','team:xxx'], + [ + { + "label": "Name", + "key": "name", + "type": "text", + "default": "Empty Name", + "required": True, + "array": False + }, + ] +) +movies = database.create_collection('Movies', # Collection Name + ['*'], # Read permissions + ['user:ppp', 'team:xxx'], # Write permissions + [ #Rules + { + "label": "Name", + "key": "name", + "type": "text", + "default": "Empty Name", + "required": True, + "array": False + }, + { + "label": "Release Year", + "key": "releaseYear", + "type": "numeric", + "default": 1970, + "required": True, + "array": False + }, + { + "label": "Actors", + "key": "actors", + "type": "document", + "default": None, + "required": False, + "array": True, + "list": [actors['$id']] # Name the collections unique IDs that are allowed in the attribute + } + ] + ) +result = database.create_document( + movies['$id'], + { + "name": "Frozen 2", + "releaseYear": 2019, + "actors": + [ + { + "$collection": actors['$id'], # The actors collection unique ID + "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:xxx']}, # Set document permissions + "name": "Idina Menzel" + }, + { + "$collection": actors['$id'], # The actors collection unique ID + "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:xxx']}, # Set document permissions + "name": "Kristen Bell" + } + ] + }, + ['*']) + + +authors = database.create_collection( + 'Authors', + ['*'], + ['user:ppp','team:qqq'], + [ + { + "label": "Name", + "key": "name", + "type": "text", + "default": "Empty Name", + "required": True, + "array": False + }, + ] +) +books = database.create_collection('Books', # Collection Name + ['*'], # Read permissions + ['user:ppp', 'team:qqq'], # Write permissions + [ #Rules + { + "label": "Name", + "key": "name", + "type": "text", + "default": "Empty Name", + "required": True, + "array": False + }, + { + "label": "Release Year", + "key": "releaseYear", + "type": "numeric", + "default": 1970, + "required": True, + "array": False + }, + { + "label": "Authors", + "key": "authors", + "type": "document", + "default": None, + "required": False, + "array": True, + "list": [authors['$id']] # Name the collections unique IDs that are allowed in the attribute + } + ] + ) +result_2 = database.create_document( + books['$id'], + { + "name": "cronicas de dragonlance", + "releaseYear": 2019, + "authors": + [ + { + "$collection": authors['$id'], # The actors collection unique ID + "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:qqq']}, # Set document permissions + "name": "Margaret" + }, + { + "$collection": authors['$id'], # The actors collection unique ID + "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:qqq']}, # Set document permissions + "name": "Tracy" + } + ] + }, + ['*']) \ No newline at end of file diff --git a/python/generate-gdpr-export/main.py b/python/generate-gdpr-export/main.py new file mode 100644 index 00000000..ac86a384 --- /dev/null +++ b/python/generate-gdpr-export/main.py @@ -0,0 +1,44 @@ +# Perform all your imports +from appwrite.client import Client +from appwrite.services.database import Database +import pandas as pd +from appwrite.services.storage import Storage + +# Initialise the Appwrite client +client = Client() +client.set_endpoint('https://localhost/v1') # Your API Endpoint +client.set_project('615aea9a672b6') # Your project ID +client.set_key('a2359078b4ec35e27b3146bdc8a7913e9f5dc57ae82a6f7deb55a970dbebaf919333df99f4a054a9ab9ac66f3158fbb756c994711285479b76ce68e49f08b867ab5e0e9668c840fa6f27f593c41b984389b708ce75165f826c6fc94835aa8219a43db28a63d83fd7eacbc4105acaea7db993c0150167ea111a728731763b0db6') # Your secret API key + +all_documents = [] + +user = 'user:ppp' +database = Database(client) +off_col = 0 +while True: + collections = database.list_collections(limit=100,offset=off_col) + for collection in collections['collections']: + collection_id = collection['$id'] + off_doc=0 + while True: + print(off_col,off_doc) + documents = database.list_documents(collection_id,limit=100,offset=off_doc) + for document in documents['documents']: + if user in document['$permissions']['read'] or '*' in document['$permissions']['read']: + all_documents.append(document) + off_doc += 100 + if documents['sum']<=off_doc: + break + + off_col += 100 + if collections['sum']<=off_col: + break + + +final_csv = pd.DataFrame(all_documents) +final_csv.to_csv('asdf.csv') + + +storage = Storage(client) + +result = storage.create_file(open('asdf.csv', 'rb'),[user]) \ No newline at end of file diff --git a/python/generate-gdpr-export/requirements.txt b/python/generate-gdpr-export/requirements.txt new file mode 100644 index 00000000..7a6977ed --- /dev/null +++ b/python/generate-gdpr-export/requirements.txt @@ -0,0 +1 @@ +appwrite \ No newline at end of file From eeea801ae22bd9188a3533e2e7b91e71dd982a3d Mon Sep 17 00:00:00 2001 From: und1n3 Date: Fri, 15 Oct 2021 17:45:52 +0200 Subject: [PATCH 2/3] created function for generating gdpr export. --- python/generate-gdpr-export/README.md | 49 ++++-- python/generate-gdpr-export/asdf.csv | 117 -------------- .../generate-gdpr-export/create_documents.py | 147 ------------------ python/generate-gdpr-export/main.py | 48 +++--- python/generate-gdpr-export/requirements.txt | 2 +- 5 files changed, 67 insertions(+), 296 deletions(-) delete mode 100644 python/generate-gdpr-export/asdf.csv delete mode 100644 python/generate-gdpr-export/create_documents.py diff --git a/python/generate-gdpr-export/README.md b/python/generate-gdpr-export/README.md index 7b17083d..00c53b22 100644 --- a/python/generate-gdpr-export/README.md +++ b/python/generate-gdpr-export/README.md @@ -1,21 +1,44 @@ -# 📧 Your Function Name - +# 📷 Object Detection using Cloudmersive Vision API +A sample Python Cloud Function for exporting doctuments to csv format and saving it to the user storage. ## 📝 Environment Variables - +Add the following environment variables in your Cloud Functions settings. + +* **APPWRITE_API_KEY** - Create a key from the Appwrite console with the following scope (`collections.read, documents.read,files.write`) +* **APPWRITE_ENDPOINT** - Your Appwrite Endpoint -* **VARIABLE 1** - -* **VARIABLE 2** - ## 🚀 Building and Packaging - ## 🎯 Trigger - \ No newline at end of file + +To trigger this function you will need to create an execution by means of the WebSDK in order to get the user context. \ No newline at end of file diff --git a/python/generate-gdpr-export/asdf.csv b/python/generate-gdpr-export/asdf.csv deleted file mode 100644 index 243dd36c..00000000 --- a/python/generate-gdpr-export/asdf.csv +++ /dev/null @@ -1,117 +0,0 @@ -,$id,$collection,$permissions,name -0,61689ee7d2ab2,61689ee78135e,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -1,61689ee7d5a3c,61689ee78135e,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -2,61689ee87f9b0,61689ee8020ed,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -3,61689ee885e66,61689ee8020ed,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -4,6168a0b346a4f,6168a0b2848a2,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -5,6168a0b34c5b1,6168a0b2848a2,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -6,6168a0b44b8c5,6168a0b380577,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -7,6168a0b451e0c,6168a0b380577,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -8,6168a0b779c58,6168a0b6d3bfb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -9,6168a0b77fc50,6168a0b6d3bfb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -10,6168a0b8710f9,6168a0b7b1195,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -11,6168a0b87813c,6168a0b7b1195,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -12,6168a0bac4430,6168a0ba167a4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -13,6168a0bacabc9,6168a0ba167a4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -14,6168a0bbc1994,6168a0bb09852,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -15,6168a0bbc7b08,6168a0bb09852,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -16,6168a0bf27714,6168a0be6d4d3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -17,6168a0bf2d601,6168a0be6d4d3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -18,6168a0c003769,6168a0bf6168a,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -19,6168a0c009988,6168a0bf6168a,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -20,6168a0c4b4839,6168a0c4106fb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -21,6168a0c4baced,6168a0c4106fb,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -22,6168a0c5af41f,6168a0c4eac20,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -23,6168a0c5b521f,6168a0c4eac20,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -24,6168a0c8afba1,6168a0c811185,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -25,6168a0c8b9b62,6168a0c811185,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -26,6168a0c9b3249,6168a0c8ec351,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -27,6168a0c9bacf0,6168a0c8ec351,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -28,6168a0cc5893c,6168a0cc0af82,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -29,6168a0cc5bd40,6168a0cc0af82,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -30,6168a0cceab2e,6168a0cc75312,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -31,6168a0ccf1764,6168a0cc75312,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -32,6168a0d2a1c19,6168a0d24d65f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -33,6168a0d2a5466,6168a0d24d65f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -34,6168a0d31e64c,6168a0d2bd960,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -35,6168a0d321d71,6168a0d2bd960,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -36,6168a0d654212,6168a0d6071b3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -37,6168a0d657565,6168a0d6071b3,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -38,6168a0d6a0d04,6168a0d665b36,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -39,6168a0d6a35ff,6168a0d665b36,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -40,6168a0d98c734,6168a0d8ec41c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -41,6168a0d992736,6168a0d8ec41c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -42,6168a0da7153b,6168a0d9be16c,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -43,6168a0da769bf,6168a0d9be16c,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -44,6168a0dd089af,6168a0dc9f90d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -45,6168a0dd0c41f,6168a0dc9f90d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -46,6168a0dd9212e,6168a0dd25261,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -47,6168a0dd97a65,6168a0dd25261,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -48,6168a0e066d66,6168a0e0051b7,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -49,6168a0e06a00d,6168a0e0051b7,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -50,6168a0e0d664d,6168a0e08397e,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -51,6168a0e0d9cf1,6168a0e08397e,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -52,6168a0e36412b,6168a0e2ad1ed,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -53,6168a0e36a317,6168a0e2ad1ed,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -54,6168a0e465b6b,6168a0e3995ca,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -55,6168a0e46ba9c,6168a0e3995ca,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -56,6168a0ef40d3e,6168a0ee86bc4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -57,6168a0ef46a54,6168a0ee86bc4,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -58,6168a0f03b5a0,6168a0ef78d8b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -59,6168a0f0411bc,6168a0ef78d8b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -60,6168a0f3b12dc,6168a0f30676d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -61,6168a0f3b71d2,6168a0f30676d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -62,6168a0f4a3493,6168a0f3e3cec,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -63,6168a0f4a883d,6168a0f3e3cec,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -64,6168a0f7936ed,6168a0f6e159d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -65,6168a0f799420,6168a0f6e159d,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -66,6168a0f878a11,6168a0f7c8759,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -67,6168a0f87eae4,6168a0f7c8759,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -68,6168a11985157,6168a118c5c81,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -69,6168a1198b210,6168a118c5c81,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -70,6168a11a82264,6168a119c1e86,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -71,6168a11a87f80,6168a119c1e86,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -72,6168a11db03ec,6168a11d0c3c1,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -73,6168a11db6a1a,6168a11d0c3c1,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -74,6168a11ea65ef,6168a11de778b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -75,6168a11eac4b6,6168a11de778b,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -76,6168a120d9e04,6168a12033207,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -77,6168a120e1bc3,6168a12033207,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -78,6168a121bb5bd,6168a1211c55f,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -79,6168a121c170a,6168a1211c55f,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -80,6168a124af80d,6168a12403316,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -81,6168a124b4c59,6168a12403316,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -82,6168a125aeb32,6168a124e25aa,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -83,6168a125b5ccb,6168a124e25aa,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -84,6168a12a57008,6168a1299b847,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -85,6168a12a5d1e1,6168a1299b847,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -86,6168a12b48bcf,6168a12a8b150,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -87,6168a12b500db,6168a12a8b150,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -88,6168a12e0c53e,6168a12d5e0a6,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -89,6168a12e11c41,6168a12d5e0a6,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -90,6168a12ee5f32,6168a12e43dd7,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -91,6168a12eeafad,6168a12e43dd7,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -92,6168a13223b5c,6168a1316d320,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -93,6168a13228f9c,6168a1316d320,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -94,6168a132f1185,6168a132544eb,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -95,6168a13304441,6168a132544eb,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -96,6168a135aded0,6168a1355cdae,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -97,6168a135b1dca,6168a1355cdae,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -98,6168a1361a954,6168a135cdc11,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -99,6168a1361e1dc,6168a135cdc11,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -100,6168a1464da42,6168a1459a89f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -101,6168a14652f60,6168a1459a89f,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -102,6168a1473fd52,6168a14688d33,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -103,6168a14746572,6168a14688d33,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -104,6168a14a51911,6168a149921be,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -105,6168a14a57f7b,6168a149921be,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -106,6168a14b42957,6168a14a8a1fe,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -107,6168a14b48a61,6168a14a8a1fe,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -108,6168a14e3283a,6168a14d82bc9,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -109,6168a14e38827,6168a14d82bc9,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -110,6168a14f306dc,6168a14e63616,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -111,6168a14f36c61,6168a14e63616,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy -112,6168a152ad395,6168a151e028c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Idina Menzel -113,6168a152b363b,6168a151e028c,"{'read': ['*'], 'write': ['user:ppp', 'team:xxx']}",Kristen Bell -114,6168a1538f313,6168a152de7e0,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Margaret -115,6168a1539528f,6168a152de7e0,"{'read': ['*'], 'write': ['user:ppp', 'team:qqq']}",Tracy diff --git a/python/generate-gdpr-export/create_documents.py b/python/generate-gdpr-export/create_documents.py deleted file mode 100644 index 71807c58..00000000 --- a/python/generate-gdpr-export/create_documents.py +++ /dev/null @@ -1,147 +0,0 @@ -# Perform all your imports -from appwrite.client import Client -from appwrite.services.database import Database -from appwrite.services.storage import Storage - -# Initialise the Appwrite client -client = Client() -client.set_endpoint('https://localhost/v1') # Your API Endpoint -client.set_project('615aea9a672b6') # Your project ID -client.set_key('df3da8f38df454301e10fb190aec6a40ef5a59b8643173c1ee0d73bae9308464fef6e2b090a781fafc2b5380bf556a84b74c26a48dfa0c9e6c9bd37c385d9e15cf9f07e5682fd4c489dbf78fddf56d994bdba1ebef414768e6625b691a4e3d702ffd011f7bc5f187c8ee3ac01759affebc81417683d34bf39e6c04e29016a2be') # Your secret API key - -database = Database(client) - -actors = database.create_collection( - 'Actors', - ['*'], - ['user:ppp','team:xxx'], - [ - { - "label": "Name", - "key": "name", - "type": "text", - "default": "Empty Name", - "required": True, - "array": False - }, - ] -) -movies = database.create_collection('Movies', # Collection Name - ['*'], # Read permissions - ['user:ppp', 'team:xxx'], # Write permissions - [ #Rules - { - "label": "Name", - "key": "name", - "type": "text", - "default": "Empty Name", - "required": True, - "array": False - }, - { - "label": "Release Year", - "key": "releaseYear", - "type": "numeric", - "default": 1970, - "required": True, - "array": False - }, - { - "label": "Actors", - "key": "actors", - "type": "document", - "default": None, - "required": False, - "array": True, - "list": [actors['$id']] # Name the collections unique IDs that are allowed in the attribute - } - ] - ) -result = database.create_document( - movies['$id'], - { - "name": "Frozen 2", - "releaseYear": 2019, - "actors": - [ - { - "$collection": actors['$id'], # The actors collection unique ID - "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:xxx']}, # Set document permissions - "name": "Idina Menzel" - }, - { - "$collection": actors['$id'], # The actors collection unique ID - "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:xxx']}, # Set document permissions - "name": "Kristen Bell" - } - ] - }, - ['*']) - - -authors = database.create_collection( - 'Authors', - ['*'], - ['user:ppp','team:qqq'], - [ - { - "label": "Name", - "key": "name", - "type": "text", - "default": "Empty Name", - "required": True, - "array": False - }, - ] -) -books = database.create_collection('Books', # Collection Name - ['*'], # Read permissions - ['user:ppp', 'team:qqq'], # Write permissions - [ #Rules - { - "label": "Name", - "key": "name", - "type": "text", - "default": "Empty Name", - "required": True, - "array": False - }, - { - "label": "Release Year", - "key": "releaseYear", - "type": "numeric", - "default": 1970, - "required": True, - "array": False - }, - { - "label": "Authors", - "key": "authors", - "type": "document", - "default": None, - "required": False, - "array": True, - "list": [authors['$id']] # Name the collections unique IDs that are allowed in the attribute - } - ] - ) -result_2 = database.create_document( - books['$id'], - { - "name": "cronicas de dragonlance", - "releaseYear": 2019, - "authors": - [ - { - "$collection": authors['$id'], # The actors collection unique ID - "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:qqq']}, # Set document permissions - "name": "Margaret" - }, - { - "$collection": authors['$id'], # The actors collection unique ID - "$permissions": {"read": ["*"], "write": ['user:ppp', 'team:qqq']}, # Set document permissions - "name": "Tracy" - } - ] - }, - ['*']) \ No newline at end of file diff --git a/python/generate-gdpr-export/main.py b/python/generate-gdpr-export/main.py index ac86a384..7749b5e3 100644 --- a/python/generate-gdpr-export/main.py +++ b/python/generate-gdpr-export/main.py @@ -1,44 +1,56 @@ # Perform all your imports + +import os +import csv +import datetime from appwrite.client import Client from appwrite.services.database import Database -import pandas as pd from appwrite.services.storage import Storage # Initialise the Appwrite client client = Client() -client.set_endpoint('https://localhost/v1') # Your API Endpoint -client.set_project('615aea9a672b6') # Your project ID -client.set_key('a2359078b4ec35e27b3146bdc8a7913e9f5dc57ae82a6f7deb55a970dbebaf919333df99f4a054a9ab9ac66f3158fbb756c994711285479b76ce68e49f08b867ab5e0e9668c840fa6f27f593c41b984389b708ce75165f826c6fc94835aa8219a43db28a63d83fd7eacbc4105acaea7db993c0150167ea111a728731763b0db6') # Your secret API key +client.set_endpoint(os.environ["APPWRITE_ENDPOINT"]) # Your API Endpoint +client.set_project(os.environ["APPWRITE_FUNCTION_PROJECT_ID"]) # Your project ID +client.set_key(os.environ["APPWRITE_API_KEY"]) # Your secret API key all_documents = [] -user = 'user:ppp' +user_id = os.environ['APPWRITE_FUNCTION_USER_ID'] +user = f'user:{user_id}' + database = Database(client) -off_col = 0 +off_col = 0 # For the API pagination - collections while True: - collections = database.list_collections(limit=100,offset=off_col) + collections = database.list_collections(limit=100, offset=off_col) for collection in collections['collections']: collection_id = collection['$id'] - off_doc=0 + off_doc = 0 # For the API pagination - documents while True: - print(off_col,off_doc) - documents = database.list_documents(collection_id,limit=100,offset=off_doc) + documents = database.list_documents(collection_id, limit=100, offset=off_doc) for document in documents['documents']: if user in document['$permissions']['read'] or '*' in document['$permissions']['read']: all_documents.append(document) off_doc += 100 - if documents['sum']<=off_doc: + if documents['sum'] <= off_doc: break off_col += 100 - if collections['sum']<=off_col: + if collections['sum'] <= off_col: break - -final_csv = pd.DataFrame(all_documents) -final_csv.to_csv('asdf.csv') - +# Create csv from the list of dictionaries +columns = [] +for d in all_documents: + for key in d.keys(): + if key not in columns: + columns.append(key) +timestamp = datetime.datetime.now().isoformat() +file_name = f"{user_id}_{timestamp}.csv" +with open(file_name, 'w', newline='') as f: + csv_writer = csv.DictWriter(f, fieldnames=columns, restval='') + csv_writer.writeheader() + csv_writer.writerows(all_documents) storage = Storage(client) - -result = storage.create_file(open('asdf.csv', 'rb'),[user]) \ No newline at end of file +result = storage.create_file(open(file_name, 'rb'), [user]) +os.remove(file_name) diff --git a/python/generate-gdpr-export/requirements.txt b/python/generate-gdpr-export/requirements.txt index 7a6977ed..3217f138 100644 --- a/python/generate-gdpr-export/requirements.txt +++ b/python/generate-gdpr-export/requirements.txt @@ -1 +1 @@ -appwrite \ No newline at end of file +appwrite From f86bf8c12b2bb7ae5d1579bdba5cd3832333ca50 Mon Sep 17 00:00:00 2001 From: und1n3 Date: Mon, 20 Dec 2021 23:19:49 +0100 Subject: [PATCH 3/3] Added print for log and modified README. --- python/generate-gdpr-export/README.md | 4 ++-- python/generate-gdpr-export/main.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/python/generate-gdpr-export/README.md b/python/generate-gdpr-export/README.md index 00c53b22..f56b7e49 100644 --- a/python/generate-gdpr-export/README.md +++ b/python/generate-gdpr-export/README.md @@ -1,5 +1,5 @@ -# 📷 Object Detection using Cloudmersive Vision API -A sample Python Cloud Function for exporting doctuments to csv format and saving it to the user storage. +# 📷 GDPR Export Function +A sample Python Function for exporting documents to csv format and saving it to the user storage. ## 📝 Environment Variables Add the following environment variables in your Cloud Functions settings. diff --git a/python/generate-gdpr-export/main.py b/python/generate-gdpr-export/main.py index 7749b5e3..5b96d233 100644 --- a/python/generate-gdpr-export/main.py +++ b/python/generate-gdpr-export/main.py @@ -54,3 +54,4 @@ storage = Storage(client) result = storage.create_file(open(file_name, 'rb'), [user]) os.remove(file_name) +print('File {} created for user {}'.format(file_name, user_id)) \ No newline at end of file