-
Notifications
You must be signed in to change notification settings - Fork 226
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ADD] Load default libraries while ocntainer build
[FIX] Load from gallery
- Loading branch information
Showing
5 changed files
with
175 additions
and
115 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
29 changes: 29 additions & 0 deletions
29
esim-cloud-backend/libAPI/management/commands/createsuperuser_noinput.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
from django.contrib.auth import get_user_model | ||
from django.db.models import Q | ||
from django.core.management.base import BaseCommand | ||
|
||
|
||
class Command(BaseCommand): | ||
help = "Create default admin user if not already present." | ||
|
||
def add_arguments(self, parser): | ||
parser.add_argument( | ||
'--username', type=str, | ||
help="username of admin account" | ||
) | ||
parser.add_argument( | ||
'--password', type=str, | ||
help="password of the admin account" | ||
) | ||
|
||
def handle(self, *args, **options): | ||
if options['username'] and options['password']: | ||
User = get_user_model() | ||
user = User.objects.filter(username=options['username']) | ||
if user.count() > 0: | ||
raise Exception(f"User with same username exists") | ||
user = User.objects.create_superuser(username=options['username'], | ||
email='', password=options['password']) | ||
user.save() | ||
else: | ||
raise Exception("Username or Password not present") |
138 changes: 138 additions & 0 deletions
138
esim-cloud-backend/libAPI/management/commands/load_default_libs.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
from libAPI.helper.main import generate_svg_and_save_to_folder | ||
import os | ||
import glob | ||
|
||
from django.core.management import call_command | ||
from django.contrib.admin import options | ||
from django.contrib.auth import get_user_model | ||
from django.core.files.uploadedfile import InMemoryUploadedFile | ||
from django.core.management.base import BaseCommand | ||
|
||
from libAPI.models import Library, LibraryComponent, \ | ||
ComponentAlternate, LibrarySet | ||
|
||
import logging | ||
logger = logging.getLogger(__name__) | ||
|
||
|
||
class Command(BaseCommand): | ||
help = "Load default libraries if not already present." | ||
|
||
def add_arguments(self, parser): | ||
parser.add_argument( | ||
'--username', | ||
help='input a user\'s username', type=str | ||
) | ||
parser.add_argument( | ||
'--location', type=self.dir_path, | ||
help="Directory containing kicad library files" | ||
) | ||
|
||
def dir_path(self, path): | ||
if os.path.isdir(path): | ||
return path | ||
else: | ||
raise Exception(f"{path} is not a valid path") | ||
|
||
def handle(self, *args, **options): | ||
User = get_user_model() | ||
if options['username']: | ||
user = User.objects.get(username=options['username']) | ||
else: | ||
raise Exception("Enter a superuser to associate libs") | ||
library_set = LibrarySet.objects.filter(user=user, | ||
default=True).first() | ||
if not library_set: | ||
library_set = LibrarySet( | ||
user=user, | ||
default=True, | ||
name="esim-default" | ||
) | ||
library_set.save() | ||
seed_libraries(self, options['location'], library_set) | ||
|
||
|
||
def seed_libraries(self, location, library_set): | ||
logger.info(f"Reading libraries from {location}") | ||
if not os.path.isdir(os.path.join(location, 'default')): | ||
os.mkdir(os.path.join(location, 'default')) | ||
for file in os.listdir(location): | ||
if '.lib' in file: | ||
self.stdout.write(f'Processing {file}') | ||
lib_location = os.path.join(location, file) | ||
lib_output_location = os.path.join(location, | ||
'default', 'symbol_svgs') | ||
component_details = generate_svg_and_save_to_folder( | ||
lib_location, | ||
lib_output_location | ||
) | ||
library = Library.objects.filter( | ||
library_name=file, library_set=library_set).first() | ||
if not library: | ||
library = Library( | ||
library_name=file, | ||
library_set=library_set | ||
) | ||
library.save() | ||
logger.info('Created Library Object') | ||
library_svg_folder = os.path.join(lib_output_location, file[:-4]) | ||
thumbnails = glob.glob(library_svg_folder+'/*_thumbnail.svg') | ||
|
||
# Seed Primary component | ||
for component_svg in glob.glob(library_svg_folder+'/*-1-A.svg'): | ||
thumbnail_path = component_svg[:-4]+'_thumbnail.svg' | ||
if thumbnail_path not in thumbnails: | ||
raise FileNotFoundError(f'Thumbnail Does not exist for {component_svg}') # noqa | ||
|
||
# Get Component name | ||
component_svg = os.path.split(component_svg)[-1] | ||
|
||
# Get Corresponding Details | ||
svg_desc = component_details[component_svg[:-4]] | ||
|
||
# Seed DB | ||
try: | ||
component = LibraryComponent.objects.get( | ||
name=svg_desc['name'], | ||
svg_path=os.path.join( | ||
library_svg_folder, component_svg)[6:], | ||
thumbnail_path=thumbnail_path, | ||
symbol_prefix=svg_desc['symbol_prefix'], | ||
full_name=svg_desc['full_name'], | ||
keyword=svg_desc['keyword'], | ||
description=svg_desc['description'], | ||
data_link=svg_desc['data_link'], | ||
component_library=library | ||
) | ||
except LibraryComponent.DoesNotExist: | ||
component = LibraryComponent( | ||
name=svg_desc['name'], | ||
svg_path=os.path.join( | ||
library_svg_folder, component_svg)[6:], | ||
thumbnail_path=thumbnail_path, | ||
symbol_prefix=svg_desc['symbol_prefix'], | ||
full_name=svg_desc['full_name'], | ||
keyword=svg_desc['keyword'], | ||
description=svg_desc['description'], | ||
data_link=svg_desc['data_link'], | ||
component_library=library | ||
) | ||
component.save() | ||
logger.info(f'Saved component {component_svg}') | ||
|
||
# Seed Alternate Components | ||
for component_svg in glob.glob(library_svg_folder+'/*[B-Z].svg'): # noqa , EdgeCase here | ||
component_svg = os.path.split(component_svg)[-1] | ||
svg_desc = component_details[component_svg[:-4]] | ||
alternate_component = ComponentAlternate( | ||
part=svg_desc['part'], | ||
dmg=svg_desc['dmg'], | ||
full_name=svg_desc['full_name'], | ||
svg_path=os.path.join( | ||
library_svg_folder, component_svg), | ||
parent_component=LibraryComponent.objects.get( | ||
name=svg_desc['name'], | ||
) | ||
) | ||
alternate_component.save() | ||
logger.info(f'Saved alternate component {component_svg}') |
106 changes: 0 additions & 106 deletions
106
esim-cloud-backend/libAPI/management/commands/seed_libs.py
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters