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-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 %} + +