You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Adunatio/models/Union.py

62 lines
2.0 KiB

from datetime import datetime
from mongoengine import *
from werkzeug.security import generate_password_hash
from string import ascii_letters, digits
from random import choices
from models.EmbededDocuments import ApiKey
from restapi import Methods
class Union(Document):
meta = {
'index_background': True,
'index_cls': False,
'auto_create_index': True,
'can_query': True,
'with_sub_docs': True,
'methods': [Methods.Get, Methods.List, Methods.Create],
"indexes": [
('name'),
("-name"),
],
}
name = StringField(required=True)
logo = ImageField(thumbnail_size=(120, 120))
description = StringField()
legal_registration_number = StringField(required=True)
headquarter = StringField()
email = StringField(required=True)
api_key = ListField(EmbeddedDocumentField(ApiKey))
deleted = BooleanField(default=False)
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
super(Union, self).save(*args, **kwargs)
from .Group import Group
from .User import User
group = Group()
group.union = self
group.name = 'Root'
group.rights = ["*::*::{}/*".format(self.id)]
group.save()
user = User()
user.gov_id = 'root'
user.name = "Root"
user.last_name = "Root"
user.telephone = "+900000000000"
user.gender = 'Agender'
user.date_of_birth = "2019-09-09"
user.username = "{}@root".format(self.legal_registration_number)
user.user_group = group
user.union = self
from flask import current_app
password = ''.join(choices(ascii_letters + digits, k=10))
passhash = generate_password_hash(password,salt_length=20)
current_app.logger.info("New union password : '{}'".format(password))
user.password = passhash
# TODO: send password via mail or sms or nothing
user.save()