From 6c32153aea150cb46f5842be6c0a38c62262c5b5 Mon Sep 17 00:00:00 2001 From: anastasia Date: Tue, 5 Oct 2021 11:19:41 -0400 Subject: [PATCH] update - add wagtail, remove all else --- .babelrc | 3 - .editorconfig | 291 - .eslintrc.json | 61 - .idea/misc.xml | 5 +- .idea/wireframe.iml | 2 +- README.md | 6 + backend/app/admin.py | 11 - backend/app/apps.py | 11 - backend/app/fields.py | 0 backend/app/models.py | 3 - backend/app/serializers.py | 5 - backend/app/test_image.jpg | Bin 61370 -> 0 bytes backend/app/tests.py | 16 - backend/app/views.py | 41 - backend/config/__init__.py | 0 backend/config/settings/__init__.py | 0 backend/config/settings/base.py | 159 - backend/config/settings/dev.py | 18 - backend/config/settings/production.py | 18 - backend/config/urls.py | 31 - backend/manage.py | 23 - backend/templates/index.html | 29 - docs/README.md | 1 - frontend/common.js | 26 - frontend/components/ErrorNotFoundComponent.js | 18 - frontend/components/ExampleId.js | 34 - frontend/components/ExampleId.module.scss | 4 - frontend/components/Home.js | 12 - frontend/components/global/Base.js | 22 - frontend/components/global/Base.module.scss | 3 - frontend/components/global/Nav.js | 21 - frontend/components/global/Nav.module.scss | 14 - frontend/images/dh_logo.svg | 36 - frontend/index.js | 27 - frontend/scss/global.scss | 3 - frontend/scss/index.scss | 2 - lagos/.dockerignore | 39 + lagos/Dockerfile | 60 + {backend => lagos/app}/__init__.py | 0 .../app => lagos/app/settings}/__init__.py | 0 lagos/app/settings/base.py | 162 + lagos/app/settings/dev.py | 18 + lagos/app/settings/production.py | 8 + lagos/app/templates/404.html | 11 + lagos/app/templates/500.html | 13 + lagos/app/templates/base.html | 39 + lagos/app/urls.py | 39 + {backend/config => lagos/app}/wsgi.py | 6 +- .../app/management => lagos/home}/__init__.py | 0 lagos/home/migrations/0001_initial.py | 22 + lagos/home/migrations/0002_create_homepage.py | 62 + .../home/migrations}/__init__.py | 0 lagos/home/models.py | 7 + lagos/home/templates/home/home_page.html | 21 + lagos/home/templates/home/welcome_page.html | 52 + lagos/manage.py | 10 + lagos/media/images/final.max-165x165.png | Bin 0 -> 23352 bytes lagos/media/original_images/final.png | Bin 0 -> 834074 bytes lagos/requirements.txt | 2 + .../migrations => lagos/search}/__init__.py | 0 lagos/search/templates/search/search.html | 38 + lagos/search/views.py | 34 + package-lock.json | 8943 ----------------- package.json | 60 - requirements.txt | 3 +- webpack-stats.json | 1 - webpack.config.dev.js | 13 - webpack.config.js | 29 - 68 files changed, 653 insertions(+), 9995 deletions(-) delete mode 100644 .babelrc delete mode 100644 .editorconfig delete mode 100644 .eslintrc.json delete mode 100644 backend/app/admin.py delete mode 100644 backend/app/apps.py delete mode 100644 backend/app/fields.py delete mode 100644 backend/app/models.py delete mode 100644 backend/app/serializers.py delete mode 100644 backend/app/test_image.jpg delete mode 100644 backend/app/tests.py delete mode 100644 backend/app/views.py delete mode 100644 backend/config/__init__.py delete mode 100644 backend/config/settings/__init__.py delete mode 100644 backend/config/settings/base.py delete mode 100644 backend/config/settings/dev.py delete mode 100644 backend/config/settings/production.py delete mode 100644 backend/config/urls.py delete mode 100755 backend/manage.py delete mode 100644 backend/templates/index.html delete mode 100644 docs/README.md delete mode 100644 frontend/common.js delete mode 100644 frontend/components/ErrorNotFoundComponent.js delete mode 100644 frontend/components/ExampleId.js delete mode 100644 frontend/components/ExampleId.module.scss delete mode 100644 frontend/components/Home.js delete mode 100644 frontend/components/global/Base.js delete mode 100644 frontend/components/global/Base.module.scss delete mode 100644 frontend/components/global/Nav.js delete mode 100644 frontend/components/global/Nav.module.scss delete mode 100644 frontend/images/dh_logo.svg delete mode 100644 frontend/index.js delete mode 100644 frontend/scss/global.scss delete mode 100644 frontend/scss/index.scss create mode 100644 lagos/.dockerignore create mode 100644 lagos/Dockerfile rename {backend => lagos/app}/__init__.py (100%) rename {backend/app => lagos/app/settings}/__init__.py (100%) create mode 100644 lagos/app/settings/base.py create mode 100644 lagos/app/settings/dev.py create mode 100644 lagos/app/settings/production.py create mode 100644 lagos/app/templates/404.html create mode 100644 lagos/app/templates/500.html create mode 100644 lagos/app/templates/base.html create mode 100644 lagos/app/urls.py rename {backend/config => lagos/app}/wsgi.py (59%) rename {backend/app/management => lagos/home}/__init__.py (100%) create mode 100644 lagos/home/migrations/0001_initial.py create mode 100644 lagos/home/migrations/0002_create_homepage.py rename {backend/app/management/commands => lagos/home/migrations}/__init__.py (100%) create mode 100644 lagos/home/models.py create mode 100644 lagos/home/templates/home/home_page.html create mode 100644 lagos/home/templates/home/welcome_page.html create mode 100755 lagos/manage.py create mode 100644 lagos/media/images/final.max-165x165.png create mode 100644 lagos/media/original_images/final.png create mode 100644 lagos/requirements.txt rename {backend/app/migrations => lagos/search}/__init__.py (100%) create mode 100644 lagos/search/templates/search/search.html create mode 100644 lagos/search/views.py delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 webpack-stats.json delete mode 100644 webpack.config.dev.js delete mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 456751f..0000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-env", "@babel/preset-react"] -} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 718f8e0..0000000 --- a/.editorconfig +++ /dev/null @@ -1,291 +0,0 @@ -root = true # top-most EditorConfig file - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 4 -indent_style = space -trim_trailing_whitespace = true -insert_final_newline = true -ij_wrap_on_typing = true -# tab_width = 4 -# ij_continuation_indent_size = 8 -# ij_formatter_off_tag = @formatter:off -# ij_formatter_on_tag = @formatter:on -# ij_formatter_tags_enabled = false -# ij_smart_tabs = false - -[{*.js,*.jsx,*.py,*.css}] -max_line_length = 100 - -[*.css] -# ij_css_align_closing_brace_with_properties = false -# ij_css_blank_lines_around_nested_selector = 1 -# ij_css_blank_lines_between_blocks = 1 -# ij_css_brace_placement = 0 -# ij_css_hex_color_long_format = false -# ij_css_hex_color_lower_case = false -# ij_css_hex_color_short_format = false -# ij_css_hex_color_upper_case = false -# ij_css_keep_blank_lines_in_code = 2 -# ij_css_keep_indents_on_empty_lines = false -# ij_css_keep_single_line_blocks = false -# ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow -# ij_css_space_after_colon = true -# ij_css_space_before_opening_brace = true -# ij_css_value_alignment = 0 - -[{*.pyw,*.py}] -# ij_python_align_collections_and_comprehensions = true -# ij_python_align_multiline_imports = true -# ij_python_align_multiline_parameters = true -# ij_python_align_multiline_parameters_in_calls = true -# ij_python_blank_line_at_file_end = true -# ij_python_blank_lines_after_imports = 1 -# ij_python_blank_lines_after_local_imports = 0 -# ij_python_blank_lines_around_class = 1 -# ij_python_blank_lines_around_method = 1 -# ij_python_blank_lines_around_top_level_classes_functions = 2 -# ij_python_blank_lines_before_first_method = 0 -# ij_python_dict_alignment = 0 -# ij_python_dict_new_line_after_left_brace = false -# ij_python_dict_new_line_before_right_brace = false -# ij_python_dict_wrapping = 1 -# ij_python_from_import_new_line_after_left_parenthesis = false -# ij_python_from_import_new_line_before_right_parenthesis = false -# ij_python_from_import_parentheses_force_if_multiline = false -# ij_python_from_import_trailing_comma_if_multiline = false -# ij_python_from_import_wrapping = 1 -# ij_python_hang_closing_brackets = false -# ij_python_keep_blank_lines_in_code = 1 -# ij_python_keep_blank_lines_in_declarations = 1 -# ij_python_keep_indents_on_empty_lines = false -# ij_python_keep_line_breaks = true -# ij_python_new_line_after_colon = false -# ij_python_new_line_after_colon_multi_clause = true -# ij_python_optimize_imports_always_split_from_imports = false -# ij_python_optimize_imports_case_insensitive_order = false -# ij_python_optimize_imports_join_from_imports_with_same_source = false -# ij_python_optimize_imports_sort_by_type_first = true -# ij_python_optimize_imports_sort_imports = true -# ij_python_optimize_imports_sort_names_in_from_imports = false -# ij_python_space_after_comma = true -# ij_python_space_after_number_sign = true -# ij_python_space_after_py_colon = true -# ij_python_space_before_backslash = true -# ij_python_space_before_comma = false -# ij_python_space_before_for_semicolon = false -# ij_python_space_before_lbracket = false -# ij_python_space_before_method_call_parentheses = false -# ij_python_space_before_method_parentheses = false -# ij_python_space_before_number_sign = true -# ij_python_space_before_py_colon = false -# ij_python_space_within_empty_method_call_parentheses = false -# ij_python_space_within_empty_method_parentheses = false -# ij_python_spaces_around_additive_operators = true -# ij_python_spaces_around_assignment_operators = true -# ij_python_spaces_around_bitwise_operators = true -# ij_python_spaces_around_eq_in_keyword_argument = false -# ij_python_spaces_around_eq_in_named_parameter = false -# ij_python_spaces_around_equality_operators = true -# ij_python_spaces_around_multiplicative_operators = true -# ij_python_spaces_around_power_operator = true -# ij_python_spaces_around_relational_operators = true -# ij_python_spaces_around_shift_operators = true -# ij_python_spaces_within_braces = false -# ij_python_spaces_within_brackets = false -# ij_python_spaces_within_method_call_parentheses = false -# ij_python_spaces_within_method_parentheses = false -# ij_python_use_continuation_indent_for_arguments = false -# ij_python_use_continuation_indent_for_collection_and_comprehensions = false -# ij_python_wrap_long_lines = true - -[{*.sht,*.html,*.shtm,*.shtml,*.htm,*.ng}] -# ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 -# ij_html_align_attributes = true -# ij_html_align_text = false -# ij_html_attribute_wrap = normal -# ij_html_block_comment_at_first_column = true -# ij_html_do_not_align_children_of_min_lines = 0 -# ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p -# ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot -# ij_html_enforce_quotes = false -# ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var -# ij_html_keep_blank_lines = 2 -# ij_html_keep_indents_on_empty_lines = false -# ij_html_keep_line_breaks = true -# ij_html_keep_line_breaks_in_text = true -# ij_html_keep_whitespaces = false -# ij_html_keep_whitespaces_inside = span,pre,textarea -# ij_html_line_comment_at_first_column = true -# ij_html_new_line_after_last_attribute = never -# ij_html_new_line_before_first_attribute = never -# ij_html_quote_style = double -# ij_html_remove_new_line_before_tags = br -# ij_html_space_after_tag_name = false -# ij_html_space_around_equality_in_attribute = false -# ij_html_space_inside_empty_tag = false -# ij_html_text_wrap = normal - -[{*.js,*.cjs}] -# ij_continuation_indent_size = 4 -# ij_javascript_align_imports = false -# ij_javascript_align_multiline_array_initializer_expression = false -# ij_javascript_align_multiline_binary_operation = false -# ij_javascript_align_multiline_chained_methods = false -# ij_javascript_align_multiline_extends_list = false -# ij_javascript_align_multiline_for = true -# ij_javascript_align_multiline_parameters = true -# ij_javascript_align_multiline_parameters_in_calls = false -# ij_javascript_align_multiline_ternary_operation = false -# ij_javascript_align_object_properties = 0 -# ij_javascript_align_union_types = false -# ij_javascript_align_var_statements = 0 -# ij_javascript_array_initializer_new_line_after_left_brace = false -# ij_javascript_array_initializer_right_brace_on_new_line = false -# ij_javascript_array_initializer_wrap = off -# ij_javascript_assignment_wrap = off -# ij_javascript_binary_operation_sign_on_next_line = false -# ij_javascript_binary_operation_wrap = off -# ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/** -# ij_javascript_blank_lines_after_imports = 1 -# ij_javascript_blank_lines_around_class = 1 -# ij_javascript_blank_lines_around_field = 0 -# ij_javascript_blank_lines_around_function = 1 -# ij_javascript_blank_lines_around_method = 1 -# ij_javascript_block_brace_style = end_of_line -# ij_javascript_call_parameters_new_line_after_left_paren = false -# ij_javascript_call_parameters_right_paren_on_new_line = false -# ij_javascript_call_parameters_wrap = off -# ij_javascript_catch_on_new_line = false -# ij_javascript_chained_call_dot_on_new_line = true -# ij_javascript_class_brace_style = end_of_line -# ij_javascript_comma_on_new_line = false -# ij_javascript_do_while_brace_force = never -# ij_javascript_else_on_new_line = false -# ij_javascript_enforce_trailing_comma = keep -# ij_javascript_extends_keyword_wrap = off -# ij_javascript_extends_list_wrap = off -# ij_javascript_field_prefix = _ -# ij_javascript_file_name_style = relaxed -# ij_javascript_finally_on_new_line = false -# ij_javascript_for_brace_force = never -# ij_javascript_for_statement_new_line_after_left_paren = false -# ij_javascript_for_statement_right_paren_on_new_line = false -# ij_javascript_for_statement_wrap = off -# ij_javascript_force_quote_style = false -# ij_javascript_force_semicolon_style = false -# ij_javascript_function_expression_brace_style = end_of_line -# ij_javascript_if_brace_force = never -# ij_javascript_import_merge_members = global -# ij_javascript_import_prefer_absolute_path = global -# ij_javascript_import_sort_members = true -# ij_javascript_import_sort_module_name = false -# ij_javascript_import_use_node_resolution = true -# ij_javascript_imports_wrap = on_every_item -# ij_javascript_indent_case_from_switch = true -# ij_javascript_indent_chained_calls = true -# ij_javascript_indent_package_children = 0 -# ij_javascript_jsx_attribute_value = braces -# ij_javascript_keep_blank_lines_in_code = 2 -# ij_javascript_keep_first_column_comment = true -# ij_javascript_keep_indents_on_empty_lines = false -# ij_javascript_keep_line_breaks = true -# ij_javascript_keep_simple_blocks_in_one_line = false -# ij_javascript_keep_simple_methods_in_one_line = false -# ij_javascript_line_comment_add_space = true -# ij_javascript_line_comment_at_first_column = false -# ij_javascript_method_brace_style = end_of_line -# ij_javascript_method_call_chain_wrap = off -# ij_javascript_method_parameters_new_line_after_left_paren = false -# ij_javascript_method_parameters_right_paren_on_new_line = false -# ij_javascript_method_parameters_wrap = off -# ij_javascript_object_literal_wrap = on_every_item -# ij_javascript_parentheses_expression_new_line_after_left_paren = false -# ij_javascript_parentheses_expression_right_paren_on_new_line = false -# ij_javascript_place_assignment_sign_on_next_line = false -# ij_javascript_prefer_as_type_cast = false -# ij_javascript_prefer_parameters_wrap = false -# ij_javascript_reformat_c_style_comments = false -# ij_javascript_space_after_colon = true -# ij_javascript_space_after_comma = true -# ij_javascript_space_after_dots_in_rest_parameter = false -# ij_javascript_space_after_generator_mult = true -# ij_javascript_space_after_property_colon = true -# ij_javascript_space_after_quest = true -# ij_javascript_space_after_type_colon = true -# ij_javascript_space_after_unary_not = false -# ij_javascript_space_before_async_arrow_lparen = true -# ij_javascript_space_before_catch_keyword = true -# ij_javascript_space_before_catch_left_brace = true -# ij_javascript_space_before_catch_parentheses = true -# ij_javascript_space_before_class_lbrace = true -# ij_javascript_space_before_class_left_brace = true -# ij_javascript_space_before_colon = true -# ij_javascript_space_before_comma = false -# ij_javascript_space_before_do_left_brace = true -# ij_javascript_space_before_else_keyword = true -# ij_javascript_space_before_else_left_brace = true -# ij_javascript_space_before_finally_keyword = true -# ij_javascript_space_before_finally_left_brace = true -# ij_javascript_space_before_for_left_brace = true -# ij_javascript_space_before_for_parentheses = true -# ij_javascript_space_before_for_semicolon = false -# ij_javascript_space_before_function_left_parenth = true -# ij_javascript_space_before_generator_mult = false -# ij_javascript_space_before_if_left_brace = true -# ij_javascript_space_before_if_parentheses = true -# ij_javascript_space_before_method_call_parentheses = false -# ij_javascript_space_before_method_left_brace = true -# ij_javascript_space_before_method_parentheses = false -# ij_javascript_space_before_property_colon = false -# ij_javascript_space_before_quest = true -# ij_javascript_space_before_switch_left_brace = true -# ij_javascript_space_before_switch_parentheses = true -# ij_javascript_space_before_try_left_brace = true -# ij_javascript_space_before_type_colon = false -# ij_javascript_space_before_unary_not = false -# ij_javascript_space_before_while_keyword = true -# ij_javascript_space_before_while_left_brace = true -# ij_javascript_space_before_while_parentheses = true -# ij_javascript_spaces_around_additive_operators = true -# ij_javascript_spaces_around_arrow_function_operator = true -# ij_javascript_spaces_around_assignment_operators = true -# ij_javascript_spaces_around_bitwise_operators = true -# ij_javascript_spaces_around_equality_operators = true -# ij_javascript_spaces_around_logical_operators = true -# ij_javascript_spaces_around_multiplicative_operators = true -# ij_javascript_spaces_around_relational_operators = true -# ij_javascript_spaces_around_shift_operators = true -# ij_javascript_spaces_around_unary_operator = false -# ij_javascript_spaces_within_array_initializer_brackets = false -# ij_javascript_spaces_within_brackets = false -# ij_javascript_spaces_within_catch_parentheses = false -# ij_javascript_spaces_within_for_parentheses = false -# ij_javascript_spaces_within_if_parentheses = false -# ij_javascript_spaces_within_imports = false -# ij_javascript_spaces_within_interpolation_expressions = false -# ij_javascript_spaces_within_method_call_parentheses = false -# ij_javascript_spaces_within_method_parentheses = false -# ij_javascript_spaces_within_object_literal_braces = false -# ij_javascript_spaces_within_object_type_braces = true -# ij_javascript_spaces_within_parentheses = false -# ij_javascript_spaces_within_switch_parentheses = false -# ij_javascript_spaces_within_type_assertion = false -# ij_javascript_spaces_within_union_types = true -# ij_javascript_spaces_within_while_parentheses = false -# ij_javascript_special_else_if_treatment = true -# ij_javascript_ternary_operation_signs_on_next_line = false -# ij_javascript_ternary_operation_wrap = off -# ij_javascript_union_types_wrap = on_every_item -# ij_javascript_use_chained_calls_group_indents = false -# ij_javascript_use_double_quotes = true -# ij_javascript_use_explicit_js_extension = global -# ij_javascript_use_path_mapping = always -# ij_javascript_use_public_modifier = false -# ij_javascript_use_semicolon_after_statement = true -# ij_javascript_var_declaration_wrap = normal -# ij_javascript_while_brace_force = never -# ij_javascript_while_on_new_line = false -# ij_javascript_wrap_comments = false - diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 4d6c5b2..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "parser": "babel-eslint", - - "env": { - "browser": true - }, - - "extends": [ - "plugin:react/recommended" - ], - - - "plugins": [ - "react" - ], - - "rules": { - "arrow-body-style": ["off"], - "class-methods-use-this": ["off"], - "comma-dangle": ["warn"], - "dot-notation": ["off"], - "eqeqeq": ["error", "always"], - "import/extensions": ["off"], - "import/prefer-default-export": ["off"], - "indent": ["warn", 4], - "linebreak-style": ["off"], - "max-classes-per-file": ["off"], - "max-len": ["warn", { "code": 100, "ignoreUrls": true }], - "no-console": ["off"], - "no-multi-spaces": ["error", { "ignoreEOLComments": true }], - "no-multiple-empty-lines": ["off"], - "no-param-reassign": ["off"], - "no-plusplus": ["off"], - "no-restricted-syntax": ["off"], - "no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], - "no-useless-constructor": ["off"], - "object-curly-spacing": ["warn"], - "object-shorthand": ["off"], - "operator-linebreak": ["warn"], - "prefer-destructuring": ["off"], - "prefer-template": ["off"], - "quote-props": ["error", "consistent"], - "quotes": ["warn"], - "radix": ["off"], - "react/no-unescaped-entities": [ "error", { "forbid": [">", "}"] }], - "semi": ["error", "always"] - }, - - "settings": { - "react": { - "version": "detect" - } - }, - - "overrides": [ - { - "files": [ "**/*.test.js" ], - "env": { "jest": true } - } - ] -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index b68b2ef..5d9b388 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ - + + + \ No newline at end of file diff --git a/.idea/wireframe.iml b/.idea/wireframe.iml index 1d5efb6..995f82f 100644 --- a/.idea/wireframe.iml +++ b/.idea/wireframe.iml @@ -16,7 +16,7 @@ - + diff --git a/README.md b/README.md index c601c27..4a38b2f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # Boilerplate app You can use this to start a new project + +python manage.py createsuperuser +Username: admin +Email address: admin@example.com +Password: password +Password (again): diff --git a/backend/app/admin.py b/backend/app/admin.py deleted file mode 100644 index 04eadf9..0000000 --- a/backend/app/admin.py +++ /dev/null @@ -1,11 +0,0 @@ -""" -This file controls the administrative interface for the web app. -""" - -from django.contrib import admin - -models_to_register = [ -] - -for model in models_to_register: - admin.site.register(model) diff --git a/backend/app/apps.py b/backend/app/apps.py deleted file mode 100644 index b3303c8..0000000 --- a/backend/app/apps.py +++ /dev/null @@ -1,11 +0,0 @@ -""" -Configuration for the app. -""" - -from django.apps import AppConfig - - -class Config(AppConfig): - """Django app""" - # noinspection PyUnresolvedReferences - name = 'app' diff --git a/backend/app/fields.py b/backend/app/fields.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/app/models.py b/backend/app/models.py deleted file mode 100644 index 32ace9f..0000000 --- a/backend/app/models.py +++ /dev/null @@ -1,3 +0,0 @@ -""" -Models for the the sonification web app. -""" diff --git a/backend/app/serializers.py b/backend/app/serializers.py deleted file mode 100644 index 6df8731..0000000 --- a/backend/app/serializers.py +++ /dev/null @@ -1,5 +0,0 @@ -""" -Serializers take models or other data structures and present them -in ways that can be transported across the backend/frontend divide, or -allow the frontend to suggest changes to the backend/database. -""" diff --git a/backend/app/test_image.jpg b/backend/app/test_image.jpg deleted file mode 100644 index cb3b96aa881792b1a01fc66deba6f49da6e633e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61370 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 element. -Currently, only the `title` property is used. component_props: these can be any properties you -wish to pass into your React components as its highest-level props. -component_name: this should reference the exact name of the React component -you intend to load onto the page. - -Example: -context = { - 'page_metadata': { - 'title': 'Example ID page' - }, - 'component_props': { - 'id': example_id - }, - 'component_name': 'ExampleId' -} -""" -from django.shortcuts import render - - -def index(request): - """ - Home page - """ - - context = { - 'page_metadata': { - 'title': 'Home page' - }, - 'component_name': 'Home' - } - - return render(request, 'index.html', context) diff --git a/backend/config/__init__.py b/backend/config/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/config/settings/__init__.py b/backend/config/settings/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/config/settings/base.py b/backend/config/settings/base.py deleted file mode 100644 index 1c58365..0000000 --- a/backend/config/settings/base.py +++ /dev/null @@ -1,159 +0,0 @@ -""" -Django base settings for ***** project. - -For more information on this file, see -https://docs.djangoproject.com/en/3.1/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/3.1/ref/settings/ -""" - -import os - -CONFIG_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -BACKEND_DIR = os.path.dirname(CONFIG_DIR) -MIGRATIONS_DIR = os.path.join(os.path.dirname(CONFIG_DIR), 'app/migrations') -SETTINGS_DIR = os.path.join(CONFIG_DIR, 'settings') -DB_PATH = os.path.join(BACKEND_DIR, 'db.sqlite3') -PROJECT_ROOT = os.path.dirname(BACKEND_DIR) - -# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ - - -ALLOWED_HOSTS = [] # For production, add domains - - -# Application definition - -INSTALLED_APPS = [ - # django - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - - # 3rd party - 'rest_framework', - 'corsheaders', - 'webpack_loader', - - # our application code - 'app', -] - -MIDDLEWARE = [ - 'corsheaders.middleware.CorsMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'config.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [ - os.path.join(BACKEND_DIR, 'templates'), - ], - 'APP_DIRS': True, # our app doesn't, but our third party apps do! - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'config.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/3.1/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BACKEND_DIR, 'db.sqlite3'), - } -} - - -# Password validation -# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/3.1/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/3.1/howto/static-files/ - -# the url where we'll look for static files -STATIC_URL = '/static/' - -# where collectstatic puts static files for production -STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') - -# where collectstatic looks for static files -STATICFILES_DIRS = ( - os.path.join(PROJECT_ROOT, 'build'), - os.path.join(PROJECT_ROOT, 'assets'), -) - -REST_FRAMEWORK = { - 'DEFAULT_PERMISSION_CLASSES': [ - 'rest_framework.permissions.AllowAny', - ] -} - -CORS_ORIGIN_WHITELIST = [ - 'http://localhost:3000', - 'http://localhost:8000', - 'http://localhost:8080', -] - - -# Django webpack loader settings -WEBPACK_LOADER = { - 'DEFAULT': { - 'BUNDLE_DIR_NAME': './assets/bundles/', - 'STATS_FILE': os.path.join(PROJECT_ROOT, 'webpack-stats.json'), - } -} diff --git a/backend/config/settings/dev.py b/backend/config/settings/dev.py deleted file mode 100644 index 8d8edf5..0000000 --- a/backend/config/settings/dev.py +++ /dev/null @@ -1,18 +0,0 @@ -""" - -Local development Django settings for ***** - -Under no circumstances run the server with these settings in production! - -""" - -from config.settings.base import * # pylint: disable=unused-wildcard-import, wildcard-import - - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'qqucn931x78rx054n(6g(s_3vxppjw$f24e(9&v6rsbd0&0$2e' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] # wildcard diff --git a/backend/config/settings/production.py b/backend/config/settings/production.py deleted file mode 100644 index ef6cdec..0000000 --- a/backend/config/settings/production.py +++ /dev/null @@ -1,18 +0,0 @@ -""" - -Production settings for ***** - -""" - -from .base import * # pylint: disable=unused-wildcard-import, wildcard-import - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False - -# SECRET_KEY = os.environ['DJANGO_SECRET_KEY'] # set in venv activate - -ADMINS = ['rahmed@mit.edu'] # Django will email Ryaan on internal server errors - -ALLOWED_HOSTS = [] - -CORS_ORIGIN_WHITELIST = [] diff --git a/backend/config/urls.py b/backend/config/urls.py deleted file mode 100644 index 031327e..0000000 --- a/backend/config/urls.py +++ /dev/null @@ -1,31 +0,0 @@ -""" -URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/3.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URL configuration - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path - -try: - from ..app import views -except (ImportError, ModuleNotFoundError): - from app import views - -urlpatterns = [ - # Django admin page - path('admin/', admin.site.urls), - - # API endpoints - path('', views.index) -] diff --git a/backend/manage.py b/backend/manage.py deleted file mode 100755 index 1558f32..0000000 --- a/backend/manage.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -# pylint: disable=import-outside-toplevel -def main(): - """Main start Django function""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.dev') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/backend/templates/index.html b/backend/templates/index.html deleted file mode 100644 index 82b2d7d..0000000 --- a/backend/templates/index.html +++ /dev/null @@ -1,29 +0,0 @@ -{% load render_bundle from webpack_loader %} - - - - - - {{page_metadata.title}} - - - - - {% render_bundle 'index' 'css' %} - - - - -
-

Hello world!

-
- - {{component_props|json_script:"component_props"}} - {{component_name|json_script:"component_name"}} - {% render_bundle 'index' 'js' %} - - - diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index bbd43b8..0000000 --- a/docs/README.md +++ /dev/null @@ -1 +0,0 @@ -## Documentation diff --git a/frontend/common.js b/frontend/common.js deleted file mode 100644 index 21ee721..0000000 --- a/frontend/common.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Common.js -- miscellaneous routines useful throughout the system - */ - - - -/** - * Get the value of a cookie, given its name - * Adapted from https://docs.djangoproject.com/en/2.2/ref/csrf/#ajax - * @param {string} name - The name of the cookie - */ -export function getCookie(name) { - let cookieValue; - if (document.cookie && document.cookie !== "") { - const cookies = document.cookie.split(";"); - for (const rawCookie of cookies) { - const cookie = rawCookie.trim(); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) === (name + "=")) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; -} \ No newline at end of file diff --git a/frontend/components/ErrorNotFoundComponent.js b/frontend/components/ErrorNotFoundComponent.js deleted file mode 100644 index 524d066..0000000 --- a/frontend/components/ErrorNotFoundComponent.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from "react"; - -const ErrorNotFoundComponent = () => { - - return ( - <> -

Error: No React Component found

-

- This is likely an error in development. -
- Make sure that you register your component in index.js and reference it - by name in the relevant view function. -

- - ); -}; - -export default ErrorNotFoundComponent; \ No newline at end of file diff --git a/frontend/components/ExampleId.js b/frontend/components/ExampleId.js deleted file mode 100644 index 916b7f7..0000000 --- a/frontend/components/ExampleId.js +++ /dev/null @@ -1,34 +0,0 @@ -import React, {useState} from "react"; -import * as PropTypes from "prop-types"; -import STYLES from "./ExampleId.module.scss"; - -const ExampleId = ({id}) => { - - const [tracker, setTracker] = useState(0); - - const onButtonClick = () => { - setTracker(previousState => previousState + 1); - }; - - return ( -
-

This is the Example ID page.

-

- This page demonstrates passing view parameters from Django to React - and very simple state management. -

-

View params:

-
    -
  • ID: {id}
  • -
-

Example state: {tracker}

- -
- ); -}; - -ExampleId.propTypes = { - id: PropTypes.number -}; - -export default ExampleId; diff --git a/frontend/components/ExampleId.module.scss b/frontend/components/ExampleId.module.scss deleted file mode 100644 index 727508b..0000000 --- a/frontend/components/ExampleId.module.scss +++ /dev/null @@ -1,4 +0,0 @@ -.list { - list-style: none; - padding: 0.5rem; -} \ No newline at end of file diff --git a/frontend/components/Home.js b/frontend/components/Home.js deleted file mode 100644 index 6696be8..0000000 --- a/frontend/components/Home.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; - -const Home = () => { - - return ( - <> -

Hello world!

- - ); -}; - -export default Home; diff --git a/frontend/components/global/Base.js b/frontend/components/global/Base.js deleted file mode 100644 index 6651241..0000000 --- a/frontend/components/global/Base.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; -import Nav from "./Nav"; -import STYLES from "./Base.module.scss"; -import * as PropTypes from "prop-types"; - -const Base = ({children}) => { - return ( - <> -