Example #1
0
def create_file(url, file_type):
    from bot.models import File
    from bot.tasks import download_file
    from common.utilities import generate_unique_key

    file_id = generate_unique_key(url)
    file_type_id = generate_unique_key(file_type)

    file, new = File.objects.get_or_create(id=file_id,
                                           defaults=dict(type_id=file_type_id,
                                                         url=url))
    if new and file_type == 'image':
        download_file(url=url)

    return file
def reverse_func(apps, schema_editor):
    from common.utilities import generate_unique_key
    FileType = apps.get_model("bot", "FileType")
    db_alias = schema_editor.connection.alias
    types = ['image', 'video', 'url']
    FileType.objects.using(db_alias).filter(
        pk__in=[generate_unique_key(i) for i in types]).delete()
Example #3
0
def add_pattern(project, pattern_id):
    from bot.models import ProjectPattern
    from common.utilities import generate_unique_key
    project_pattern_id = generate_unique_key(project.id, pattern_id)
    project_pattern, created = ProjectPattern.objects.get_or_create(
        id=project_pattern_id,
        defaults=dict(project=project, pattern_id=pattern_id))
    return project_pattern
Example #4
0
def create_tag(tag):
    from bot.models import Tag
    from common.utilities import generate_unique_key

    tag_id = generate_unique_key(tag)
    tag, new = Tag.objects.get_or_create(id=tag_id, defaults=dict(name=tag))

    return tag
Example #5
0
def add_material(project, material_id):
    from bot.models import ProjectMaterial
    from common.utilities import generate_unique_key
    project_material_id = generate_unique_key(project.id, material_id)
    project_material, created = ProjectMaterial.objects.get_or_create(
        id=project_material_id,
        defaults=dict(project=project, material_id=material_id))
    return project_material
def forwards_func(apps, schema_editor):
    from common.utilities import generate_unique_key
    FileType = apps.get_model("bot", "FileType")
    db_alias = schema_editor.connection.alias

    types = ['image', 'video', 'url']

    FileType.objects.using(db_alias).bulk_create(
        [FileType(id=generate_unique_key(i), name=i) for i in types])
Example #7
0
def create_pattern(sender_id, url, file_type):
    from django.utils.timezone import now
    from bot.models import Pattern, PatternFile
    from common.utilities import generate_unique_key
    from .maker import get_maker_id
    from bot.lib.utilities import create_file

    maker_id = get_maker_id(sender_id=sender_id)

    file = create_file(url=url, file_type=file_type)
    pattern_id = generate_unique_key(maker_id, now())
    pattern_file_id = generate_unique_key(pattern_id, file.id)

    pattern = Pattern(id=pattern_id, maker_id=maker_id)
    pattern.save()

    pattern_file = PatternFile(id=pattern_file_id, file=file, pattern=pattern)
    pattern_file.save()

    return pattern
Example #8
0
def download_file(url):
    # TODO Resize images to thumbnail versions
    import requests
    from bot.models import File
    from common.utilities import generate_unique_key, store_obj_on_s3
    response = requests.get(url=url)
    file_id = generate_unique_key(url)
    store_obj_on_s3(key='static/user/{0}'.format(
        str(file_id).replace('-', '/')),
                    obj=response.content)
    File.objects.filter(id=file_id).update(downloaded=True)
    return str(file_id)
Example #9
0
def create_material(sender_id, url, file_type):
    from django.utils.timezone import now
    from bot.models import Material, MaterialFile
    from common.utilities import generate_unique_key
    from .maker import get_maker_id
    from bot.lib.utilities import create_file

    maker_id = get_maker_id(sender_id=sender_id)

    file = create_file(url=url, file_type=file_type)
    material_id = generate_unique_key(maker_id, now())
    material_file_id = generate_unique_key(material_id, file.id)

    material = Material(id=material_id, maker_id=maker_id)
    material.save()

    material_file = MaterialFile(id=material_file_id,
                                 file=file,
                                 material=material)
    material_file.save()

    return material
Example #10
0
def add_due_date(project, date_string):
    from bot.models import ProjectDueDate, DueDate
    from common.utilities import generate_unique_key
    from datetime import datetime
    date = datetime.strptime(date_string, '%Y-%m-%d')
    due_date_id = generate_unique_key(project.maker_id, date)
    due_date, created = DueDate.objects.get_or_create(id=due_date_id,
                                                      defaults=dict(
                                                          maker=project.maker,
                                                          date=date))
    project_due_date, created = ProjectDueDate.objects.get_or_create(
        project=project, due_date=due_date)
    return project_due_date
Example #11
0
def add_file(obj, url, file_type):
    from common.utilities import generate_unique_key
    file = create_file(url=url, file_type=file_type)
    obj_file_id = generate_unique_key(obj.id, file.id)

    obj_file_model = load_relationship_model(obj_1=obj, obj_2=file)
    obj_file_model.objects.get_or_create(id=obj_file_id,
                                         defaults={
                                             'file':
                                             file,
                                             obj._meta.verbose_name.replace(
                                                 ' ', '_'):
                                             obj
                                         })

    return file
Example #12
0
def create_project_status(sender_id, project_id, url, file_type):
    from django.utils.timezone import now
    from .maker import get_maker_id
    from bot.models import ProjectStatus
    from bot.lib.utilities import add_file
    from common.utilities import generate_unique_key

    maker_id = get_maker_id(sender_id)

    project_status_id = generate_unique_key(project_id, now())
    project_status, created = ProjectStatus.objects.get_or_create(
        id=project_status_id,
        defaults=dict(project_id=project_id, maker_id=maker_id))

    add_file(obj=project_status, file_type=file_type, url=url)
    return project_status
Example #13
0
def update_material(sender_id: str,
                    material_id: str,
                    file: dict = None,
                    tags: list = None):
    from bot.models import Material
    from .utilities import add_tags, add_file
    from common.utilities import generate_unique_key

    maker_id = generate_unique_key(sender_id)
    material = Material.objects.get(id=material_id, maker_id=maker_id)

    if file:
        add_file(obj=material, url=file['url'], file_type=file['file_type'])

    if tags:
        add_tags(obj=material, tags=tags)
    return material
Example #14
0
def update_pattern(sender_id: str,
                   pattern_id: str,
                   file: dict = None,
                   tags: list = None):
    from bot.models import Pattern
    from .utilities import add_tags, add_file
    from common.utilities import generate_unique_key

    maker_id = generate_unique_key(sender_id)
    pattern = Pattern.objects.get(id=pattern_id, maker_id=maker_id)

    if file:
        add_file(obj=pattern, url=file['url'], file_type=file['file_type'])

    if tags:
        add_tags(obj=pattern, tags=tags)
    return pattern
Example #15
0
def add_tags(obj, tags: list):
    from common.utilities import generate_unique_key
    tag_objects = list()
    for tag in [i for i in tags if isinstance(i, str) and i.strip()]:
        tag = tag.strip()
        tag_object = create_tag(tag=tag)
        tag_objects.append(tag_object)

        obj_tag_id = generate_unique_key(obj.id, tag_object.id)

        obj_tag_model = load_relationship_model(obj_1=obj, obj_2=tag_object)
        obj_tag_model.objects.get_or_create(id=obj_tag_id,
                                            defaults={
                                                'tag':
                                                tag_object,
                                                obj._meta.verbose_name.replace(
                                                    ' ', '_'):
                                                obj
                                            })
    return tag_objects
Example #16
0
def update_project(sender_id,
                   project_id,
                   material_id=None,
                   pattern_id=None,
                   date_string=None,
                   tags=None):
    from bot.models import Project
    from common.utilities import generate_unique_key
    from bot.lib.utilities import add_tags
    maker_id = generate_unique_key(sender_id)
    project = Project.objects.get(maker_id=maker_id, id=project_id)
    if material_id:
        add_material(project=project, material_id=material_id)
    if pattern_id:
        add_pattern(project=project, pattern_id=pattern_id)
    if date_string:
        add_due_date(project=project, date_string=date_string)
        project.complete = True
        project.save()
    if tags:
        add_tags(obj=project, tags=tags)
    return project
Example #17
0
def get_conversation_id(name):
    from common.utilities import generate_unique_key
    key = generate_unique_key(name)
    return key
Example #18
0
def get_project_id(maker_id, name):
    from common.utilities import generate_unique_key
    project_id = generate_unique_key(maker_id, name)
    return project_id
Example #19
0
def get_maker_id(sender_id):
    from common.utilities import generate_unique_key
    key = generate_unique_key(sender_id)
    return key