Commit b87af869 authored by arun.uday's avatar arun.uday

commit1

parents
# Default ignored files
/shelf/
/workspace.xml
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="scripts.config.application_config" />
</list>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (patternsObserver)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/patternsObserver.iml" filepath="$PROJECT_DIR$/.idea/patternsObserver.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
import uvicorn
from scripts.config.applications_config import uvicorn_port
from scripts.logging.loggers import logger
# starting the application
if __name__ == "__main__":
try:
print("Observer task")
uvicorn.run("main:app", port=int(uvicorn_port))
except Exception as e:
logger.error("Interruption occurred: ", e)
[uvicorn]
uvicorn_port = 8000
[api_routes]
route_index = /
[log]
formatter_time = asctime
formatter_level = levelname
log_name = Observer
[path]
base_path = scripts/
sub_path = temp/
\ No newline at end of file
import uvicorn
from fastapi import FastAPI
from scripts.config.applications_config import uvicorn_port
from scripts.logging.loggers import logger
from scripts.services import api_service_observe
app = FastAPI()
app.include_router(api_service_observe.marvel_movies)
# starting the application
if __name__ == "__main__":
try:
print("Observer task")
uvicorn.run(app, port=int(uvicorn_port))
except Exception as e:
logger.error("Interruption occurred: ", e)
# reading from the applications.conf
import configparser
config = configparser.RawConfigParser()
config.read("conf/applications.conf")
# path
base_path = config.get("path", 'base_path')
sub_path = config.get("path", "sub_path")
full_path = base_path + sub_path
# log
formatter_time = config.get("log", "formatter_time")
formatter_level = config.get("log", "formatter_level")
# uvicorn
uvicorn_port = config.get("uvicorn", "uvicorn_port")
# log name
log_name = config.get("log", "log_name")
# reading conf file
import configparser
from scripts.logging.loggers import logger
try:
config = configparser.RawConfigParser()
config.read("conf/applications.conf")
# api paths
route_index = config.get("api_routes", "route_index")
except Exception as e:
logger.error("Interruption occurred: ", e)
response_data = []
def response_data_(fan_name, movie):
responses = {"message": "New Marvel Movie Released",
"Status": "Movie Found",
"Data": "------ Marvel Movie ------",
"Fan": fan_name,
"Movie Name": movie.movie_name,
"Director": movie.movie_director,
"Actors": movie.movie_stars,
"Date": movie.movie_release}
return responses
from scripts.core.handlers import marvel_fans
from scripts.core.handlers.new_marve_movie import NewMarvelMovie
from scripts.logging.loggers import logger
def add_new_marvel(movie):
try:
obj_movie = NewMarvelMovie()
fan_boy1 = marvel_fans.Fan1()
fan_boy2 = marvel_fans.Fan2()
obj_movie.attach(fan_boy1)
obj_movie.attach(fan_boy2)
obj_movie.movie_create(movie)
except Exception as e:
logger.error("Exception occurred: ", e)
from scripts.constants.api_response import response_data, response_data_
from scripts.logging.loggers import logger
class Fan1:
@staticmethod
def update(movie):
try:
response_data.append(response_data_("Fan 1", movie))
except Exception as e:
logger.error("Exception occurred: ", e)
class Fan2:
@staticmethod
def update(movie):
try:
response_data.append(response_data_("Fan 2", movie))
except Exception as e:
logger.error("Exception occurred: ", e)
class MovieObserveStatus:
def __init__(self):
self.fans = []
def notify(self, new_fan=None):
for fan in self.fans:
if new_fan != fan:
fan.update(self)
def attach(self, fan):
if fan not in self.fans:
self.fans.append(fan)
def detach(self, fan):
self.fans.remove(fan)
from datetime import date
from scripts.core.handlers.movie_observe import MovieObserveStatus
from scripts.logging.loggers import logger
class NewMarvelMovie(MovieObserveStatus):
def __init__(self):
try:
MovieObserveStatus.__init__(self)
self.movie_name = str
self.movie_director = str
self.movie_stars = str
self.movie_release = date
except Exception as e:
logger.error("Exception occurred: ", e)
def movie_create(self, movie):
try:
self.movie_name = movie.movie_name
self.movie_director = movie.movie_director
self.movie_stars = movie.movie_stars
self.movie_release = movie.movie_release
self.notify()
except Exception as e:
logger.error("Exception occurred: ", e)
import logging
import os
from logging.handlers import RotatingFileHandler
from scripts.config import applications_config
def get_logger():
"""
Creates a rotating log
"""
__logger__ = logging.getLogger('')
# setting the logger level
__logger__.setLevel(logging.INFO)
# creating the format for the log
log_formatter = f'%({applications_config.formatter_time})s - %({applications_config.formatter_level})-6s - %(message)s'
time_format = "%Y-%m-%d %H:%M:%S"
# getting the path for the logger
file_path = applications_config.full_path
# setting the format
formatter = logging.Formatter(log_formatter, time_format)
# creating the folder if not exist
if not os.path.exists(file_path):
os.makedirs(file_path)
# joining the path
log_file = os.path.join(f"{file_path}{applications_config.log_name}.log")
# creating rotating file handler with max byte as 1
temp_handler = RotatingFileHandler(log_file, maxBytes=1)
# setting the formatter
temp_handler.setFormatter(formatter)
# setting the handler
__logger__.addHandler(temp_handler)
return __logger__
logger = get_logger()
from datetime import date
from pydantic import BaseModel
class Marvel(BaseModel):
movie_name: str
movie_director: str
movie_stars: list[str]
movie_release: date
from fastapi import APIRouter
from scripts.constants import api_path_config
from scripts.constants.api_response import response_data
from scripts.core.handlers.generate_new_movie import add_new_marvel
from scripts.logging.loggers import logger
from scripts.models.marvel_movie_details import Marvel
marvel_movies = APIRouter()
@marvel_movies.post(api_path_config.route_index)
def get_movie_details(movie: Marvel):
try:
add_new_marvel(movie)
except Exception as e:
logger.error("Interruption occurred: ", e)
else:
return response_data
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment