Эх сурвалжийг харах

Custom group names work now

control 3 жил өмнө
parent
commit
9ca99e6ba2

+ 2 - 2
app/__init__.py

@@ -19,7 +19,7 @@ def create_app():
     app.register_blueprint(logic, url_prefix  = '/') # allows the setting of prefixes for pages
 
     # import Database models
-    from .models import User, Bookmark
+    from .models import User, Bookmark, Groups
 
     create_database(app)
 
@@ -39,4 +39,4 @@ def create_app():
 def create_database(app):
     if not path.exists('app/' + DB_NAME):
         db.create_all(app=app)
-        print('Created Database!')
+        print('Created Database!')

BIN
app/database.db


+ 10 - 2
app/logic.py

@@ -4,7 +4,7 @@ from unicodedata import category
 from flask import Blueprint, render_template, request, flash, redirect, url_for
 from flask_login import login_user, login_required, logout_user, current_user
 from werkzeug.security import generate_password_hash, check_password_hash
-from .models import User, Bookmark
+from .models import User, Bookmark, Groups
 from . import db
 import string, secrets
 
@@ -51,6 +51,10 @@ def home():
 @logic.route('/create', methods=['GET', 'POST'])
 @login_required
 def create():
+
+    bgroups = Groups.query.filter_by(owner=current_user.id).all()
+    print(bgroups[0].group)##
+
     if request.method == 'POST':
         wlink = request.form.get('web_link')
         wname = request.form.get('web_name')
@@ -60,11 +64,15 @@ def create():
         print(wlink, wname, wgroup, wstatus)
         if wlink and wname and wgroup and wstatus:
             new_link = Bookmark(owner=current_user.id, status=wstatus, name=wname, group=wgroup, link=wlink)
+            group_check = Groups.query.filter_by(group=wgroup).first()
+            if not group_check:
+                new_group = Groups(owner=current_user.id, group=wgroup)
+                db.session.add(new_group)
             db.session.add(new_link)
             db.session.commit()
             flash('New Bookmark added!', category='success')
 
-    return render_template('create_bookmark.html', user=current_user)
+    return render_template('create_bookmark.html', user=current_user, bgroups=bgroups)
 
 @logic.route('/shared', methods=['GET'])
 @login_required

+ 7 - 1
app/models.py

@@ -17,4 +17,10 @@ class Bookmark(db.Model, UserMixin):
    status = db.Column(db.String(8)) # public/private
    name = db.Column(db.String(150))
    group = db.Column(db.String(150))
-   link = db.Column(db.String(150))
+   link = db.Column(db.String(150))
+
+
+class Groups(db.Model, UserMixin):
+    id = db.Column(db.Integer, primary_key=True)
+    owner = db.Column(db.Integer) # owner id
+    group = db.Column(db.String(150), unique=True)

+ 5 - 8
app/templates/create_bookmark.html

@@ -4,7 +4,7 @@
 <script type="text/javascript">
   function CheckOtherToShowTextBox(val){
    var element=document.getElementById('web_group');
-   if(val=='others')
+   if(val=='custom')
      element.style.display='block';
    else  
      element.style.display='none';
@@ -45,13 +45,10 @@
                     <div class="form-outline mb-4">
                         <label class="form-label" for="web_group">Group Name</label><br>
                         <select name="web_group" onchange='CheckOtherToShowTextBox(this.value);'> 
-                          <option name"web_group" value="Calculator">Calculator</option>
-                          <option name"web_group" value="Cipher_Encoder">Cipher Encoder</option> 
-                          <option name"web_group" value="Education">Education</option>     
-                          <option name"web_group" value="Online_food_ordering">Online food ordering</option>
-                          <option name"web_group" value="Restaurant">Restaurant</option> 
-                          <option name"web_group" value="Social_Media">Social Media</option> 
-                          <option value="others">Others</option>   
+                          {% for bg in bgroups %}
+                          <option name="web_group" value={{ bg.group }}>{{ bg.group }}</option>
+                          {% endfor %}
+                          <option value="custom">Custom</option>   
                         </select>
                         <input type="text" name="web_group" id="web_group" style='display:none;position:relative; left:150px; top:-20px;'/>
                     </div>