bitbyte-tpc / alumni Goto Github PK
View Code? Open in Web Editor NEWAlumni Portal for IIITDM Jabalpur
Home Page: https://alumni.iiitdmj.ac.in
License: MIT License
Alumni Portal for IIITDM Jabalpur
Home Page: https://alumni.iiitdmj.ac.in
License: MIT License
Custom logs are to be implemented for both environments, development and production. Custom logs will be useful to add convenient data that could be helpful in debugging or removing unwanted data flooding the log stream.
LOGGING
dictionary - simple, verbose, and detailed, with increasing detailing of level messages.Feel free to suggest!
LOGGING
dictionary is to be defined at the bottom of the common.py
.The detailed blog page is to be created at \blogs\<id-of-that-blog>\
.
Make a \blogs\<id-of-that-blog>\
page following the standard convention, i.e a header, a footer, and a box with all details in it. Additionally, make sure the page is responsive.
Feel free to suggest!
For reference, you can check out detailed pages of news at \news\<id>
or profiles at profile\<id>
.
There are a bunch of scripts in the scripts/
directory of the project which can be used to populate the initial data when setting up this project by running python3 manage.py shell < scripts/add_batch.py
command (for example).
However, these scripts are stored in many files, which can be confusing to users as to which scripts to run and in what order. Also, the add_data.py
script is not working right now and the user data in acc.xlsx
is also old and very few.
So, we need to do the following:
populate.py
, which is the only script the user would need to run while populating the database. Inside this script, import the function from other individual scripts and run them (in the order they should be run).acc.xlsx
file to include some more dummy data, and add_data.py
file to be able to use the Excel file and populate the data into the database.Out of all the scripts currently present in the scripts/
directory, add_batch.py
and add_data.py
are the only two important scripts. And the logic for creating profile.reg_no
should be included in the add_data.py
file only.
There is a MapPoints
model in the geolocation app, which contains the latitude/longitude information for all the cities where our alumni network is present. But some of these points are outdated (with 0 alumni members) and are still shown on the map.
So, we should have either an endpoint which we can hit or a script which we can run on the server to delete the map points corresponding to which there are no Profile
instances that exist.
Whenever user tries to open a /news/
page or a /chapter/
page on an index that does not exist, for example if user tries to open /news/9/
or /chapter/5/
, but no data is there to be displayed at that index, the page shows a DoesNotExist error like this.
Whenever user opens the page on a non-existent index, the user should be simply redirected to the /news/
or /chapter/
page respectively.
None.
None.
The blogs model has a field 'upvotes' but currently it is not being used anywhere. Now that detailed blog pages are ready at '/blogs/' and general page at '/blogs' is almost done, we need to add an upvotes button for blogs.
Since currently we only have a detailed blog page for every blog at /blogs/<id>
, so let's start the solution from there and when the basic setup is done, we can easily do it for blogs on /blogs
page as well. The solution might include :
/blogs
is ready, will be adding the feature there as well.Feel free to suggest!
Feel free to ask for help incase of any doubt.
Document additional steps to install Python3.9 and use it while creating a virtual env,
As of know, the incompatibility with the latest Python versions is creating various module version related issues when setting up the project. We need to document additional steps to install Python3.9 and use it while creating a virtual env,
None
Checkout Pyenv
Add a "Send dummy email" button in the "Mailing service" tab of the Admin Dashboard. By clicking on this button, an email should only be sent to the settings.BCC_EMAILS
using the selected email template.
On the above-mentioned endpoint, currently we only match the city (we get the 'search' query as city, state, country
). This leads to discrepancies in the profiles shown on the result page because two cities at different places can have the same name.
So, along with 'city', we should filter on the basis of the 'state' as well.
localhost:8000/geolocation
page, zoom in to the city you just created the profile with at any one of the states, and click on it to go to the /members/mapseach
page.The website currently is missing a blog creation page.
Make a blog_form.html
file with all the fields required to create a blog at route /blogs/newBlog
. The blog form will be asking for the following fields :
Please keep in mind, that we follow a specific design pattern throughout the platform.
Feel free to suggest!
For design reference, check out /jobs/post
.
Create a custom 404 error page.
As of now the website uses the default error page by django. Create a template for 404 error page as such and implement it so that a user is redirected to it whenever a 404 error occurs.
Feel free to revamp the design if you have better ideas.
We need to upgrade this project to atleast Django 3 LTS version as soon as possible, since Django 2 LTS has even crossed the End of extended support on April 11, 2022, which means they won't even fix any security vulnerability now in Django 2 LTS.
Please note that we cannot just upgrade to Django 3 LTS by just making a change in requirements.txt
file. We need to properly go through the release notes of Django, starting with v3.0, and keep on making appropriate changes in the codebase (to make sure the update does not break anything) as we slowly update the django version.
The blog page is to be created. The current \blogs\
page is just an empty page with just a "Let's get started!" text in it.
Make a \blogs\
page following the standard convention, i.e a header with the title Blogs, a footer, a search box with search fields - author's username, title, tags(should be able to select multiple) and type of blog, and all the available blogs in the form of boxes only showing author name, title, tags, date added, whether the blog is self or which campaign it belongs to and a view button to open a full detailed page of that blog at \blogs\<id-of-that-blog>
. No need to make the detailed blog page for now. Additionally make sure the page is responsive.
Feel free to suggest!
For better idea of blogs data, check out the blogs model in feature\blog
branch or PR #161
For reference to search box, check out \jobs\
.
For reference to boxes of blogs, check out \news\
.
Whenever user tries to open an /awards/
page on an index that does not exist, for example if user tries to open /awards/2/
here, but no award is there to be displayed at index 2, the page shows a DoesNotExist error like this.
Whenever user opens the awards page on a non-existent index, the user should be simply redirected to the /awards/
page.
None
None
Earlier, we used to send personalised emails to everyone (a separate email to everyone with their email address in 'To:'), but that was changed in 8cf7c6d where we started sending a common email to everyone with their email addresses in 'Bcc:'. This was done for two reasons:
But we still need a way to send personalised emails to our Alumni (a personalised email is where the email can contain some personal information of the recipient like their name).
And a second step that we need to take after this is to send the emails asynchronously instead of keeping the browser in "loading" state while the emails are being sent. This can be done by making use of message queues and corn jobs.
We should set up a cron job that would run every day and send out a personalised email to every alumni who has their birthday on that particular day.
Currently, we have a restriction on registration/profileedit forms due to which the "Mobile No." and similar fields only take 'number' input. This is problematic for our alumni who are living overseas because they can't prefix their contact number with the country code.
We also can't just change the type
of contact number fields from number
to text
because this restriction is applicable at database-level as well.
So, we should add a new 'Country code' field beside the contact number fields, which can either take text input or show a list of all the countries with their respective country codes which user can select from.
The /awards/
page is currently an empty page with just a "Lets get started!" text in it.
Make a /awards/
page following the standard convention, i.e a header with title awards, a footer and a dialog box floating in between header and footer, with a "(N) awards to display!", N being the number of awards. Additionally make sure the page is responsive.
None
None
When members are filtered based on citites, currently all the profiles of the matching city shows up. However, the state where the member resides is not included in the profile card. This causes discrepencies especially when there exists two cities having the same name but are in different states.
When clicked on each card
In UP | In HP |
---|---|
Display the state field in the profile card next to city.
None
Populate the DB by adding temporary data to data_acc.xlsx
under /scripts
and then running python manage.py populate
. Add two cities having the same name which are in different state to reproduce this.
Currently, when you access your profile page on the portal, there is an option to add a new Education degree, but once the Education is added, no option is given to edit the same.
We should add this capability to the portal.
The blog feature is to be implemented on the website. The entire idea is as follows:-
Every now and then, there will be campaigns running on the website revolving around some theme. Now the alumni will have a feature to write blogs on the website. The alumni will have a choice to dedicate the blog to the campaign running at that time on the website or not. After the blog is published, people can read them and also leave comments.
Now, you are required to implement the models, views, and URLs for the feature. For your ease, the models for the blogs are already implemented in the feature/blog
branch in the upstream repository. Feel free to reuse those. Accordingly, views are to be defined for CRUD operation of blogs, filtering of blogs, CRUD operation of campaigns, and CRUD operation of replies.
Feel free to suggest!
Reuse models in feature/blog
branch that will give you to better understanding of the data structure of blogs. Also, for reference, could see events
and job_postings
!
At The /events/
page, whenever an event is listed that doesn't contain the optional fields, "Location" or "Organiser", then it displays the event with a lot of empty space like in the image shown below:
Display the text "N/A" in place of these fields whenever these fields are empty.
Feel free to suggest!
To create an event, you can either create one from your django-admin at /admin/events_news/event/
or you can create one at /adminportal/events
. Then you can view it at /events/
.
The responsiveness of the input/select fields on the /members/
page (https://alumni.iiitdmj.ac.in/members/') breaks on small screens.
This is how the page looks on mobile screens:
Each input/select field above should instead be in a separate row and wide enough for users to be able to interact with them.
The current Award Page has many anomalies like:-
The screenshot shows the anomalies. No image option here to add it, also shows the entire file instead of trimming it out.
To reproduce this effect, visit the admin page and try to submit a new award, you will notice the anomalies in the model. Also, create an award with a long description as shown in the screenshot. Come back to the awards page to visualise it.
To visit the awards page clear the receding end of the URL and type /awards along with the localhost: link or you can directly visit from the dashboard->young-achiever-award.
Thank You.
The blogs that are uploaded in the website could be at risk of being polluted with content not fit for public. So for that reason, we want the blogs to be approved by the admin before being displayed for public at /blogs
page.
The solution is to introduce a feature to approve blogs by the admin before being available for general audience. The solution may include:
/adminportal
, make a table "Blogs to be approved" under dashboard for admin consisting to blogs awaiting approval.Feel free to suggest!
None.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.