from django import forms
from .models import SEOData
from admin_base.functions import database
import sqlite3

fields_list = ['meta_title', 'meta_description', 'meta_author', 'meta_robots', 'meta_keywords']

db_path = "seo/storage/seo.sqlite3"

class SEOForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(SEOForm, self).__init__(*args, **kwargs)

        # Iterate over the fields and dynamically create them
        for field in fields_list:
            try:
                # Read the value from the database
                value = database.read(db_path, "MetaTags", field)[0][0]
                # Dynamically assign the field with the value from the database
                self.fields[field] = forms.CharField(widget=forms.TextInput(attrs={'value': value}))
            except IndexError:
                # If the field is not found in the database, set a default value
                self.fields[field] = forms.CharField(widget=forms.TextInput(attrs={'value': ''}))

    class Meta:
        model = SEOData
        fields = '__all__'
