Commit c30ac502 authored by Shashank Kumar's avatar Shashank Kumar

conflict resolved

parents 8e2e4aaf 21d6c2a0
# New Contributor Wizard - Contributors
Contributors to this project can be seen [here](https://salsa.debian.org/new-contributor-wizard-team/new-contributor-wizard/graphs/master).
#### Maintainer(s)
- [Shashank Kumar](https://shanky.xyz) - Starting GSoC 2018 as The Debian's [Project](https://summerofcode.withgoogle.com/projects/#5056989357408256)
#### Special Mention
- [Daniel Pocock](https://danielpocock.com/) - Project Idea and Mentor. Daniel came up with the brainchild which led to the formation of this application and has been guiding since the beginning to help shape the project for the betterment of the community.
- [Sanyam Khurana](https://sanyamkhurana.com) - Mentor and Code Review. Sanyam with his expertise in Python has been reviewing all the merge requests made to this application in order for the code to follow the standards and practices and developer friendly.
- [Akshay Arora](https://github.com/akshayaurora) - Core Kivy Contributor. Akshay has been a long time Kivy developer and contributor and has been helping out with the features Kivy has to offer in order to scale the application.
- [Laurens](https://www.lvh.io/about.html) - Author Crypt 101. Laurens' book on cryptography has become a reference for the Encryption modules in order to develop tools and tutorials.
......@@ -11,22 +11,32 @@ Project management is currently underway on [Redmine](https://outreach-lab.debia
### Prerequisites To Build Application
- GNU/Linux OS (Tested on Debian 9)
- Python (Tested on Python =>3.5)
- Python (Tested on Python => 3.5)
### Documentation
##### Developer Documentation
#### Developer Documentation
These documentations help developers who are willing to build this application from source. Checkout docs from [here](docs/developer.md).
##### Contributor Documentation
#### Contributor Documentation
These documentations contains guildelines for the contributors get started with best practices to help out in contributing to this project. Checkout docs from [here](docs/contributor.md).
These documentations contains guildelines for the contributors get started with best practices to help out in contributing to this project. Checkout docs from [here](docs/contributing.md).
##### User Documentation
##### Contribute To Tutorials
Contributing Tutorials is as simple as creating a JSON file, NO CODING REQUIRED! You can create a JSON file in order to contribute to Tutorials of any module of your choice. Visit [Contribute To Tutorials](docs/contribute-to-tutorials.md) to know how.
#### User Documentation
These documentations help end users get started with the application and describe the features which can be explored further. Checkout docs from [here](docs/user.md).
#### Changelogs
Changelogs for this project is based on [SemVer](https://semver.org/) or Semantic Versioning. Checkout Changelogs from [here](changelog).
### Contributors
Checkout [CONTRIBUTORS](CONTRIBUTORS.md) to know more about the awesome people behind this project.
New Contributor Wizard v0.0.1
## August 13 2018
- Adding description to all the course ware modules by updating `module_data.json` (Shashank Kumar - realslimshanky)
- Refactored `module_box` module to support description on the UI (Shashank Kumar - realslimshanky)
## August 7 2018
- Adding `Contribute To Tutorials` documentation (Shashank Kumar - realslimshanky)
## August 6 2018
- How To Use module updated with a tutorial on how to get started with the application (Shashank Kumar - realslimshanky)
......
[
{
"application_settings": {
"description": "",
"tutorials": [],
"tools": []
}
},
{
"blog": {
"description": "A blog can be seen as a perspective of the author about a particular topic they want the world to know. It also serves as a reminder to self which helps remember past concepts and accomplishments. And, it can also be seen as a place to show off your cool projects to the world. In Blog section, you'll learn about what are the various ways to setup a blog, you'll learn about how to put the blog out for the world to see and much more.",
"tutorials": [],
"tools": []
}
},
{
"cli": {
"command_line_inteface": {
"description": "Command Line Interfaces are one of the essential tool used by a developer on a daily basis irrespective of their domain of work. This makes it the first thing to learn before even starting a programming language. In Command Line Interface section, you'll learn about the basics and few hacks to improve productivity.",
"tutorials": [],
"tools": []
}
},
{
"communication": {
"description": "When in an organization, communication plays a vital role in deciding how smooth the team will function. Whether team is comprised of just 2 contributors or more than that. Improving communication can bring a surprising change in time taken while querying peers for doubt, reviews and feedbacks. In this communication section, you'll learn about different forms of communication channel an organization uses and guidelines for communication.",
"tutorials": [],
"tools": []
}
},
{
"encryption": {
"description": "You might have heard about data being the key to today's world. More so, within an organization and in your own life you might have to store and share sensetive information with your peers. Hence, it becomes important that you use best practices in order to better encrypt/decrypt the data in consideration. This Encryption section, you'll learn more about cryptography and encryption. You'll even get to create and manage your own key pair, encrypt and decrypt messages.",
"tutorials": [
{
"title": "Encryption 101",
......@@ -53,30 +58,35 @@
},
{
"how_to_use": {
"description": "How To Use section contains a simple description about the application and different sections in it.",
"tutorials": [],
"tools": []
}
},
{
"profile_settings": {
"description": "",
"tutorials": [],
"tools": []
}
},
{
"theme_settings": {
"description": "",
"tutorials": [],
"tools": []
}
},
{
"vcs": {
"version_control_system": {
"description": "While collaborating, a Version Control System helps in managing the codebase shared across contributors for a project, smooth out the development process varying different versions and gives enough freedom for a person to experiment with a new feature without much hassle. In Version Control System, you'll learn about how it works, what are the various ways of using VCS and get to work on a sample repository as well.",
"tutorials": [],
"tools": []
}
},
{
"way_ahead": {
"description": "If you have a general idea about all the course ware sections above this, then mark yourself ready for the real world projects and collaborating with different organizations. This section will help you understand how open source organizations like Debian work, how to contribute to such organizations, what are the various programs like Google Summer of Code or Outreachy and much more.",
"tutorials": [],
"tools": []
}
......
This diff is collapsed.
......@@ -15,3 +15,7 @@
- Make sure the merge reqeust is atomic, ie. only trying to solve one problem at a time.
- Always write tests, documentations and changelogs (if required) with the changes you make to the project.
### Contribute To Tutorials
Contributing Tutorials is as simple as creating a JSON file, NO CODING REQUIRED! You can create a JSON file in order to contribute to Tutorials of any module of your choice. Visit [Contribute To Tutorials](contribute-to-tutorials.md) to know how.
'''
Modules containing CLI classes
Modules containing CommandLineInterface classes
'''
from kivy.uix.boxlayout import BoxLayout
from modules.module_box.module_box import ModuleBox
class CLI(BoxLayout):
class CommandLineInterface(BoxLayout):
'''
CLI class for tutorials and tools
CommandLineInterface class for tutorials and tools
'''
def __init__(self, **kwargs):
super(CLI, self).__init__(**kwargs)
self.module_box = ModuleBox("cli")
super(CommandLineInterface, self).__init__(**kwargs)
self.module_box = ModuleBox("command_line_inteface")
self.add_widget(self.module_box)
......@@ -6,12 +6,12 @@ from kivy.uix.boxlayout import BoxLayout
from modules.module_box.module_box import ModuleBox
class VCS(BoxLayout):
class VersionControlSystem(BoxLayout):
'''
VCS class for tutorials and tools
VersionControlSystem class for tutorials and tools
'''
def __init__(self, **kwargs):
super(VCS, self).__init__(**kwargs)
self.module_box = ModuleBox("vcs")
super(VersionControlSystem, self).__init__(**kwargs)
self.module_box = ModuleBox("version_control_system")
self.add_widget(self.module_box)
......@@ -12,11 +12,13 @@ except ImportError:
logging.info('Dashboard: Install navigationdrawer from garden')
from modules.course_modules.blog.blog import Blog
from modules.course_modules.cli.cli import CLI
from modules.course_modules.command_line_inteface.command_line_inteface import\
CommandLineInterface
from modules.course_modules.communication.communication import Communication
from modules.course_modules.encryption.encryption import Encryption
from modules.course_modules.how_to_use.how_to_use import HowToUse
from modules.course_modules.vcs.vcs import VCS
from modules.course_modules.version_control_system.version_control_system\
import VersionControlSystem
from modules.course_modules.way_ahead.way_ahead import WayAhead
......
'''
Modules containing ModuleBox classes
'''
import json
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
......@@ -18,9 +20,26 @@ class ModuleBox(BoxLayout):
def __init__(self, root_module_name, **kwargs):
super(ModuleBox, self).__init__(**kwargs)
with open('data/module_data.json') as data:
json_data = json.loads(data.read())
for data in json_data:
if root_module_name in data.keys():
self.module_data = data[root_module_name]
break
module_title = ' '.join(
[name.capitalize() for name in root_module_name.split('_')])
self.ids['module_title'].text = module_title
self.ids['module_description'].text = self.module_data['description']
self.all_options = {
'tutorials': ModuleTutorialsMenu(root_module_name),
'tools': ModuleToolsMenu(root_module_name),
'tutorials': ModuleTutorialsMenu(
root_module_name=root_module_name,
tutorials=self.module_data["tutorials"]),
'tools': ModuleToolsMenu(
root_module_name=root_module_name,
tools=self.module_data["tools"]),
}
self.all_options_items = list(self.all_options.keys())
......@@ -29,6 +48,11 @@ class ModuleBox(BoxLayout):
enable_menu function focuses on concerned menu items or settings which
is clicked and removes focus from all other menu items and settings
'''
if 'module_details_box' in self.ids:
self.ids['module_content_box'].remove_widget(
self.ids['module_content_box'].children[0])
del(self.ids['module_details_box'])
option_to_enable_widget = self.ids[option_to_enable + '_box']
widget_canvas = option_to_enable_widget.canvas
option_to_enable_color = widget_canvas.before.children[0].rgba
......
'''
Modules containing Tools classes for Abstraction
'''
import json
from importlib import import_module
from kivy.lang import Builder
......@@ -29,22 +28,15 @@ class ModuleToolsMenu(BoxLayout):
ModuleToolsMenu class to present Tools Menu
'''
def __init__(self, root_module_name, **kwargs):
def __init__(self, root_module_name, tools, **kwargs):
super(ModuleToolsMenu, self).__init__(**kwargs)
self.all_tools = {}
self.removed_tools_menu = None
self.root_module_name = root_module_name
with open('data/module_data.json') as data:
json_data = json.loads(data.read())
for data in json_data:
if self.root_module_name in data.keys():
self.module_data = data[self.root_module_name]
break
if self.module_data["tools"]:
for tool in self.module_data["tools"]:
if tools:
for tool in tools:
tool_key = '_'.join(tool['title'].lower().split())
self.all_tools[tool_key] = tool
self.populate_tools_menu()
......
......@@ -2,7 +2,6 @@
Modules containing Tutorials classes for Abstraction
'''
import os
import json
from kivy.lang import Builder
from kivy.factory import Factory
......@@ -31,22 +30,15 @@ class ModuleTutorialsMenu(BoxLayout):
ModuleTutorialsMenu class to present Tutorials Menu
'''
def __init__(self, root_module_name, **kwargs):
def __init__(self, root_module_name, tutorials, **kwargs):
super(ModuleTutorialsMenu, self).__init__(**kwargs)
self.all_tutorials = {}
self.removed_tutorials_menu = None
self.root_module_name = root_module_name
with open('data/module_data.json') as data:
json_data = json.loads(data.read())
for data in json_data:
if self.root_module_name in data.keys():
self.module_data = data[self.root_module_name]
break
if self.module_data["tutorials"]:
for tutorial in self.module_data["tutorials"]:
if tutorials:
for tutorial in tutorials:
tutorial_key = '_'.join(tutorial['title'].lower().split())
self.all_tutorials[tutorial_key] = tutorial
self.populate_tutorials_menu()
......
......@@ -19,10 +19,10 @@
id: communication_label
text: 'Communication'
MenuButton
id: cli_box
on_press: nav_screen.current = 'cli_screen'
id: command_line_interface_box
on_press: nav_screen.current = 'command_line_interface_screen'
MenuLabel
id: cli_label
id: command_line_interface_label
text: 'CLI'
MenuButton
id: blog_box
......@@ -31,10 +31,10 @@
id: blog_label
text: 'Blog'
MenuButton
id: vcs_box
on_press: nav_screen.current = 'vcs_screen'
id: version_control_system_box
on_press: nav_screen.current = 'version_control_system_screen'
MenuLabel
id: vcs_label
id: version_control_system_label
text: 'VCS'
MenuButton
id: encryption_box
......@@ -91,8 +91,8 @@
name: 'blog_screen'
Blog
Screen
name: 'cli_screen'
CLI
name: 'command_line_interface_screen'
CommandLineInterface
Screen
name: 'communication_screen'
Communication
......@@ -103,8 +103,8 @@
name: 'how_to_use_screen'
HowToUse
Screen
name: 'vcs_screen'
VCS
name: 'version_control_system_screen'
VersionControlSystem
Screen
name: 'way_ahead_screen'
WayAhead
......
......@@ -9,6 +9,25 @@
Rectangle
pos: self.pos
size: self.size
BoxLayout
orientation: 'vertical'
id: module_details_box
BoxLayout
size_hint: 1, 0.2
ModuleLabel
id: module_title
font_size: dp(30)
valign: 'center'
halign: 'center'
BoxLayout
size_hint: 1, 0.8
orientation: 'vertical'
ModuleLabel
id: module_description
font_size: dp(20)
padding: 20, 20
valign: 'top'
halign: 'justify'
BoxLayout
size_hint: 1, 0.1175
RadioNavButton
......@@ -24,6 +43,13 @@
text: 'Tools'
id: tools
<ModuleLabel@Label>
font_name: 'ui/assets/fonts/VarelaRound-Regular.ttf'
color: 0, 0, 0, 1
markup: True
text_size: self.size
size: self.texture_size
<RadioNavButton@ButtonBehavior+BoxLayout>
canvas.before:
Color
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment