Giter VIP home page Giter VIP logo

fusion's Introduction

FusionIIIT

FusionIIIT is the automation of various functionalities, modules and tasks of/for PDPM Indian Institute of Information Technology, Design and Manufacturing, Jabalpur being developed in python3.8 and using Django Webframework.

System Configuration

Software Requirements

  • Python 3.8
  • Git

Contributing Guidelines

For contributing to this repository, you have to follow the guidelines given in CONTRIBUTING.md and CODE_OF_CONDUCT.md for smooth workflow of contributions and changes inside repository.

How to get started

  • on Ubuntu:

    // Install the required packages using the following command:
    
    sudo apt install python3-pip python3-dev python3-venv libpq-dev build-essential git
    sudo -H pip3 install --upgrade pip
  • on Windows:

    • Get Python 3.8 from here for AMD64/x64 or here for x86
    • Git from here
    • Install both using the downloaded exe files
      Important: Make sure to check the box that says Add Python 3.x to PATH to ensure that the interpreter will be placed in your execution path

Downloading the Code

  • Go to (https://github.com/FusionIIIT/Fusion) and click on Fork
  • You will be redirected to your fork, https://github.com/<your_user_name>/Fusion
  • Open the terminal, change to the directory where you want to clone the Fusion repository
  • Clone your repository using git clone https://github.com/<your_user_name>/Fusion
  • Enter the cloned directory using cd Fusion/

Setting up environment

  • Create a virtual environment
    • on Ubuntu: python3 -m venv env
    • on Windows PowerShell: python -m venv env
  • Activate the env
    • on Ubuntu: source env/bin/activate
    • on Windows PowerShell: .\env\Scripts\Activate.ps1
      Note : On Windows, it may be required to enable the Activate.ps1 script by setting the execution policy for the user. You can do this by issuing the following command: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Install the requirements: pip install -r requirements.txt

Running server

  • Change directory to FusionIIIT cd FusionIIIT
  • Run the server python manage.py runserver

Working with Code (Method 1)

Setting upstream

  • git remote add upstream https://github.com/FusionIIIT/Fusion
    • Adds the remote repository (the repository you forked from) so that changes can be pulled from/pushed to it

Switching branch

  • git checkout -b <module-name>
    • Creates a new branch <module-name> in your repository
  • git checkout <module-name>
    • Switches to the branch you just created

Migrating Changes (Database)

  • Make migrations $ python manage.py makemigrations
  • Migrate the changes to the database $ python manage.py migrate

Committing

  • git add .
    • Adds the changes to the staging area
  • git commit
    • Commits the staged changes

Syncing

Pulling

  • git pull upstream master
    • Pulls the changes from the upstream master branch

Pushing

  • git push -u origin <module-name>
    • Pushes the changes to your repository (First time only); using git push is sufficient later on
  • Go to https://github.com/<your_user_name>/Fusion/tree/<module-name> and create pull request

Working with Code (Alternative)

Testing Procedure:

Selenium-webdriver

Selenium is a browser automation library. Most often used for testing web-applications, Selenium may be used for any task that requires automating interaction with the browser.

Installation

You can visit Selenium Official website and can download the language-specific client drivers(Java in our case)

https://selenium-release.storage.googleapis.com/3.141/selenium-java-3.141.59.zip

You will need to download additional components to work with each of the major browsers. The drivers for Chrome, Firefox, and Microsoft's IE and Edge web browsers are all standalone executables that should be placed on your system [PATH]. Apple's safaridriver is shipped with Safari 10 for OS X El Capitan and macOS Sierra. You will need to enable Remote Automation in the Develop menu of Safari 10 before testing.

Browser Component
Chrome ChromeDriver
Internet Explorer IEDriverServer
Firefox GeckoDriver

Add the Cucumber Eclipse Plugin for BDD testing

  • Install the Cucumber Eclipse Plugin from Eclipse MarketPlace under help

Getting Started

  • Open the Test folder in Eclipse IDE(You are free to use any IDE)

    • Open the pom.xml and build the project
    • Change the driver path in System.setProperty in line 16 of Step_defination.java
  • Under the src/main/resources we have main.feature file to define Scenarios and Steps

  • Give the step defination of the defined scenarios and steps in Step_Defination.java under src/main/java

Different modules included

  • Academic database management
  • Academic workflows
  • Finance and Accounting
  • Placement Cell
  • Mess management
  • Gymkhana Activities
  • Scholarship and Awards Portal
  • Employee Management
  • Course Management
  • Complaint System
  • File Tracking System
  • Health Centre Mangement
  • Visitor's Hostel Management
  • Leave Module

Notifications Support

The project now supports notifications across all modules. To implement notifications in your module refer to the instructions below.

  • Create your notification class in ./FusionIIIT/notifications/views.py
    def module_notif(sender, recipient, type):
      url='slug:slug'
      module='ModuleName'
      sender = sender
      recipient = recipient
      verb = ''
    
      // Type conditioned verb
      if type == 'A':
          verb = "A Verb"
      elif type == 'B':
          verb = "B Verb "
      notify.send(sender=sender, recipient=recipient, url=url, module=module, verb=verb)
    
  • Import your Notification class in your module into your_module/views.py
    from notification.views import module_notif
    
  • To create a Notification, simply call the class and pass user objects for sender, receiver and a string type.
    module_notif(sender, receiver, type)
    
  • The Notifications should then appear in the dashboard for the recipient

Setting up Fusion using Docker

  • Make sure you have docker & docker-compose setup properly.
  • Run docker-compose up
  • Once the server starts, run sudo docker exec -i fusion_db_1 psql -U fusion_admin -d fusionlab < path_to_db_dump

fusion's People

Contributors

abhaygupta5 avatar achintmi avatar ajtheb avatar ajwad-shaikh avatar amanchande avatar amhndu avatar anuraagheisenberg avatar ari2016047 avatar arshadsid avatar chetan1357 avatar debnath-d avatar deto-5420 avatar devpika avatar garg3133 avatar garvitgupta13 avatar gautamyadavs avatar kmunshi97 avatar mananjethwani avatar manavgoyal53 avatar mani9896 avatar pranjulps3 avatar revatim avatar salarx avatar samy-33 avatar sanji515 avatar sansax27 avatar shivansh1010 avatar shubham-on avatar sksingh55 avatar thesid01 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fusion's Issues

Gymkhana Module

issue-2

issue-1

In the module Gymkhana, the dropdown menu in club sessions and member records weren't getting closed when we click outside the divison as shown in the photos. But whereas in the apply divison, the dropdown menu was perfect and functionality was a bit different.

Jquery cdn

Jquery cdn is used in the modules and it doesn't work without internet.
Kindly download it and use it from globals or suggest an alternative.

Bug while adding skill in profile

When trying to add a skill with a name that is already present, intergrity error is thrown because a skill with that name and user id already exists. It can be corrected by adding a try except statement while creating the Has object for the user.

Refactor File Tracking System code

There is a dire need to refactor the code written in File Tracking System.

  • You should pass only that information to the context which is being used in the pages (and not the complete table).
  • Use of proper variable names should be made.
  • Remove all the useless comments and print statements. Those are meant for development purpose only and not for production.
  • Proper coding practices should be followed in terms of indentations, newlines, maximum characters in a line, etc.
  • Proper docstrings should be used at the start of each view explaining briefly what the view does.

This issue can be worked upon in a team where different people can refactor different views.

File which needs to be refactored: applications/filetracking/views.py.

Bug with display of File in File Tracking System

The file uploaded in File model is not displayed anywhere but only the file uploaded in Tracking model is displayed.

The original file should be available at all times and the file field in Tracking model is for follow-up and not for containing the original file so the original file should not be saved in the Tracking model while sending the file for the first time. This specifically creates a problem when the file is initially saved as draft and then forwarded to the recipient after some time. If the same file is not uploaded again while forwarding the draft, no file is displayed to the user to whom it has been sent.

Group-1 HR-1(LTC, CPDA, and Appraisal) UI Design

Note: The UI designs are similar in most cases for Ltc, Cpda, and Appraisal.
We have created those designs which are different/unique and omitted some which are increasingly similar.
For some of the designs that are similar for the three forms, we've created one of the three designs to serve as an example for all three.

Actors

User

Cpda_user

Cpda_user

Ltc_user

Ltc_user

Appraisal User

Appraisal_user1
Appraisal_user2
Appraisal_user3
Appraisal_user4
Appraisal_user5

Admin

Admin_appraisal

Admin_appraisal

Admin_cpda

Admin_cpda

Admin_ltc

Admin_ltc

Assistant Registrar

Cpda_Ar

Director

Cpda_director

Group #16 Academic Module

MTech_Report
DataBaseSchema
Review_MTech_Seminar
Phd_progress_report
Review_Phd
Asistantship_claim_student
Thesis_TA_Supervisor

PhD students fill the Phd progress report form.
MTech student fills the MTech Seminar Report Form, All PhD and M tech students fill the assistantship claim form, concerned faculty reviews the M.Tech Seminar Form and PhD progress report.
Thesis and TA Supervisor review the Assistantship Claim Form.

Add jsonfield version specification in requirements

Error while running on local server-
Internal Server Error: /dashboard/ Traceback (most recent call last): File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\core\handlers\exception.py", line 41, in inner response = get_response(request) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\contrib\auth\decorators.py", line 23, in _wrapped_view return view_func(request, *args, **kwargs) File "C:\Users\Saumya\Downloads\Fusion\FusionIIIT\applications\globals\views.py", line 712, in dashboard return render(request, "dashboard/dashboard.html", context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\shortcuts.py", line 30, in render content = loader.render_to_string(template_name, context, request, using=using) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\loader.py", line 68, in render_to_string return template.render(context, request) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\backends\django.py", line 66, in render return self.template.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 207, in render return self._render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\test\utils.py", line 107, in instrumented_test_render return self.nodelist.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 990, in render bit = node.render_annotated(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 957, in render_annotated return self.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\loader_tags.py", line 177, in render return compiled_parent._render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\test\utils.py", line 107, in instrumented_test_render return self.nodelist.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 990, in render bit = node.render_annotated(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 957, in render_annotated return self.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\loader_tags.py", line 72, in render result = block.nodelist.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 990, in render bit = node.render_annotated(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 957, in render_annotated return self.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\loader_tags.py", line 72, in render result = block.nodelist.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 990, in render bit = node.render_annotated(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 957, in render_annotated return self.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\loader_tags.py", line 216, in render return template.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 209, in render return self._render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\test\utils.py", line 107, in instrumented_test_render return self.nodelist.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 990, in render bit = node.render_annotated(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 957, in render_annotated return self.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\loader_tags.py", line 63, in render result = self.nodelist.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 990, in render bit = node.render_annotated(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\base.py", line 957, in render_annotated return self.render(context) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\template\defaulttags.py", line 173, in render len_values = len(values) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\db\models\query.py", line 232, in __len__ self._fetch_all() File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\db\models\query.py", line 1121, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\db\models\query.py", line 62, in __iter__ for row in compiler.results_iter(results): File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\db\models\sql\compiler.py", line 847, in results_iter row = self.apply_converters(row, converters) File "C:\Users\Saumya\Downloads\Fusion\env\lib\site-packages\django\db\models\sql\compiler.py", line 832, in apply_converters value = converter(value, expression, self.connection, self.query.context) TypeError: from_db_value() takes 4 positional arguments but 5 were given

Alternative use pip install jsonfield==2.1.1
Or add jsonfield == 2.1.1 in requirements.txt

Bugs and hardcoded values

temp = HoldsDesignation.objects.all().select_related().filter(designation = desig_id).first()






Group #17 Programme & Curriculum Module Database Schema

For our Programme & Curriculum module, we designed the following database schema.
Every COURSE belongs to a particular SEMESTER (or different semesters of other programmes), and every SEMESTER belongs to a particular CURRICULUM, and a CURRICULUM to a particular PROGRAMME. It is also required (by Dr.Atul Gupta) that Acadmic_Incharge should always able to see a history of past COURSES / SEMESTERS / CURRICULUMS / PROGRAMMES offered by the Institute.
Keeping these in mind, we designed this👇.
FusionIIIT - PCM - Database Schema

Migrations for 'gymkhana' module

Observed Behaviour

Currently, even if you haven't changed the models for gymkhana module, still on makemigrations new migrations are created.

Expected Behaviour

If there is no change in the models, no migrations should be made.

Steps to reproduce the problem

Run(multiple times) python manage.py makemigrations

screenshot 141

Department Module

  • 1. Profile card and content card can leak data in smaller windows as responsiveness is not implemented.
    1

  • 2. Faculty's personal details has not been updated and has some data inconsistency.
    2

  • 3. Back button provided in the student list may run in a loop due to internal logic issues.
    3

  • 4. Student list as well as their individual personal details has not been updated.
    4

  • 5. CSE department's content card has different margin specifications than the others, creating an exception in the default UI flow.
    5

  • 6.Top navigation bar is not responsive with the screen width.
    6

Group-4 income_expenditure UI Design

Group-4 Income and Expenditure UI Design


Three main core landing pages of the module's UI design are give below:

Income Landing Page


Income_Landing_Page

Details that are required to be filled :

  • Selecting the income source from the dropdown list.
  • Enter the amount granted or received through the mentioned Source.
  • Mention the date of transaction or date received according to the convenience.
  • Choose a receipt file if applicable or available.
  • Add information regarding the details of how the money was received or granted.

Other Functionalities:

  • By clicking on view history tab user can access the data which has been added previously.
  • Add income source tab is used to add a new income source to the drop-down list.

Expenditure Landing Page


Expenditure_Landing_Page

Details that are to be filled:

  • Selecting the expenditure type from the dropdown list.
  • Enter the amount spent on the mentioned type.
  • Mention the date of transaction or date spent according to the convenience.
  • Choose a receipt file if applicable or available.
  • Add information regarding the details of to whom/what the money was spent or granted.

Other Functionalities:

  • By clicking on view history tab user can access the data which has been added previously.
  • Add Expenditure type tab is used to add a new expenditure type to the drop-down list.

View Stats and Download Balance Sheet :


View_Stats

Details to be filled:

  • User is required to give the financial year for which he wanted stats or balance sheet
  • On selecting the financial year from the dropdown the data gets processed and some pictorial summary of the financials come up for easy understanding.
  • Download balance sheet tab helps to combine and process data into a balance sheet and will be downloaded.

Group-5 PS-1 Purchase and Store module UI design

Group-5

                            Group Members :-
                                                     Deepak Singh      (2018325)                         
                                                     Shubham Rajani  (2018239)
                                                     Suyash Khare      (2018257)
                                                     Pampati Varshith (2018346)

Module- PS1 (Purchase and Store)
Source file for UI design - UI (PS1 module).pdf

USER INTERFACE DESIGN

Details of item that are required to be filled :

  • Name of the Item/Equipment needed
  • Specification and Purpose of item
  • Quantity needed and Estimated Cost of item
  • Current reserved stock of that item
  • Type and nature of equipment/item
  • Possible sources where that item will be available with good quality in decent price
  • Whether item available indegenously or to be imported

Senders and receivers details to be required :

  • Name of the indenter
  • Designation and Dept./Section of indenter(sender)
  • ID of Dept./Section Head(receiver)
  • Designation of receiver

1

2

Approver/Purchase Officer GUI:
Below is the UI of approver(HEAD/DIRECTOR) who will be responsible for approval of application

3

Approver will be able to view all the received indents in the
inbox section with proper details as shown above.

4

Approver can either accept or reject an application and can give remarks accordingly in the Remark field.

5

6

Finally the approver sents the accepted information to purchase officer

Dealing Assistant
Stock Entry of the items received.
Finally the bills will be processed.

8

RS2

Cards can be added to your board to track the progress of issues and pull requests. You can also add note cards, like this one!

Gymkhana Module

There are two more issues in this Gymkhana module. They are:

  1. In the divison of member records, when we are interested in serching for records of a particular club with the dropdown menu, we are unable to get the data with single click, as it is taking two clicks to get the data except for the club "Saaz".
  2. The second issue is when we click on any club except saaz its blank but once we click on saaz club, we are able to see record of one person, after that if we select any other club, the records of only "Saaz" was appearing as shown in the screenshot.

issue-4
issue-3

Group-1 HR-1(LTC, CPDA, and Appraisal) Database Schema

The Database schema consists of the appraisal database records. Our module HR-1 consists of the LTC, CPDA, and Appraisal forms out of which the first two have been implemented.
For the appraisal implementation, we’ve identified the requirement of the records as shown below.

DataBase-Schema

Central Mess Module

All the issues related to the Central Mess module

Please number the issues properly so that we can refer them while discussing to resolve the issues.

  • 1. Cannot open "/mess".
    Screenshot from 2021-09-13 10-48-02

/media has tons of irrelevant media

I've added the directory to .gitignore to prevent further damage.
Please confirm if the directory has any useful data, otherwise, it would be purged from git (it won't be deleted from your local repo, it only needs to be untracked).

Compile time warning in Gymkhana Module

We have a trivial compile-time warning in Gymkhana Module likely after #182

Fusion\FusionIIIT\applications\gymkhana\views.py:205: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if current_value is not "":

@zackaman request a fix with your next PR

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.