To solve this problem, we need to define the decision variables and the objective function. Let's denote the number of chocolate cookies as `x` and the number of strawberry cookies as `y`. The objective is to maximize profit, which can be calculated as `1.5x + 1.2y`.

The constraints are:
- Total number of cookies: `x + y <= 200`
- Minimum number of chocolate cookies: `x >= 50`
- Minimum number of strawberry cookies: `y >= 70`
- Maximum number of chocolate cookies due to raw material shortages: `x <= 120`
- Maximum number of strawberry cookies due to raw material shortages: `y <= 150`

Non-negativity constraints are implicitly satisfied by the minimum requirements.

Now, let's translate this problem into Gurobi code in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Cookie_Profit")

# Define decision variables
x = m.addVar(name='chocolate_cookies', lb=50, ub=120)  # Number of chocolate cookies
y = m.addVar(name='strawberry_cookies', lb=70, ub=150)  # Number of strawberry cookies

# Set the objective function to maximize profit
m.setObjective(1.5*x + 1.2*y, GRB.MAXIMIZE)

# Add constraint for total number of cookies
m.addConstr(x + y <= 200, name='total_cookies')

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: {x.varName} = {x.x}, {y.varName} = {y.x}")
    print(f"Maximum profit: {m.objVal}")
else:
    print("No optimal solution found")
```