def create_orgs(self, superuser, country, num_total): """ Creates and initializes the orgs """ self._log("Creating %d orgs... " % num_total) org_names = ['%s %s' % (o1, o2) for o2 in ORG_NAMES[1] for o1 in ORG_NAMES[0]] self.random.shuffle(org_names) orgs = [] for o in range(num_total): orgs.append(Org(name=org_names[o % len(org_names)], timezone=self.random.choice(pytz.all_timezones), brand='rapidpro.io', country=country, created_on=self.db_begins_on, created_by=superuser, modified_by=superuser)) Org.objects.bulk_create(orgs) orgs = list(Org.objects.order_by('id')) self._log(self.style.SUCCESS("OK") + "\nInitializing orgs... ") for o, org in enumerate(orgs): org.initialize(topup_size=max((1000 - o), 1) * 1000) # we'll cache some metadata on each org as it's created to save re-fetching things org.cache = { 'users': [], 'fields': {}, 'groups': [], 'system_groups': {g.group_type: g for g in ContactGroup.system_groups.filter(org=org)}, } self._log(self.style.SUCCESS("OK") + '\n') return orgs
def get_or_create_api_token(user): """ Gets or creates an API token for this user. If user doen't have access to the API, this returns None. """ org = user.get_org() if not org: org = Org.get_org(user) if org: try: token = APIToken.get_or_create(org, user) return token.key except ValueError: pass return None
def api_token(obj): if not obj.is_authenticated(): return None org = obj.get_org() if not org: org = Org.get_org(obj) if org: tokens = APIToken.objects.filter(user=obj, org=org) if tokens: return str(tokens[0]) else: token = APIToken.objects.create(user=obj, org=org) return str(token) else: return None
def get_or_create_api_token(user): """ Gets or (lazily creates) an API token for this user """ if not user.is_authenticated(): return None org = user.get_org() if not org: org = Org.get_org(user) if org: tokens = APIToken.objects.filter(user=user, org=org) if tokens: return str(tokens[0]) else: token = APIToken.objects.create(user=user, org=org) return str(token) else: return None
def pre_destroy(self, org: Org, user: User): if user.id and user.id > 0 and hasattr(org, "modified_by_id"): org.modified_by = user # Interim fix, remove after implementation in the model. org.save(update_fields=["modified_by"])