From 766f850d9871e5b7e29616aa8478b4aac7ffdf17 Mon Sep 17 00:00:00 2001
From: kerem <kerem.yollu@gmail.com>
Date: Thu, 15 Aug 2024 10:55:05 +0200
Subject: [PATCH] added populate methodes to froms.py that reduces the amount
 of different forms by 50%. you can use populate_for_add, populate_for_update
 and so on as eneccesery. and ythis alos you to not populate anything on
 routes.py

---
 web/instance/test.db                          | Bin 19292160 -> 19292160 bytes
 .../company/__pycache__/forms.cpython-311.pyc | Bin 10066 -> 11131 bytes
 .../__pycache__/routes.cpython-311.pyc        | Bin 8005 -> 4847 bytes
 web/minibase/blueprints/company/forms.py      |  48 +++++-------
 web/minibase/blueprints/company/routes.py     |  73 ++++++------------
 .../company/templates/company/account.html    |  10 +--
 .../main/__pycache__/utils.cpython-311.pyc    | Bin 3667 -> 5092 bytes
 web/minibase/blueprints/main/utils.py         |  50 ++++++++----
 .../sensor/__pycache__/forms.cpython-311.pyc  | Bin 11553 -> 10564 bytes
 .../sensor/__pycache__/routes.cpython-311.pyc | Bin 12257 -> 12257 bytes
 web/minibase/blueprints/sensor/forms.py       |  16 +---
 web/minibase/blueprints/sensor/routes.py      |   2 +-
 web/minibase/static/pics/a3686f86aa0546c5.png | Bin 0 -> 4045 bytes
 web/minibase/templates/account.html           |  31 ++++++++
 14 files changed, 118 insertions(+), 112 deletions(-)
 create mode 100644 web/minibase/static/pics/a3686f86aa0546c5.png
 create mode 100644 web/minibase/templates/account.html

diff --git a/web/instance/test.db b/web/instance/test.db
index 5086d0b211f00004c4fe7e3ad2d20ac45f2d9d6c..88f1be944d53672d3e55d09e98d04628bcefea68 100644
GIT binary patch
delta 1765
zcmZA12~-qi0Kjo(c6J38S!IC*0XaPAVwjy{FQP)TL$fkF&5D)fO2rK}0Xtx$veFVO
z+U!2;zAdxE0z2%!?@KAI=(PKe{C`V6t?zxm|C@R9-hAJD@9lOEtV-)fZ-Jz(ESxH7
z@!GYu((26)kK7~M)+EvgrO6Ikp4{V#_Juo|`=T9l{x1>jwUyPxvvS=j`IVC-DL+_K
zBPE9{w<bqZEEa7GRaPc%)Vf6ro9Y)V4!5?&TI=g$&J3?^=(?WRFeDXsStVK^<n@Jg
zL)E>yWf{7rn-yB1!kc_z`a@o?8VG0sBWRZu#h&S!;+h`!<gj*ifh3n&JJ$}kMVLF*
z9=W4peYG_fjx@}wnLTYuZf;nN2%|l0bom0lhJY^|)-2OkXQ|Pa#$7ky59xuB=~I1X
z&@}zKK4H^($gosPGlQ09w<$Jzwz9EQikD07l%gs_lFK=kG)ZF0@{G=ww&upB*pAK3
z|My-^3~rI;<@2fjkfwzUzv>J6_*zA_Day>w;dOJjN^WPB5_fvsDQ<VAESHMI=AGiL
z;r0kK($E-bNTzY*B4v}ZUN=k*nIr~=q!M%FEZMWA>blp<@&EUfcRn#v?Xn}sxxBi6
z>F_oQGHg&_hXbRKiZrCdi42TJCR`YUvB-iO*~mdIJjg>n#-RX(D8hIYqXeZW!vsvk
zBuqv*cEj%21AAgGR6s=~G<c!IfC&pe_z^%5Ayi>+RAV3Pi~Uf8DVU1=F%1XcKpcdF
zF&#5-2xj6?9EQU&3rAo!j>J(o8pq&R9EUkL9&>R5PQ*#5MHur?hY0G?fJQW-87E^t
z7GNP-un19{f>yL4hEuT^?dU)!mf$p;jx%s3y3ma{&O#5)#yL0_OK~2~#|2o1<+u<R
zVFh}z5*OnVT#7zih6FChDqMjpaTTt{HMkbn;d<PF8?hQU;bz=|TX7q1#~rv6cj0c_
zgL`ow*5H0TfVFrK>+ldB#v^zX>+u*KM?VIz0Z-sbJcXyR5zpXRJcsA;0$#*Rcp0zY
zRlJ7R@dn<+TX-Aq;9b0j_wfNf#7EeK%^1YT_yk+96`$fWe2yV}fiLkDzQ#BB7TfS0
zzQ+&v5kKK){DNQc8-B+h_!EEOZw%v~W&HM6KtvX?i6|m=5r@bqkyMd1k#rHKNQTI0
zkxUVn$QY5aB3UACk!+D1kz5gvNS;W($T*P#kwTFok?|tMA|)cFB4r{IL?%l8{6|P~
FbUWmO;`jgn

delta 1365
zcmajfRa?^m6o7I5+Z+rO&`psVh>BPsFs1`V5xd3iVYjne!NNvRoZa2nEq1qHi`{|U
z@t#lM#qWKdb9JuHNywP1OTY|o#hBs~s~8ilJFLozY^_0^?x0S$JKt9V)8ftXX*P4*
z|JZG|648dlAVu%s8x^joidkY}bc&)=RQ3~(l#yO0|4?(J$s8GK362OeS;~cJRBDGT
z?T{LoyIMb1^e)OQ*<`mZQHP{jHA$Kr1uCc^b1rD%2q);^3>V}^9=O5{?#PRL(8GZI
zC;$%>geSb<4IlWz2tW9v5CTvbMNkxhD25;uM+uZfDU?PqLQn>w2tznbh=3VoQ4SVF
zA`0bE0nw<4N{B&a#G(qSq8h5B25O=fYNHP7q8{p_0U9C>jnEiP&=k$k94*iit<V~6
z&=&1rMLgQ013ID;I-?7^q8qxS2YR9xdZQ0)=!<^nj{z8nK^Tl77>Z#Sju9A%Q5cN`
zBw`H4VjRX}0+KKhlQ0=mFcs4<9m$x16r^G%W+4r;VaFWI#XQW%0xZNLEXEQn#WF0%
z3arE`ti~Fw#X79V25iJ8Y{nL(V=J~{J9c0vc40U6U@!JzKMvp^4j}`FaRf(k499T-
zCvgg=aRz5`4(D+J7jX%faRpa#4VlQob=<&B+`?_#!Cl-#HtypA9^w%m;|ZSP8J^<>
zUg8yA;|<>89dhs<AMg>M@EKq572oh3KkyU3@Ed>dcM7+k42epjmS`loBwC51#7Ux)
zI7?h4xg~idt`awiyCkn9pF}S)Nb*YxNIWD3C7u#5iMPZ@;wv#q{3QO8LXrSUVM!6?
K5I;is)#o3FnP$`g

diff --git a/web/minibase/blueprints/company/__pycache__/forms.cpython-311.pyc b/web/minibase/blueprints/company/__pycache__/forms.cpython-311.pyc
index 34012a2a72ead69b230843bf4243c5112cda2bc7..cd7de6aa02b24737b2513334fe0291b4fdeb9c65 100644
GIT binary patch
literal 11131
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
K`4`%m?fn}|e#GMd

delta 3315
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
TUXNGCRynjhSMljORM+$`BjPs7

diff --git a/web/minibase/blueprints/company/__pycache__/routes.cpython-311.pyc b/web/minibase/blueprints/company/__pycache__/routes.cpython-311.pyc
index 6100431203b662730736560fc0d2056ba124c0ac..62dff425305740bffd580773534aa0fe4d995dda 100644
GIT binary patch
delta 2075
zcmZt`OKcNY@I8CIyY{YQ$0TvU&SGL4a1w9`MYN<rMI?Nrf>e=+0td%<H;EH}qPJ@b
z$f;AcQiH?+cpy0Xl%^$zB81vQD^XQQ^n&bYr9@j<qK8Pm)lomHDpl=!{v~cY+BZ9I
zX5RcXGcS(+5^VX*Znpsf?caSnamRMIr4zooyYKsM2uwg>Wlr(Q{IYe?48UV@s&Lt>
zc=LPkMoSwGz+Ovt<2D5cE&j&s8#o99_)qvT0}Ube^nvLsXx~LFgiNTN{E!D<VlG(x
zgmmI3%t!53LQx;T_7nUNWWgPXrtm+eKCD{a&uIb?)nJ;fQ&~98ZK3%(-NdDaD?qd>
zxzfv~Mw8`+7osaxUjeWP0Y1hG9m{ahLJC1n73R!YQ{GMr;UD@mYuePGZmDaaV3T!6
zo!_jD!>oId$ue0OY4~h<=WM)#S<|A4#6V6JAkh5yVoNteh<*4OyW1YBivZAi@lR|x
z*SE=;cGqc{ov9c>?M<#a>+-BA3%9vCT$chMbJ`o5w=5~eGQY@>(8#I61riaZYHG4o
zwrw-m6m0Ds`N;zQ!71$xiRVKW<RuJ4kQFtC;<H*joiZ%yR2pdpt7=g#qvB!y%HCF@
zbW@DRV(CmuJ2<5!6CpFA?Pdry=GoLl8o%a;pa)A<DYs)bJ)22HH6=2UMv=^{Oi06;
zjK))AT0Eg5S~P=6MU#plCX~r&BBG?UxOT(fK2WZzaZN$Al!iT?j7}=2;tA#5cxndG
zd<@sMXd+JSMbfE=nz@>cYX(E^QA1Rt*ObU?Jf^i~kYd;-;)z5gnU<9V^5J{do}7Ja
zR7phVp^^nDLocOiXQ2bsi5S_EmmyM{#AJk6R8-obJ_@Lts&X|=bb{Py)M^?6Fb~Qs
z;9EC9m*r5&<+&eTb@k;|TzyNIims!&>*xYka_qV_cYAJuS>wf3-nYX0^6nxZ()mz<
z53Rd>y1Q?!qw9WR&Fj~_{kr!Ey`|UO(*3ON-e2+rbkD$-NA<%aMb9bSbE+(`ovsZ)
z&~Fqih-D`bovT9kiqKsY0=f_=GeEE&#`kPJZR=vYE)suBfub1J#c)9km+;TFGY3ml
z;Li^)?JJ4{x;Rh}2i6_ZqYs~ry%Y;qA_d2I(J`(&#tZ!TI&a5$A=ncjDc@wmQCW@=
zssVJ1R2I$zsm4Q~5saU-bg*+kBkU>(voLR>tF9wU*8q4-P8A>^A~PL+%a}%141Uki
zmiwQPvDY7L-8tKhX|#cBAVYckl<%lZ$yn3<Sp(U;B`mBv+XfmFPR59lEm~uu0f~5-
z{qKy1xbt|A+b5ooWkp6k#4HNqb8hJ!I(C)btMpsQj_7VgG##UPc1T_0sY&!E71ITQ
z1}XC4=big=wT0hkTb1sddS9B!OEf|l^nscuXde8|0!QbqncFk-r%OV|t)bgP^TTTl
zzsh)581JKtMJA{-!2%O}%?YcVw8BY6&Zl#}GGIs-^Q}5hl=5<s@74L<0?+i8cn5}_
zV>_3UFOIy_3c_en7}bT*0yBzeTZDo*;yDL*Vd&k7pL==y%5xq1@M&)kOH(oY_(zX~
zA9$TMgP&B=mDPa1@CIBoBSVa(le5v(jXGQ6$Sz5$$c|xGd)QA@DkE3P@pDjdSeeMb
z__xW>XA;VBbeSm8o>KpKdZw!r9(bz&nm#h4Lfb;<&e=!TzxEVtBSqVYZX22B2;XGI
zccpW?C3vU|2-+|Mlk*da{)V9rPnH=f8ODE0UHt+agJnSR7Oj3AhRe*RsH#wj@?Tx`
B(G>sy

literal 8005
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

diff --git a/web/minibase/blueprints/company/forms.py b/web/minibase/blueprints/company/forms.py
index 5b5623c9..6e2d6f62 100644
--- a/web/minibase/blueprints/company/forms.py
+++ b/web/minibase/blueprints/company/forms.py
@@ -12,7 +12,7 @@ from minibase.blueprints.sensor.models import nbiotDevice
 from minibase.blueprints.user.models import Users
 
 
-class updateCompanyForm(FlaskForm):  # Defines the form class to be used for the user update
+class companyForm(FlaskForm):  # Defines the form class to be used for the user update
     name            = StringField('Name', validators=[DataRequired(), Length(min=3, max=100)])
     website         = URLField('Website', validators=[DataRequired(), Length(min=3, max=100)])
     country_id      = SelectField('Country', validators=[DataRequired()], render_kw={"hx-get": "/geography/get_cities", "hx-target": "#city_id"})
@@ -30,9 +30,10 @@ class updateCompanyForm(FlaskForm):  # Defines the form class to be used for the
 
     image_file      = FileField('Update company Picture', validators=[FileAllowed(['jpg', 'png'])])
 
-    submit = SubmitField('Update')
+    submit = SubmitField()
 
-    def populate_choices(self, company):
+    def populate_for_update(self, company):
+        self.submit.label.text = "Update"
         self.country_id.choices = [(row.id, row.name) for row in geoUtils.queryCountryNamesWithDefault(company.country_id)]
 
         # This is for the htmx implementation. please be careful how of there is data we first take from the database an then from the from(containing th htmx call) 
@@ -48,36 +49,29 @@ class updateCompanyForm(FlaskForm):  # Defines the form class to be used for the
         self.type_id.choices = [(row.id, row.name) for row in companyUtils.queryTypeNamesWithDefault(company.type_id)]
         self.relation_id.choices = [(row.id, row.name) for row in companyUtils.queryRelationNamesWithDefault(company.relation_id)]
         self.status_id.choices = [(row.id, row.name) for row in companyUtils.queryStatusNamesWithDefault(company.status_id)]
+    
+    def populate_for_adding(self, company):
+        self.submit.label.text = "Add"
+        del self.image_file
 
-    # Queries to be made in order to validate the form : If username exists
-    def validate_companyName(self, company_name):
-        company = companyUtils.queryByNameFirst(company_name)
-        if company:
-            raise ValidationError('That username is taken please choose another one')
-
+        self.country_id.choices = [(row.id, row.name) for row in geoUtils.queryCountryNames()]
 
-class addCompanyForm(FlaskForm):  # Defines the form class to be used for the user update
-    name        = StringField('Name', validators=[DataRequired(), Length(min=3, max=100)])
-    website     = URLField('Website', validators=[DataRequired(), Length(min=3, max=100)])
-
-    country     = SelectField('Country', validators=[DataRequired()],choices=[], render_kw={"hx-get": "/geography/get_cities", "hx-target": "#city"})
-    city        = SelectField('City', validators=[DataRequired()], render_kw={"hx-get": "/geography/get_states", "hx-target": "#state"})
-    state       = SelectField('State', validators=[])
-    post_code   = IntegerField('Post', validators=[DataRequired()])
-    street      = StringField('Street', validators=[DataRequired()])
-    street_no   = IntegerField('No', validators=[DataRequired()])
-    industry    = SelectField('Industry', validators=[DataRequired()])
-    legal_entity= SelectField('Legal Entity', validators=[DataRequired()])
-    type        = SelectField('Type', validators=[DataRequired()])
-    relation    = SelectField('Relation', validators=[DataRequired()])
-    status      = SelectField('Status', validators=[DataRequired()])
-    comment     = StringField('Comment', validators=[DataRequired(), Length(min=3, max=400)])
+        # This is for the htmx implementation. please be careful how of there is data we switch the funtion needed  
+        if self.country_id.data:
+            self.city_id.choices = [(row.id, row.name) for row in geoUtils.queryCityNamesWithCountryId(self.country_id.data)]
+            self.state_id.choices = [(row.id, row.name) for row in geoUtils.queryStateNamesWithCountryId(self.country_id.data)]
+        else:
+            self.city_id.choices = []
+            self.state_id.choices = []
 
-    submit = SubmitField('Add')
+        self.industry_id.choices = [(row.id, row.name) for row in mainUtils.queryIndustryNames()]
+        self.legal_entity_id.choices = [(row.id, row.name) for row in companyUtils.queryLegalEntityNames()]
+        self.type_id.choices = [(row.id, row.name) for row in companyUtils.queryTypeNames()]
+        self.relation_id.choices = [(row.id, row.name) for row in companyUtils.queryRelationNames()]
+        self.status_id.choices = [(row.id, row.name) for row in companyUtils.queryStatusNames()]
 
     # Queries to be made in order to validate the form : If username exists
     def validate_companyName(self, company_name):
         company = companyUtils.queryByNameFirst(company_name)
         if company:
             raise ValidationError('That username is taken please choose another one')
-
diff --git a/web/minibase/blueprints/company/routes.py b/web/minibase/blueprints/company/routes.py
index 336cab1a..b0a7781e 100644
--- a/web/minibase/blueprints/company/routes.py
+++ b/web/minibase/blueprints/company/routes.py
@@ -7,11 +7,12 @@ import minibase.blueprints.database.utils as dbUtils
 import minibase.blueprints.main.utils as mainUtils
 import minibase.blueprints.geography.utils as geoUtils
 import minibase.blueprints.company.utils as companyUtils
-from minibase.blueprints.company.forms import updateCompanyForm, addCompanyForm
+from minibase.blueprints.company.forms import companyForm
 
 # Declaring a blueprint
 company = Blueprint('company', __name__, template_folder='templates')
 
+
 @company.route("/list", methods=['GET', 'POST'])
 def list():
     page=request.args.get('page', 1, type=int)
@@ -24,78 +25,48 @@ def list():
 def account(companyId):
     if companyId:
         company = Companies.query.get_or_404(companyId)
-        form = updateCompanyForm()
+        form = companyForm()
+        form.populate_for_update(company)
 
-        form.populate_choices(company)
+        _accountInfo = mainUtils.accountInfo(
+                title=company.name,
+                description=company.legal_entity.name,
+                short=company.website,
+                status=company.type.name,
+                image_file=mainUtils.imageFileLink(company.image_file)
+                )
 
         if form.validate_on_submit():
             if form.image_file.data:
                 picture_file = mainUtils.save_picture(form.image_file.data)
                 company.image_file = picture_file
 
-            for item in form:
-                mainUtils.modelFill(company, item, ["image_file"])
-
+            mainUtils.fill_model(company, form)
             dbUtils.dbCommit()
             flash('Company Has been successfully updated', 'success')
             return redirect(url_for('company.account', companyId=companyId))
 
         elif request.method == 'GET':
-            for item in form:
-                item.data = mainUtils.formFill(item, company)
-
-        image_file = url_for('static', filename='pics/' + companyUtils.queryImageById(companyId))
+            mainUtils.populate_form(form, company)
 
-        return render_template('company/account.html',
-                                theme=theme,
-                                image_file=image_file,
-                                form=form)
+        return render_template('account.html', theme=theme, accountInfo=_accountInfo, form=form)
     else:
         flash('You need to select a company id', 'alarm')
         return redirect(url_for('company.list'))
 
+
+
 @company.route("/add", methods=['GET', 'POST'])
 @login_required
 def add():
-    form = addCompanyForm()
-
-    form.country.choices = [(row.id, row.name) for row in geoUtils.queryCountryNames()]
-
-    # This is for the htmx implementation. please be careful how of there is data we switch the funtion needed  
-    if form.country.data:
-        form.city.choices = [(row.id, row.name) for row in geoUtils.queryCityNamesWithCountryId(form.country.data)]
-        form.state.choices = [(row.id, row.name) for row in geoUtils.queryStateNamesWithCountryId(form.country.data)]
-    else:
-        form.city.choices = []
-        form.state.choices = []
-
-    form.industry.choices = [(row.id, row.name) for row in mainUtils.queryIndustryNames()]
-    form.legal_entity.choices = [(row.id, row.name) for row in companyUtils.queryLegalEntityNames()]
-    form.type.choices = [(row.id, row.name) for row in companyUtils.queryTypeNames()]
-    form.relation.choices = [(row.id, row.name) for row in companyUtils.queryRelationNames()]
-    form.status.choices = [(row.id, row.name) for row in companyUtils.queryStatusNames()]
+    company = Companies()
+    form = companyForm()
+    form.populate_for_adding(company)
 
     if form.validate_on_submit():
-        company = Companies(
-        name = form.name.data,
-        website = form.website.data,
-        country_id = form.country.data,
-        city_id = form.city.data,
-        state_id = form.state.data,
-        post_code = form.post_code.data,
-        street = form.street.data,
-        street_no = form.street_no.data,
-        industry_id = form.industry.data,
-        legal_entity_id = form.legal_entity.data,
-        type_id = form.type.data,
-        relation_id = form.relation.data,
-        status_id = form.status.data,
-        comment = form.comment.data)
+        mainUtils.fill_model(company, form)
         dbUtils.dbAddAndCommit(company)
-        flash('Company Has been successfully added', 'success')
+        flash('Company Has been successfully Added', 'success')
         return redirect(url_for('company.list'))
 
-    return render_template('edit.html',
-                           title="Add Company",
-                            theme=theme,
-                            form=form)
+    return render_template('edit.html', title="Add Company", theme=theme, form=form)
diff --git a/web/minibase/blueprints/company/templates/company/account.html b/web/minibase/blueprints/company/templates/company/account.html
index 2426f161..47587270 100644
--- a/web/minibase/blueprints/company/templates/company/account.html
+++ b/web/minibase/blueprints/company/templates/company/account.html
@@ -5,12 +5,12 @@
     <div class="row">
         <div class="col-md-3 border-right">
             <div class="d-flex flex-column align-items-center text-center p-3 py-5">                
-                <img class="rounded-circle mt-4 border-info" width="150px" src="{{ image_file }}">
-                <h2 class="account-heading" style="color: {{ theme.orange }};">{{ form.name.data }}</h2>
-                <h3 class="account-heading" style="color: {{ theme.orange }};">{{ form.legal_entity_id.data }}</h2>
-			    <h5 class="account-heading" style="color: {{ theme.light_blue }};">{{ form.website.data }}</h5>
+                <img class="rounded-circle mt-4 border-info" width="150px" src="{{ accountInfo.image_file }}">
+                <h2 class="account-heading" style="color: {{ theme.orange }};">{{ accountInfo.title }}</h2>
+                <h3 class="account-heading" style="color: {{ theme.orange }};">{{ accountInfo.description }}</h2>
+			    <h5 class="account-heading" style="color: {{ theme.light_blue }};">{{ accountInfo.short }}</h5>
                 <div class="p-3 py-5">
-                    <h4 class="account-heading" style="color: {{ theme.yellow }};">{{ form.type_id.data }}</h4>
+                    <h4 class="account-heading" style="color: {{ theme.yellow }};">{{ accountInfo.status }}</h4>
                 </div>
             </div>
         </div>
diff --git a/web/minibase/blueprints/main/__pycache__/utils.cpython-311.pyc b/web/minibase/blueprints/main/__pycache__/utils.cpython-311.pyc
index e10b71eefad39076eedfbf55b126d38d9b0be5b9..2845c87fbfd1ce1048f69e9f44fb190a84e4395e 100644
GIT binary patch
delta 2550
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

delta 1234
zcmZWo%}*0S6rbsK-F|JmQ0cA-O3?`JK|>W|YK&+Um1yvQAB4ozrMs<5`axzFVq*;+
zIB@V#oJ7HJ=z;io^y(kc#vaHfBqSOSdawyMPrg~(N^vsto8NnH=Ixu`%zhjG(m(uG
z6axs_!>!MmI|4#qnbB^Z7TJBhI-Eb9MH#FM%Xp^OWj<h0-M@@x4(b8GK0OE+(?fu=
zj;D|+uKt*aaqVO<dtoqpcjE;gTe?(6bGRKXdloTC+I-tasEqf<-#{%N+x4KQoDH?M
zTba{6-EksyW%@5Zh00uL3hC(YP&s;?kKcB@1ubu=UdL;f<_#i3en-d}wr1PJ5gut4
zBP?v%M&99VZ8m2(e!G}5vxOo7%Hrnif^Asrq%`5Vx|AuB{53O|BQfv<VOToAGqfcH
zmrFGzSrb^_3PzqM*CuMg<IuO2fhu3MH%oOT(NGdA6WftkrBofNN7P0{Z6Zz_+?J25
zmEH~2<wQeH)TG3Y9Ir|7rigs!-E1t)E_?@FOz+j7sq5-r0rCnIo?~m=reo0myuD{N
zi&7~NJB``Gj`Z$D4Rp!h9mjKC`u#wBiHWOvCJB39Do?^NIs7~^3wBFctEH@0*KAGY
zNH44)Jq)4%7AqwlkCQ%_9e=*48#!0Vez2L(x(~2l$ZemvqCYq5K4q-oQ))h?TiH;w
zGQKvtk*w;QW<5002#wU*y(#<^Z^yj@B7a)<zr=Wejs#Bz9AC!F8SHV;*<eL+D+*cK
zqLG?6)Aj-}$Qh`mp9VtfSpKvbdW><39uD8aX=;Y2Po0CH!{x1P_n9QiDCj9-fDS1m
zubDYA1`AKnU*V@%ruoP^_a0BupmeC;eTkfArB&<*=|@E~ZCDojbwC|@NmBT0z(?r=
zX%sfTkf!lv`cpb9j)T`?7sphjCwq?ZH^E5KyFEum8JMb&qcD*;UGDjC<p!hdl@g|~
zdm^_W!jcoV^F1PLn|mX_eHY+L7IMZ#au0m07%NIwdaF;+@!=*C@Zf$ph=xuykryZS
dL)edFP1FI!kE6_Nf#PAT1Az|v=VQ#R><<+g8Rh^0

diff --git a/web/minibase/blueprints/main/utils.py b/web/minibase/blueprints/main/utils.py
index 9557d5f1..d63ada75 100644
--- a/web/minibase/blueprints/main/utils.py
+++ b/web/minibase/blueprints/main/utils.py
@@ -8,23 +8,47 @@ from minibase.blueprints.main.models import Industries
 import minibase.blueprints.database.utils as dbUtils
 
 
-def formFill(item, table, to_ignore=[]):
+class accountInfo:
+    def __init__(self, title, description, short, status, image_file):
+        self.title = title
+        self.description = description
+        self.short = short
+        self.status = status
+        self.image_file = image_file
+
+
+# FORM AND MODEL MANAGEMENT
+def fill_model(company, form):
+    for item in form:
+        modelFill(company, item)
+
+
+def populate_form(form, company):
+    for item in form:
+        item.data = formFill(item, company)
+
+
+def formFill(item, table):
     if item.type not in ["SubmitField", "CSRFTokenField"]:
-        if item.name not in to_ignore:
-            attribute = getattr(table, item.name)
-            if hasattr(attribute, 'name'):
-                return getattr(attribute, 'name')
-            else:
-                return attribute
+        return getattr(table, item.name)
 
 
-def modelFill(table, item, to_ignore=[]):
+def modelFill(table, item):
     if item.type not in ["SubmitField", "CSRFTokenField"]:
-        print(item.type)
-        if item.name not in to_ignore:
+        if item.type == "FileField":
+            if item.data == "None":
+                print(f"File filed found with no data -> item name {item.name}")
+                print(f"It will be filled with the existin tbale data -> item name {getattr(table, item.name)}")
+                setattr(table, item.name, getattr(table, item.name))
+        else:
             setattr(table, item.name, item.data)
 
 
+# PICTURE MANAGEMENT
+
+def imageFileLink(imageFileName):
+    return url_for('static', filename='pics/' + imageFileName)
+
 def save_picture(form_picture):
     random_hex = secrets.token_hex(8)
     _, f_ext = os.path.splitext(form_picture.filename)
@@ -37,6 +61,7 @@ def save_picture(form_picture):
     return picture_fn
 
 
+# MAIL MECHANISMS
 def send_reset_email(user):
     token = user.get_reset_token()
     msg = Message('Password Reset Request',
@@ -44,17 +69,16 @@ def send_reset_email(user):
                   recipients=[user.email_account])
     msg.body = f'''To reset your password, visit the following link:
 {url_for('user.reset_token', token=token, _external=True)}
-If you didn't make this request, then simply ingnore this email and no chancges will be made.
+If you didn't make this request, then simply ingnore this email and no changes will be made.
 '''
     mail.send(msg)
 
 
+# QUERIES
 def queryIndustryNames():
     choices = Industries.query.order_by(Industries.name.asc())
     return choices
 
-
 def queryIndustryNamesWithDefault(defId):
     choices = dbUtils.queryNameWithDefaultId(Industries,defId)
     return choices
-
diff --git a/web/minibase/blueprints/sensor/__pycache__/forms.cpython-311.pyc b/web/minibase/blueprints/sensor/__pycache__/forms.cpython-311.pyc
index 6dcc3c5e40da391815841e00be30f54b5e65f40d..af45123c2de734afb0253ba3e6b446b584269c1c 100644
GIT binary patch
delta 105
zcmZ1&btH&yIWI340}!+w*qi1cF_BM#aoa@ot!ydW!3>%_o23{X)R_G=r6#Y^I;C6-
uR955$B3yyQFAkgB{FKt1RJ)=UAeRw{i?ue-(N<y<V9;g^X8Zsq!Ri6Vwi$N-

delta 960
zcmX>Sv@nWqIWI340}y1F?n#>_HIYw(@!drAt#(Wd?hGm1Eet6<sf^2*85mXrF$6?O
zf#rCy%cbxIGidT}eB_`u*;zs?;RI06bcR%hD8>|qC?+O`ROS@M6s8pBOvW`V%b0-1
z0x{HB7O*TUkYrs36j}|FU;v7+rLd*2ui-$|k<PS+bMk!&(RwbNdbqLaK{X|c1E`x5
z)y62U6rNy)mAtq3N()jFOHzaKb5h;%i*j!<dAi)<NXaZtOv*`3xy7K#c#E?r)hsV1
zwJ1Kj{1yvH-Afjr!(WO3i6SWwAqymKal51zCl_TFlw{`Ty#$4c-%9Su1<E4zx0o_h
ziuge4_(AGeihw5E;!Z)RF5&=57J-Ob5a9+QTtP$wjK~EtKKBEO1~|OIDbgW5A!I?;
z2B8J<7dTBXa++S@G;MIY!7bKdJ)vxc%?g{9c5Cc*OqLRpcNLPIpgkjZhs+L{opO8R
zPKcclyATq3Av*4YXZ%Ia_$!|A7c3Gk2qj(=O1vVJ*x-GGSE3`jGqxwT!3_i<E^3(U
zAR#%VW4ovx6rNom0#`tnfFybPKqM#{{4}K}tE!)3Y?%C7U6yMaP=pbPi)%LvX(%x!
h$1t)mN`GL$Bql_D1c`n@NbzAR0&B!n3D*O50094r);RzG

diff --git a/web/minibase/blueprints/sensor/__pycache__/routes.cpython-311.pyc b/web/minibase/blueprints/sensor/__pycache__/routes.cpython-311.pyc
index b239cef3b7750acba12009e7ec318d2d33cbdc9b..9bb30bdea0c88441d7d7f9dc7fa79853514f16b2 100644
GIT binary patch
delta 80
zcmaDD|1h3=IWI340}!+w*t?N?5gViM=5=gEOpF$j6**-YStr|b7Bg~e-pnbi%E&hP
gxL%?-2cyCV1|ac~nSn{;3Zwc5CXk5OWPANZ0Ft~F>i_@%

delta 80
zcmaDD|1h3=IWI340}$L<y=No$A~r^m&Fk2Tm>4Z5D{{&*vP`z;EM{ceyqQy2m62oe
galJ%wc1DE{3_#)|GXs;x6-M<BOdt`F$@cn-0HcByCjbBd

diff --git a/web/minibase/blueprints/sensor/forms.py b/web/minibase/blueprints/sensor/forms.py
index 966b0c6f..c70ed270 100644
--- a/web/minibase/blueprints/sensor/forms.py
+++ b/web/minibase/blueprints/sensor/forms.py
@@ -99,23 +99,9 @@ class updateNbioDeviceAddForm(FlaskForm):  # Defines the form class to be used f
         content = nbiotDevice.query.filter_by(iccid=input.data).first()
         if content:
             raise ValidationError('That ICCID id is taken please choose another one')
-    
+
     def validate_ip(self, input):
         content = nbiotDevice.query.filter_by(ip=input.data).first()
         if content:
             raise ValidationError('That IP id is taken please choose another one')
 
-
-class updateRoleForm(FlaskForm):
-    id = StringField('ID', render_kw={'disabled':''})
-    role = StringField('Role', validators=[DataRequired(), Length(min=4, max=20)])
-    description = StringField('Description', validators=[DataRequired(), Length(min=4, max=200)])
-    submit = SubmitField()
-
-
-class updateRoleForm(FlaskForm):
-    id = StringField('ID', render_kw={'disabled':''})
-    role = StringField('Role', validators=[DataRequired(), Length(min=4, max=20)])
-    description = StringField('Description', validators=[DataRequired(), Length(min=4, max=200)])
-    submit = SubmitField()
-
diff --git a/web/minibase/blueprints/sensor/routes.py b/web/minibase/blueprints/sensor/routes.py
index 94d80aa5..b384e1c2 100644
--- a/web/minibase/blueprints/sensor/routes.py
+++ b/web/minibase/blueprints/sensor/routes.py
@@ -11,7 +11,6 @@ from minibase.app import db
 import json
 import os
 
-# TODO: 
 
 sensor = Blueprint('sensor', __name__, template_folder='templates')
 
@@ -59,6 +58,7 @@ def get_data():
     if os.path.exists(DATA_FILE):
         with open(DATA_FILE, 'r') as f:
             stored_data = json.load(f)
+# TODO: 
     else:
         stored_data = []
 
diff --git a/web/minibase/static/pics/a3686f86aa0546c5.png b/web/minibase/static/pics/a3686f86aa0546c5.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4f57038c58e0e8c55b3f16dc6dfb4aff4b10f90
GIT binary patch
literal 4045
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

literal 0
HcmV?d00001

diff --git a/web/minibase/templates/account.html b/web/minibase/templates/account.html
new file mode 100644
index 00000000..47587270
--- /dev/null
+++ b/web/minibase/templates/account.html
@@ -0,0 +1,31 @@
+{% extends "base.html" %}
+{% block content %}
+
+<div class="container-fluid rounded-5 mt-5 mb-5" style="{{ theme.form.div_style }};">
+    <div class="row">
+        <div class="col-md-3 border-right">
+            <div class="d-flex flex-column align-items-center text-center p-3 py-5">                
+                <img class="rounded-circle mt-4 border-info" width="150px" src="{{ accountInfo.image_file }}">
+                <h2 class="account-heading" style="color: {{ theme.orange }};">{{ accountInfo.title }}</h2>
+                <h3 class="account-heading" style="color: {{ theme.orange }};">{{ accountInfo.description }}</h2>
+			    <h5 class="account-heading" style="color: {{ theme.light_blue }};">{{ accountInfo.short }}</h5>
+                <div class="p-3 py-5">
+                    <h4 class="account-heading" style="color: {{ theme.yellow }};">{{ accountInfo.status }}</h4>
+                </div>
+            </div>
+        </div>
+
+        <div class="col-md-4">
+            <div class="p-3 py-4">
+                {% include 'form.html' %}
+            </div>
+        </div>
+        <div class="col-md-4">
+            <div class="p-3 py-4">
+            </div>
+        </div>
+    </div>
+</div>
+{% endblock content %}
+
+